Linux подсистема Windows (WSL) для профессионалов

Хайден Барнс

 Состав исполнителей

Издания на английском языке
Автор
Хайден Барнс
Директор- распорядитель, Apress Media LLC
Велмоуид Спахр
Редактор приобретения
Джоан Мюррей
Редактор по разработке
Лаура Бирендсон
Координирующий редактор
Джил Больцано
Разработка обложки
Freepik
www.freepik.com

Эта книга посвящается сообществу Подсистемы Windows для Linux.

 Об авторе

 


Хайден Барнс - старший технический управляющий по контейнерам Windows в SUSE и признанный Microsoft MVP {Прим. пер.: Most Valuable Player, Самый ценный игрок}. Хайден ранее был техническим управляющим для Ubuntu в Windows Subsystem for Linux (WSL) в Canonical. Хайден регулярно выступает по теме WSL на конференциях, таких как Microsoft Build и является основателем WSLConf, первой конференции сообщества, посвящённой WSL. Он консультировал предприятия, академические учреждения и правительственные агентства для помощи им в развёртывании WSL. Перед тем как присоединиться к Canonical, Хайден основал Whitewater Foundry, самую первую команду, создавшую свой собственный дистрибутив Linux, специально созданный под WSL. Он увлечён WSL, потому как тот открывает массу возможностей для кроссплатформенной разработки с открытым исходным кодом и сотрудничества между Linux и другими сообществами.

 О техническом рецензенте

 


Нуно ду Карму ИТ специалист с 20- летним опытом работы в различных областях Windows, таких как поддержка ОС Windows, управление Active Directory и сопровождение приложений. Он также был системным администратором Unix, HP/UX и Solaris 10, а также Linux для HP на протяжении более пяти лет. Именно это сочетание практик и побудило его начать применять WSL с момента его появления в 2016 году, и он был крайне счастлив обнаружить прочих (сумасшедших) людей, которые проявили такой же интерес к этой невероятной технологии. Одним из таких людей оказался некий Хайден Барнс. .

Сегодня Нуно является Microsoft MVP, Windows Insider MVP, послом CNCF и капитаном Docker и он особенно мотивирован или вложился во внедрение облачных технологий в WSL, чтобы позволить более широкому кругу пользователей применять эти удивительные проекты. Что касается личной жизни, Нуно живёт в крошечной Швейцарии на французской её стороне со своей женой, падчерицей, пасынком и четырьмя кошками. С ним можно связаться по адресам: LinkedIn, Twitter, Website.

 Благодарности

Я бы хотел поблагодарить следующих людей, без которых эта книга не была бы возможной:

Тейлор Браун

Кайла Циннамон

Сара Кули

Нуно ду Карму

Йозеф Дурр

Свен Грут

Скотт Хансельман

Бен Хиллс

Дастин Хоуэтт

Игорь Любинчич

Даниэль Льевелин

Крейг Лоивин

Ким Мульис

Тара Радж

Карлос Рамирез

Сохини Рой

Клинт Руткас

Марк Шаттлуорс

Джон Старкс

Рич Тёрнер

Мартин Вимпресс

Патрик Ву

И все в Microsoft, кто внёс свой вклад в разработку WSL и всё сообщество вокруг WSL.

 Введение

  Linux Подсистема Windows для профессионалов

Эта книга снабдит вас широким спектром знаний об WSL для решения ряда задач, связанных с WSL, от администрирования ИТ до работ по разработке, включая:

  • Подключение к популярным Интегрированным средам разработки

  • Сборку индивидуального ядра Linux для WSL2

  • Сборку производных дистрибутивов Linux с вашими собственными пакетами

  • Автоматизацию рассылки электронной почты в Outlook из сценария bash в WSL

Она также охватывает расширенные настройки, персонализацию и оптимизацию как для WSL, так и для WSL2 инструментарием от командной строки до Реестра. Это также включает все параметры из wsl.conf и .wslconfig, а также рекомендации для наилучшей производительности.

