Перейти к содержимому

Практика 0. Подготовка рабочего окружения: Linux на Windows


Цель работы

Установить и настроить Linux-окружение на Windows с помощью WSL 2 (Windows Subsystem for Linux), подготовить рабочую среду для всех последующих практик курса.


Часть 1. Что такое WSL

1.1. Зачем нужен Linux на Windows

Все практики курса ориентированы на Linux (Ubuntu). Если ваш основной компьютер работает на Windows, есть несколько способов получить Linux-окружение:

СпособПлюсыМинусы
WSL 2Быстрая установка, интеграция с Windows, минимальный overheadНе полноценная виртуальная машина
VirtualBox / VMwareПолная изоляция, полноценная ОСТяжелее, требует больше ресурсов
Dual BootМаксимальная производительностьНужно перезагружаться для смены ОС
Облачный сервер (VPS)Доступ отовсюду, реальный серверПлатный, требуется интернет

WSL 2 — рекомендуемый вариант для данного курса: быстрая установка, полноценное ядро Linux, прямой доступ к файлам Windows и обратно.

1.2. WSL 1 vs WSL 2

ХарактеристикаWSL 1WSL 2
Ядро LinuxТрансляция syscallsНастоящее ядро Linux (в легковесной VM)
Производительность ФСБыстрый доступ к файлам WindowsБыстрый доступ к файлам Linux
СовместимостьНе все программы работаютПолная совместимость
DockerНе поддерживается нативноПолная поддержка
СетьОбщий стек с WindowsСобственный сетевой стек

Мы будем использовать WSL 2.


Часть 2. Установка WSL 2

Задание 2.1. Проверка требований

  1. Windows 10 версии 2004 (сборка 19041) или новее, либо Windows 11.

  2. Проверьте версию Windows:

    • Нажмите Win + R, введите winver, нажмите Enter.
    • Или в PowerShell:
      Окно терминала
      [System.Environment]::OSVersion.Version
  3. Убедитесь, что виртуализация включена в BIOS:

    • Откройте Диспетчер задач → вкладка ПроизводительностьЦП.
    • Найдите строку «Виртуализация: Включено».
    • Если отключена — включите в BIOS/UEFI (параметр Intel VT-x или AMD-V).

Задание 2.2. Установка (простой способ)

  1. Откройте PowerShell от имени администратора (правый клик на меню Пуск → «Терминал (Администратор)» или «Windows PowerShell (Администратор)»).

  2. Выполните одну команду:

    Окно терминала
    wsl --install

    Эта команда автоматически:

    • Включит компоненты WSL и Virtual Machine Platform.
    • Установит WSL 2 как версию по умолчанию.
    • Установит Ubuntu (по умолчанию).
  3. Перезагрузите компьютер, когда будет предложено.

  4. После перезагрузки автоматически откроется терминал Ubuntu. Создайте пользователя:

    Enter new UNIX username: student
    New password: ********
    Retype new password: ********

    Запомните логин и пароль — они понадобятся для sudo.

Задание 2.3. Установка (ручной способ, если автоматический не работает)

  1. Включите необходимые компоненты Windows:

    Окно терминала
    dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
    dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
  2. Перезагрузите компьютер.

  3. Установите WSL 2 как версию по умолчанию:

    Окно терминала
    wsl --set-default-version 2
  4. Установите Ubuntu из Microsoft Store:

    • Откройте Microsoft Store.
    • Найдите «Ubuntu 22.04 LTS» (или «Ubuntu 24.04 LTS»).
    • Нажмите «Получить» → «Установить».
    • Запустите и создайте пользователя.

Задание 2.4. Проверка установки

  1. В PowerShell проверьте установленные дистрибутивы:

    Окно терминала
    wsl --list --verbose

    Убедитесь, что Ubuntu работает под VERSION 2.

  2. Если показывает VERSION 1, переключите:

    Окно терминала
    wsl --set-version Ubuntu 2
  3. Запустите Ubuntu:

    Окно терминала
    wsl

    Или найдите «Ubuntu» в меню Пуск.


Часть 3. Первоначальная настройка Ubuntu в WSL

Задание 3.1. Обновление системы

Откройте терминал Ubuntu (WSL) и выполните:

Окно терминала
sudo apt update && sudo apt upgrade -y

Задание 3.2. Установка базовых инструментов

Окно терминала
sudo apt install -y \
git \
curl \
wget \
tree \
htop \
net-tools \
iputils-ping \
dnsutils \
traceroute \
vim \
nano \
unzip \
jq \
build-essential \
python3 \
python3-pip \
python3-venv

