В новостях прошла весть, что теперь 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
Всё, можно пользоваться. Примеры использования есть на видео и в статье выше:
Комментарии (21)
MikkiKre
28.09.2022 16:47Столкнулся с такой проблеммой-Vagrant(VirtualBox) не работает на Windows одновременно с DockerDesktop. Кто-нибудь нашёл решение?
kovserg
Интересно кто те люди кто пользуется WSL? Обывателю он не нужен, нормальные разработчики используют linux и macos.
MelchiorfromBY
пока у меня мака не было - писал на swift под Linux на WSL :)
13werwolf13
> на cвифт
>> под линукс
>>> в wsl
ккккккомбо!!!
простите))
Vladekk
Джон Кармак, значит, ненормальный?
usego
С появлением WSL2 отказался от десктопного линукса. Жизнь стала на много комфортней.
aegoroff
А я наоборот отказался от WIndows c WSL в пользу десктопного линукса - жизнь стала намного комфортнее. Ушли глюки с разветыванием образов в докере, сборка стала вместо 18 минут занимать 6.5 ну и все в таком духе
usego
Крайне странные цифры про сборку, если только вы не догадались собирать на /mnt/[windrive] конечно.
aegoroff
Нет, сборка идет внутри линуксовой файловой системы, никакие /mnt/[windrive] не используются
Tujh
Немного странные цифры по времени сборки, я такгого не видел. Пока что единственный существенный недостаток WSL - это внутренний (достаточно тормознутый) прокси, который ни как не обойти, из-за чего sync с кучей мелких файлов работает на порядок медленее.
Tujh
Разработчики с корпоративными ноутбуками.
Для Windows и MacOSX существует ПО, гарантировано блокирующие загрузку с флешек и блокировку ноутбука в случае его потери или кражи (обойти можно, но цена взлома превышает критическую отметку). Для Linux подобное ПО всё же достаточно легко можно обойти.
У меня в компании раньше был стандарт - MacBook но, для работы нам нужны ноуты с интеловскими чипами, новые модные M1 не подходят от слова совсем. Поэтому Windows+WSL едва ли не единственный оставшийся вариант.
MikkiKre
Поделитесь пожалуйста, что это за ПО. А почему нельзя заблокировать загрузку с флэшки в БИОС и запаролить его? И зачем вообще эти сложности с флэшками? По-моему диск надо шифровать если кража данных критична.
Einherjar
Отлаживаю кросс-платформенные приложения на нем, гораздо удобнее чем виртуалка или 2 ноута.
Ev9en1y Автор
Отвечу за себя. Мне привычнее Windows. Я не разработчик. Мне нужно, чтобы работали всякие MS Office, Teams, Visio, Product Bulletin. Да и интерейс для меня лично удобнее, чем Gnome и его аналоги. Если говорить про средства для прошивок датчиков для умного дома и т.д. - программаторы чаще всего сделаны под Windows. Поэтому не вижу смысла создавать себе проблемы.
С другой стороны, взаимодействовать с Linux проще из Linux. Если проходить онлайн курсы, то часто Линукс удобнее. Или хочется что-то быстро попробовать, развернув это поверх Постгрес с Апачем. И это проще сделать в WSL, чем ставить отдельную ОС на ноутбук, или жить на чистом Линуксе.
Чисто субъективно.
MelchiorfromBY
MS Office - сейчас все кто с официально купленным офисом сидят на Office 365 который облачный и не привязан к платформе,
Teams - отвратительно работает даже на Windows, и терпимо на Android О_о
Ev9en1y Автор
Облачная версия мне неудобна. Я слишком стар :). Я не ожидаю, что везде есть Интернет. Я не проверял последние года, как работает Excel в облаке, но раньше он не умел всего, что могла версия для ПК.
Я не говорю, хорошо ли работает Teams или нет. Он нужен. Он - корпоративный стандарт для многих компаний.
Например, сейчас ищу работу. Teams нужен регулярно. Резюме надо в формате Word. Пытался сохранять из LibreOffice Writer в формат docx. Выходит так себе :( Еще хуже дела с PowerPoint - из Implress в pptx выходит ужасно.
Работать через телефон мне неудобно (опять же возраст и привычки). Конкретно Teams и Outlook на моем телефоне не работают. Видимо, загасил сервис на телефоне, от которого эти проги зависят. Но даже если бы работали, я по возможности использовал бы ноутбук :)
P6i
Лет 10, минимум, все мои заказчики требовали резюме в формате pdf. Прям удивлен
Ev9en1y Автор
Если это агентство по найму, оно любит править резюме.
Если это компания, то им пометки надо делать. Не всем. Но часто просят в doc(x).
Если это сайт для онлайн-подачи резюме (зарубежные и не только компании используют Workday или аналог для размещения резюме и приема заявок от кандидатов), то PDF часто распознается с ошибками, или вообще не поддерживается.
doc(x) универсальнее.
antkatcin
Как-то ваш комментарий попахивает дескриминацией. Почему "нормальные разработчики" не могут использовать wsl? Microsoft вырастил огромное количество .net разработчиков привыкших к их экосистеме. А теперь со времен .net core дал им полноценную поддержку linux. И что-то мне кажется, что все эти люди не бросятся сломя голову с привычной им системы на linux, которого многие даже в глаза не видели до этого.
Я лично наоборот радуюсь, что Microsoft по сути смогли в wsl и дали возможность вести разработку для linux под виндой и, давайте признаем, у них это получилось не плохо. Оно работает, проблемы может и есть, но решаемые в целом. Наличие инструментария это по сути признак зрелости среды, а уж чем конкретно пользоваться - это уже выбор конечных разработчиков.