Прежде всего, мы рассмотрим самое начало разработки WSL.

  История Подсистемы Windows для Linux

То что мы теперь называем WSL1 стартовало как некое усилие внутри Microsoft с кодовым названием Проект Астория для поддержки приложений Android в злополучном телефоне Windows. Проект Астория, ставший достоянием общественности в качестве Windows Bridge for Android, был анонсирован на конференции для разработчиков Microsoft Build в 2015 (Рисунок I-1).

 

Рисунок I-1


Снимок экрана первоначальной презентации Проекта Астория, 2015 источник

Проект Астория основан на понятиях виртуализации из исследовательского проекта Microsoft, известного как Проект Разводного моста (Drawbridge). Проект Drawbridge был прототипом нового вида виртуализации для песочницы приложений, основанной на пико- процессах. Проект Drawbridge включал в себя версию Windows, созданную для работы внутри процессов пико (pico). В Проекте Астория среда процесса пико была изменена для запуска приложений Android на основе Linux.

Из Microsoft утекла единственная сборка смартфона Windows 10, содержащая Проект Астория так и не был официально выпущен и был прекращён Microsoft вместе со смартфоном Windows в 201 году. Однако лежащая в основе Проекта Астория технология выжила. В конце концов, Android основан на Linux.

  Bash на Ubuntu в Windows

В 2016 году технология Проекта Астория была переработана как Bash на Ubuntu в Windows. Вместо запуска приложений Android эта технология применялась для запуска терминала Bash для разработчиков в Windows (Рисунок I-2). Основное ядро этой технологии было трансляцией уровня исполняемого файла, который запускал исполняемые файлы Linux в неком ядре NT внутри пико процессов, что обсуждается в Главе 1, Архитектура WSL.

 

Рисунок I-2


Снимок экрана Bash on Ubuntu on Windows

Для перенесения этой первой версии WSL в Windows, Microsoft вступила в партнёрские отношения с Canonical, издателем Ubuntu. Bash на Ubuntu в Windows поставлялся с юбилейным обновлением Windows 10, также именуемом как Windows 10 1607. Партнёрство между Microsoft и Canonical стало важной вехой в расширении внедрения Microsoft в Linux и в программное обеспечение с открытым исходным кодом.

  Подсистема Windows для Linux

В 2017 году Bash на Ubuntu в Windows превратился в Подсистему Windows для Linux, начиная с Windows 10 1709. Дистрибутивы Linux теперь могли устанавливаться из Microsoft Store (Рисунок I-3) и было расширено значительное число доступных дистрибутивов. Полный список доступных дистрибутивов WSL приводится в Главе 2, Включение WSL. Эта версия основывается на уровне трансляции исполняемого файла, который мы теперь называем WSL1, за которым последовал заявленный в 2019 году WSL2.

 

Рисунок I-3


Ubuntu 18.04 LTS в Microsoft Store

  Почему "Подсистема Windows для Linux"?

Некоторые люди задаются вопросом почему Подсистема Windows для Linux названа столь неуклюже. С исторической точки зрения подсистема Windows для Linux соответствует структуре названий служб Windows для Unix, предыдущему уровню совместимости с POSIX для Windows NT. По словам Рича Тёрнера, старшего управляющего программами в Microsoft, именно опасения по поводу товарного знака помешали Microsoft начать название продукта с Linux. В то время как WSL не содержал ядро Linux, как это имеет место для WSL2. В итоге мы получили подсистему Windows для Linux, которую можно рассматривать как подсистему Windows для запуска Linux.

  Подсистема Windows для Linux 2

WSL2 была анонсирована в сборке Microsoft 2019 и достигла общей доступности в Windows 10 2004. Само ядро WSL2 не является уровнем трансляции исполняемого кода как это имеет место в WSL1, а вместо этого полное ядро Linux и его среда запускаются в легковесном контейнере Hyper-V. В отличии от традиционного Hyper-V, который ограничен на Windows 10 Enterprise, Professional, Education и Server, WSL2 доступен для всех редакций Windows 10, включая Windows 10 Home. WSL 2 предлагает существенные улучшения в совместимости приложений по сравнению с WSL1. WSL2 сделал доступными некоторые высоко востребованные для их привнесения в WSL функциональные возможности, включая ускорение GPU, официальную поддержку GUI и встраиваемую виртуализацию для гостевых KVM.

 Содержание

