В новостях прошла весть, что теперь WSL поддерживает демон systemd. В качестве преимущества использования systemd предлагается установка и запуск приложений и сервисов через snap. Для примера приведены Nextcloud, LXD, MySQL, MicroK8s и Docker. Я пока в преимущества самого snap не вникал. Но возможность запуска и управления демонами через systemd привлекает.
Начинаем с установки «Virtual Machine Platform». Запускать команду надо от имени администратора в консоли PowerShell:
PS C:\> dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all Cистема DISM Версия: 10.0.22000.653 Версия образа: 10.0.22000.1042 Включение функций [==========================100.0%==========================] Операция успешно завершена.
Для запуска systemd нужна WSL версия 0.67.6. Статья на сайте Microsoft рекомендует установить предварительную версию WSL из магазина приложений. Проблема в том, что в магазине версия 0.66. Для установки WSL Preview требуется Windows 11 (сборка 22000 или более новая).
Поступаем следующим образом. Ставим из магазина приложений «устаревшую» версию (0.66), чтобы в дальнейшем получать обновления на нее. А дальше качаем с GitHub нужную нам версию 0.67.6. Она последняя доступная на момент написания статьи. Возможно, на момент прочтения выйдут версии поновее. При запуске скаченного с GitHub пакета Менеджер установки предложит обновить WSL до нужной нам версии, то есть распознает, что WSL Preview у вас уже установлен. Это позволит в будущем обновлять WSL Preview автоматически встроенными в магазин приложений средствами
Какие команды могут помочь. Проверка версии WSL.
PS C:\> wsl.exe --version
Если команда не распознает параметр «—version», значит у вас старая версия WSL (0.65 и ниже).
Недопустимый параметр в командной строке: --version (c) Корпорация Майкрософт (Microsoft Corporation). Все права защищены. Использование: wsl.exe [Аргумент] [Параметры...] [Командная строка] ....
В этом случае будет работать параметр «—status»:
PS C:\> wsl --status Распределение по умолчанию: Ubuntu-20.04 Версия по умолчанию: 2 Подсистема Windows для Linux в последний раз обновлена 21.06.2022 Включены автоматические обновления WSL. Версия ядра: 5.10.102.1
В версии 0.66 параметр «—version» (-v) и статус «—status» дают следующий вывод:
PS C:\> wsl --status Default Distribution: Ubuntu-20.04 Default Version: 2 WSL version: 0.66.2.0 Kernel version: 5.15.57.1 WSLg version: 1.0.42 MSRDC version: 1.2.3401 Direct3D version: 1.606.4 DXCore version: 10.0.25131.1002-220531-1700.rs-onecore-base2-hyp Windows version: 10.0.22000.978 PS C:\> wsl --version WSL version: 0.66.2.0 Kernel version: 5.15.57.1 WSLg version: 1.0.42 MSRDC version: 1.2.3401 Direct3D version: 1.606.4 DXCore version: 10.0.25131.1002-220531-1700.rs-onecore-base2-hyp Windows version: 10.0.22000.978
А вот в версии 0.67 вывод параметра «—status» меняет формат:
PS C:\> wsl --status Default Distribution: Ubuntu-20.04 Default Version: 2
Итого, надо добиться того, чтобы версия WSL («WSL version» в выводе команды) была 0.67.6.0.
PS C:\> wsl -v WSL version: 0.67.6.0 Kernel version: 5.15.62.1 WSLg version: 1.0.44 MSRDC version: 1.2.3401 Direct3D version: 1.606.4 DXCore version: 10.0.25131.1002-220531-1700.rs-onecore-base2-hyp Windows version: 10.0.22000.1042 PS C:\> wsl --status Default Distribution: Ubuntu-20.04 Default Version: 2
Я предполагаю, что уже есть созданная виртуальная среда в WSL. Кратко, как создать, если еще нет. Смотрим список доступных систем в WSL:
PS C:\> wsl.exe --list --online The following is a list of valid distributions that can be installed. Install using 'wsl.exe --install <Distro>'. NAME FRIENDLY NAME Ubuntu Ubuntu Debian Debian GNU/Linux kali-linux Kali Linux Rolling SLES-12 SUSE Linux Enterprise Server v12 SLES-15 SUSE Linux Enterprise Server v15 Ubuntu-18.04 Ubuntu 18.04 LTS Ubuntu-20.04 Ubuntu 20.04 LTS OracleLinux_8_5 Oracle Linux 8.5 OracleLinux_7_9 Oracle Linux 7.9
Далее ставим выбранный дистрибутив параметром «—install», пример:
PS C:\> wsl.exe --install Ubuntu
В конце установки предложат ввести имя пользователя Linux и пароль для него.
После установки надо в файл /etc/wsl.conf добавить ключ для запуска systemd. В моем случае файл /etc/wsl.conf не существовал и был создан при редактировании:
user@DESKTOP:~$ sudo vim /etc/wsl.conf [boot] systemd=true
Важно, файл редактируется в гостевой системе Linux, не на хосте.
Перезапускаем WSL:
PS C:\> wsl.exe --shutdown
В консоли Linux появится сообщение:
user@DESKTOP:~$ [process exited with code 1 (0x00000001)]
Вообще рекомендую команду «wsl.exe —shutdown» вводить после каждого изменения в WSL. Чтобы запустить WSL после остановки, нужно открыть заново консоль гостевой ОС.
Проверяем, что всё получилось:
user@DESKTOP:~$ systemctl list-unit-files --type=service UNIT FILE STATE VENDOR PRESET accounts-daemon.service masked enabled apparmor.service enabled enabled apport-autoreport.service static - apport-forward@.service static - apport.service generated - apt-daily-upgrade.service static - apt-daily.service static - atd.service masked enabled autovt@.service alias - blk-availability.service enabled enabled bolt.service static - clickhouse-server.service masked enabled cloud-config.service enabled enabled cloud-final.service enabled enabled cloud-init-hotplugd.service static - .........
И, например, так
user@DESKTOP:~$ systemctl status networkd-dispatcher.service ● networkd-dispatcher.service - Dispatcher daemon for systemd-networkd Loaded: loaded (/lib/systemd/system/networkd-dispatcher.service; enabled; vendor preset: enabled) Active: active (running) since Sun 2022-09-25 23:57:28 MSK; 37s ago Main PID: 133 (networkd-dispat) Tasks: 1 (limit: 9390) Memory: 16.8M CGroup: /system.slice/networkd-dispatcher.service └─133 /usr/bin/python3 /usr/bin/networkd-dispatcher --run-startup-triggers Sep 25 23:57:27 DESKTOP systemd[1]: Starting Dispatcher daemon for systemd-networkd... Sep 25 23:57:28 DESKTOP networkd-dispatcher[133]: No valid path found for iwconfig Sep 25 23:57:28 DESKTOP networkd-dispatcher[133]: No valid path found for iw Sep 25 23:57:28 DESKTOP systemd[1]: Started Dispatcher daemon for systemd-networkd. Sep 25 23:57:28 DESKTOP networkd-dispatcher[133]: WARNING:Unknown index 7 seen, reloading interface list
Всё, можно пользоваться. Примеры использования есть на видео и в статье выше:
ссылка на оригинал статьи https://habr.com/ru/articles/690128/
Добавить комментарий