Задание 3.3. Проверка установки

Окно терминала
# Информация о системе
cat /etc/os-release
uname -a
# Проверка инструментов
git --version
python3 --version
curl --version | head -1
tree --version

Задание 3.4. Настройка Git

Окно терминала
git config --global user.name "Ваше Имя"
git config --global user.email "your.email@example.com"
git config --global init.defaultBranch main
# Проверка
git config --list

Часть 4. Работа с файлами между Windows и WSL

Задание 4.1. Доступ к файлам Windows из Linux

Диски Windows монтируются в /mnt/:

Окно терминала
# Просмотр диска C:
ls /mnt/c/
# Перейти в папку «Рабочий стол» (Desktop)
ls /mnt/c/Users/ВашеИмя/Desktop/
# Перейти в папку «Загрузки» (Downloads)
ls /mnt/c/Users/ВашеИмя/Downloads/

Задание 4.2. Доступ к файлам Linux из Windows

Файлы WSL доступны из Проводника Windows:

  1. В адресной строке Проводника введите:

    \\wsl$\Ubuntu

    Или:

    \\wsl.localhost\Ubuntu
  2. Вы увидите корневую файловую систему Ubuntu. Домашний каталог:

    \\wsl$\Ubuntu\home\student
  3. Из терминала WSL откройте текущий каталог в Проводнике:

    Окно терминала
    explorer.exe .

Задание 4.3. Рекомендация по расположению файлов

Важно: для максимальной производительности храните рабочие файлы внутри файловой системы Linux (~/), а не на /mnt/c/. Доступ к файлам Windows из WSL значительно медленнее.

Окно терминала
# Создайте рабочий каталог для курса
mkdir -p ~/os-course
cd ~/os-course

Часть 5. Установка Windows Terminal (рекомендуется)

Задание 5.1. Установка

  1. Откройте Microsoft Store.
  2. Найдите Windows Terminal и установите (в Windows 11 уже предустановлен).

Задание 5.2. Настройка

  1. Запустите Windows Terminal.
  2. Откройте настройки (Ctrl + ,).
  3. Установите Ubuntu как профиль по умолчанию:
    • Настройки → Запуск → Профиль по умолчанию → Ubuntu.
  4. Настройте внешний вид (по желанию):
    • Шрифт: рекомендуется моноширинный шрифт с поддержкой лигатур (JetBrains Mono, Cascadia Code).
    • Цветовая схема: One Half Dark, Dracula или другая на ваш вкус.

Задание 5.3. Полезные горячие клавиши

КомбинацияДействие
Ctrl + Shift + TНовая вкладка
Ctrl + Shift + WЗакрыть вкладку
Alt + Shift + +Разделить панель горизонтально
Alt + Shift + -Разделить панель вертикально
Alt + ←/→Переключение между панелями
Ctrl + Shift + PПалитра команд

Часть 6. Установка Docker в WSL

Задание 6.1. Вариант A: Docker Desktop (простой)

  1. Скачайте и установите Docker Desktop с официального сайта.
  2. В настройках Docker Desktop:
    • Settings → General → ✅ Use the WSL 2 based engine.
    • Settings → Resources → WSL Integration → ✅ Включите для вашего дистрибутива Ubuntu.
  3. Проверьте из WSL:
    Окно терминала
    docker version
    docker run hello-world

Задание 6.2. Вариант B: Docker Engine напрямую в WSL (без Docker Desktop)

Окно терминала
# Удалите старые версии (если есть)
sudo apt remove docker docker-engine docker.io containerd runc 2>/dev/null
# Установите Docker Engine
sudo apt update
sudo apt install -y docker.io
# Запустите Docker
sudo service docker start
# Добавьте пользователя в группу docker
sudo usermod -aG docker $USER
# Перезайдите в сессию
exit
# Снова откройте WSL
wsl
# Проверка
docker version
docker run hello-world

Примечание: в WSL systemd может быть недоступен. Если sudo systemctl start docker не работает, используйте sudo service docker start. Чтобы Docker запускался автоматически, добавьте в ~/.bashrc:

Окно терминала
if service docker status 2>&1 | grep -q "is not running"; then
sudo service docker start > /dev/null 2>&1
fi

Часть 7. Проверка рабочего окружения

Задание 7.1. Финальная проверка

Выполните все команды и убедитесь, что они работают:

Окно терминала
echo "=== Проверка окружения ==="
echo "1. Система:"
cat /etc/os-release | grep PRETTY_NAME
uname -r
echo ""
echo "2. Пользователь:"
whoami
id
echo ""
echo "3. Git:"
git --version
echo ""
echo "4. Python:"
python3 --version
echo ""
echo "5. Сеть:"
ping -c 1 google.com > /dev/null 2>&1 && echo "Интернет: OK" || echo "Интернет: FAIL"
dig +short google.com | head -1
echo ""
echo "6. Docker:"
docker version --format 'Docker: {{.Client.Version}}' 2>/dev/null || echo "Docker: не установлен"
echo ""
echo "7. Инструменты:"
for cmd in curl wget tree htop vim nano jq; do
command -v $cmd > /dev/null 2>&1 && echo " $cmd: OK" || echo " $cmd: не найден"
done
echo ""
echo "=== Проверка завершена ==="

Задание 7.2. Создание рабочей структуры для курса

Окно терминала
mkdir -p ~/os-course/project/{src/{main,utils},tests,docs,data/{raw,processed},logs}
tree ~/os-course/project
echo "Рабочее окружение готово!"

Часть 8. Альтернатива: VirtualBox

Если WSL по какой-то причине не подходит, используйте VirtualBox.

Задание 8.1. Установка VirtualBox

  1. Скачайте VirtualBox с официального сайта.
  2. Скачайте ISO-образ Ubuntu 22.04 LTS (Desktop или Server).
  3. Создайте виртуальную машину:
    • Оперативная память: минимум 2 ГБ (рекомендуется 4 ГБ).
    • Диск: 20–40 ГБ (динамический).
    • Процессоры: 2 ядра.
  4. Установите Ubuntu с ISO-образа.
  5. После установки установите Guest Additions:
    Окно терминала
    sudo apt install -y virtualbox-guest-utils virtualbox-guest-x11

Задание 8.2. Настройка сети VirtualBox

Для полноценной работы с сетью рекомендуется два адаптера:

АдаптерТипНазначение
Адаптер 1NATДоступ в интернет
Адаптер 2Host-onlyДоступ с хоста к VM по SSH

Настройка:

  1. VM → Настройки → Сеть.
  2. Адаптер 1: NAT (уже включен по умолчанию).
  3. Адаптер 2: Host-only Adapter → vboxnet0.
  4. Внутри VM узнайте IP host-only интерфейса:
    Окно терминала
    ip addr show
  5. Подключитесь по SSH с хоста:
    Окно терминала
    ssh student@192.168.56.XXX

Решение типичных проблем

Проблема: «WSL 2 requires an update to its kernel component»

Окно терминала
wsl --update

Проблема: WSL не запускается, ошибка виртуализации

  1. Перезагрузите компьютер и войдите в BIOS/UEFI.
  2. Найдите параметр виртуализации:
    • Intel: Intel VT-x или Intel Virtualization Technology → Enable.
    • AMD: AMD-V или SVM Mode → Enable.
  3. Сохраните и перезагрузитесь.

Проблема: нет интернета в WSL

Окно терминала
# Проверьте DNS
cat /etc/resolv.conf
# Если nameserver указывает на локальный адрес, замените:
sudo sh -c 'echo "nameserver 8.8.8.8" > /etc/resolv.conf'

Проблема: Docker не запускается в WSL

Окно терминала
# Проверьте, запущен ли демон
sudo service docker status
# Запустите вручную
sudo service docker start
# Проверьте права
groups | grep docker
# Если нет группы docker:
sudo usermod -aG docker $USER
# Перезайдите в сессию

Проблема: медленная файловая система

Убедитесь, что рабочие файлы находятся в файловой системе Linux (~/), а не в /mnt/c/. Доступ к Windows-дискам из WSL значительно медленнее.


Контрольные вопросы

  1. Что такое WSL? Чем WSL 2 отличается от WSL 1?
  2. Где в Linux-файловой системе WSL находятся диски Windows?
  3. Как получить доступ к файлам WSL из Проводника Windows?
  4. Почему рекомендуется хранить рабочие файлы в ~/, а не в /mnt/c/?
  5. Какая команда PowerShell устанавливает WSL со всеми зависимостями?
  6. Как проверить, что WSL использует версию 2?
  7. Какие два способа установки Docker в WSL вы знаете? В чём разница?
  8. Зачем нужна виртуализация (VT-x / AMD-V) для WSL 2?