О книге
Об авторе
О техническом рецензенте
Благодарности
Введение
Глава 1. Архитектура WSL
Сопоставление WSL1 с WSL2
Драйверы ядра
Пико процессы
Диспетчер Lxss
Трансляция системных вызовов в WSL1
WSL2
Hyper-V
Платформа Виртуальной машины
Ядро WSL2
Сопоставление WSL1 с WSL2
Доступность
Зачем вам выбирать WSL1
Зачем вам выбирать WSL2
Будущее WSL
Вычисления GPU
/dev/dxgkrnl
Direct3D 12
DirectML
OpenGL и OpenCL
CUDA nVidia
Библиотеки
Поддержка GUI
Глава 2. Включение WSL
В программах и функциональных возможностях
При помощи PowerShell
С применением DSIM
Воспользовавшись wsl.exe --install
Установка дистрибутива при помощи wsl.exe --install
Применение DSIM для включения WSL в образе
В гостевых Hyper-V
Установка дистрибутива Linux в WSL
Выбор дистрибутива
Обсуждение: версия WSL при установке
Установка из Microsoft Store
Сторонняя установка файла .appx в режиме разработчика
Импорт Tarball при помощи wsl.exe --import
Механики установки WSL
Местоположение установки
Инструментарий WSL
API WSL в Windows 10
Глава 3. Управление дистрибутивами WSL
Перечисление всех дистрибутивов
Перечисление запущенных дистрибутивов
Запуск установленного по умолчанию дистрибутива
Настройка установленного по умолчанию дистрибутива
Запуск конкретного дистрибутива
Запуск в качестве конкретного пользователя
Исполнение отдельных команды
Останов
Прекращение
Преобразование дистрибутивов между версиями WSL
Экспорт/ резервное копирование дистрибутива
Импорт/ восстановление дистрибутива
Дублирование дистрибутивов
Сброс дистрибутивов
Открытие настроек "App" дистрибутива WSL
Расширенные параметры в настройках "App" дистрибутива WSL
Обсуждение: сброс дистрибутива WSL
Деинсталляция дистрибутивов из Microsoft Store
Из меню Windows Пуск
Из расширенных параметров в настройках "App" дистрибутива WSL
При помощи PowerShell
Деинсталляция дистрибутивов, установленных при помощи wsl.exe --import
Управление ядром WSL2
Проверка доступных обновлений
Проверка состояния обновления ядра
Откат обновлений ядра
Монтирование внешних томов
Демонтирование из Windows
Глава 4. Сопровождение дистрибутива Linux
Пакеты
Зависимости
Выполнение административных задач при помощи sudo
Обновление пакетов
Модернизация пакетов
Установка пакетов
Деинсталляция пакетов
Покинутые зависимости
Поиск пакетов
Из терминала
При помощи терминального интерфейса пользователя (TUI)
С применением графического интерфейса пользователя (GUI)
Сборка вашего собственного образа WSL Ubuntu
Установка инструмента самораскрутки образа
Сборка нашего базового образа
Персонализация базовой установки
Создание rootfs tar
Импорт в WSL
Глава 5. Настройка дистрибутивов WSL
Установка настроек для дистрибутива
Настройки автоматического монтирования
Включение
Корень
Закладка файловой системы
Параметры монтирования
Метаданные
Чувствительность к регистру
Изменение UID и GID монтируемого устройства
Основа полномочий файла Linux
Символьный вид
Проверка полномочий файлов
Цифровая форма
Маска файла
Изменение umask и fmask монтируемого устройства
Монтирование из прочих дистрибутивов
ldconfig
Сетевая среда
Выработка файла Hosts
Выработка файла DNS
Hostname
Возможность взаимодействия
Включение
Добавление в конец путей Windows
WSLENV
Флаги WSLENV
Пользователь по умолчанию
Запуск
Глава 6. Настройка WSL2
.wslconfig
Ядро
Командная строка ядра
Процессоры
Память
Подкачка
Файл подкачки
Составление отчётов страниц
Проброс локального хоста
Встраиваемая виртуализация
Консоль отладки
Советы
Настройки реестра WSL
Глава 7. Персонализация WSL
Применение графических приложений при помощи X
Установка X Server в Windows
Настройка WSL для проброса X в ваш Windows X Server
WSL 2, GUI Apps и межсетевой экран Windows
Установка приложения GUI
Отладка приложения GUI
dbus
Раскрутка вашей собственной системы init
.bashrc
Службы Windows
Планировщик задач Windows
Команда запуска
Глава 8. Следуем далее с WSL2
Запускаем systemd
Простой подход к systemd
Сборка вашего собственного ядра для WSL2
Установка гостевой операционной системы в KVM на WSL
Расширенная работа с сетями WSL2
Глава 9. Максимизируем возможность взаимодействия Windows
wslpath
wslutilities
Перенаправление между приложениями Windows и Linux
Конвейер
Конвейер между Windows и WSL
Конвейер от WSL к Windows
Конвейер от Windows к WSL
Перенаправление файла
Heredoc
Переменные среды
Монтирование файловой системы в WSL2
Совместные файлы Windows
SSHFS и прочие файловые системы на основе FUSE
Естественные файловые системы Linux в образе диска или &qout;Разделе&qout;
В разделе
В образе диска (файл VHDX)
Параметры монтирования
Глава 10. Применение WSL для корпоративной разработки
Создание рабочей станции Microk8s
Предварительные требования для Microk8s
Установка Microk8s
Включение добавлений Microk8s
Развёртывание кластера при помощи Helm
Применение рабочего стола Docker
Установка рабочего стола Docker в WSL
Сборка контейнера Docker
Подключение к редактору/ IDE
Visual Studio
Установка в версии 16.8 Visual Studio и более ранних
Установка в версии 16.9 Visual Studio и старше
Отладка вашего прикладного приложения в WSL
Visual Studio Code
IDE JetBrains
Применение проброса GPU вычислений
CUDA nVidia
DirectML для не- nVidia GPU
Глава 11. Устранение неисправностей WSL
Установка
Убедитесь что включены не обязательные функциональные возможности Windows
Проверьте своё приложение безопасности
Получите самый последний дистрибутив из Windows Store
Виртуализация
Зависимости компонентов Linux
systemd
dbus
Модули ядра
Приложения Linux
Применение "strace" в WSL1
Глава 12. Масштабное развёртывание WSL
Обсуждение развёртывания
Применение Intune для развёртывания Ubuntu в WSL
Применение Landscape для управления Ubuntu в WSL
Раскрутка Ubuntu WSL в сервер Landscape
Выполнение сценария в экземпляре WSL при помощи Landscape
Управление пакетами экземпляра WSL при помощи Landscape
Применение Ansible для управления Ubuntu в WSL
Дополнение A. Начальное представление поддержки GUI теперь доступно для WSL
Для чего я могу применять поддержку приложений с графическим интерфейсом?
Применение IDE вашей мечты для разработки проектов Linux
Запуск приложений, доступных только в Linux, или варианты использования специфичные Linux, например, тестирование
Сборка, тестирование и применение приложений Linux, которые пользуются аудио или микрофоном со встроенной поддержкой аудио
Бонус: Применение доступа к графическому процессору WSL для запуска приложений Linux с 3D ускорением
Как работает эта функциональная возможность?
Приступаем к работе с этой функциональностью
Обратная связь
Дополнение B. Архитектура WSLg
Философия и ранние цели
Выбор пути: сборка в Weston
Архитектура WSLg
Системный дистро
Проект WSLg в GitHub
Аппаратное ускорение OpenGL
Обратная связь
Указатель