Как стать автором
Обновить

Комментарии 32

А что, остальных способов было недостаточно? Например .bashrc, cron...?
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Идея тут в том, что этот конфиг читает init процесс, который в WSL является pid 1. Systemd у них нет, автозапуска и init системы полноценной тоже. До этого были костыли с bashrc. Теперь будет лучше. И никакой EEE тут не при чем.
В WSL нет systemd? Серьёзно?
Наверное, мог бы быть, но кто его запустит? bashrc?
Внезапно linux kernel.

А разве это не виртуальная машина с модифицированной Ubuntu или иным дистрибутивом?

Я работал только с WSL1 и активно пользовался его возможностью запускать процессы между подсистемами. Скажем, я могу встроить dcclinux.exe в makefile, стартующий из WSL. И линукс32 трансляторы, стартующие из Windows IDE. Или транслятор в Си, который после того, как в Си перевёл, вызывает собственно транслятор Си и компоновщики, и эти трое исполняются в разных подсистемах. Было неприятно, что надо было с командной строки прописывать поддержку linux32 после каждой перезагрузки. WSL2 не видел, можно ли там так же туда-сюда гулять, не знаю.
Короче. WSL2, как по мне, это в своём роде шаг назад, по сравнению с WSL1 Первая более интегрирована, с остальной системой, чем вторая.
Причём, вроде бы WSL не столько ради линукса затевалась, сколько ради Андроида. Не получилось, выкатили чисто Линукс. И в WSL 2 Андроида всё так же нет.
На wsl2 запуск .exe вполне себе работает. И например explorer.exe. откроет текущий каталог в винде, если это /mnt/ — все как обычно откроется а если нет — откроется по «сети» что-то вроде \\wsl$\Ubuntu\home\vikarti
Из windows — можно просто вызвать bash.exe
А то что менее интегированно — ну так это и не скрывают ж. WSL1 такая же подсистема Windows как собственно и Win32 (реально правда многое из win32 — живет в ядре еще с NT4). Из-за этого и совместимость например с файрволлами и проблемы (с тем например что NT Native API все же больше рассчитан на те принципы по которым Win32 работает)
А WSL2 — хитрая виртуалка.
А WSL2 — хитрая виртуалка.

Чем же она хитрее обычных и привычных? Ну да, дистрибутивы там немного обрезанные и стартуют без полноценного systemd/sysvinit. А ещё что?
То как она взаимодействует с виндой. Кстати, обратите внимание, init там есть. Собственно ничего не мешает ему там быть. И почему сейчас там нет systemd вызывает очень большие вопросы. Это из презентации MS, когда вторую WSL ЕМНИП только выкатили… ну или собирались выкатить.
Интеграция.
Нет, можно конечно настроить и динамическую память и файловые шары по сети прокинуть в оба конца и проброс команд реализовать но тут все — работает. И у всех — одинаково. И (насколько я понимаю) для доступа к файлам не используется TCP/IP а 9P используется.
Да, именно 9P и используется. Причём не только для доступа к файлам, в обе стороны, но и для запуска bash / cmd.exe
WSL2 да, это виртуалка. И почему там нет systemd для меня загадка, великая есть. А вот WSL1, это что-то похожее на вайн или даже точнее на слой совместимости с линукс во FreeBSD.
У меня в башрц запуск докера засунут, из-за чего при запуске у меня просят пароль, т.к. там sudo. Судя по всему, эту штука будет команды от рута запускать. Вот и вполне причина, зачем это делали. WSL2 же не имеет полноценной init системы до сих пор.
НЛО прилетело и опубликовало эту надпись здесь
Я не знаю, почему они не используют systemd, но подозреваю, что не от вредности и мифических ЕЕЕ. Все таки WSL интегрирован с виндой и мало ли что этот init процесс при запуске делает. Поднимает шары, пайпы какие-нибудь устанавливает с виндой, память шарит, еще чего. То, что требует специфичного для WSL кода.

Может объективно он нужен, а может это просто рудимент и от нехватки времени. WSL1 очевидно мог требовать свой init. WSL2 вполне мог бы и systemd использовать, но чтобы не ломать то, что уже работало, оставили свой init.

«все должно быть написано по своему, как всегда было в Microsoft».

Это было бы справедливо, будь это обычная сборка линукса. Здесь же нет «как всегда было». Такой вещи раньше никогда не было банально.
Линукс, в случае WSL2, находится в почти полностью изолированной песочнице — в виртуалке. И никаким каком не может повредить хостовой винде. Вот полная архитектура взаимодействия из презентации Microsoft.
это старая диаграмма тут не учтены фишка для реалтайма без хоста. Например запуск докера для виндовс напрямую через wsl2 режим.
А через 9P, так как это сделано для cmd.exe, думаете невозможно?
НЛО прилетело и опубликовало эту надпись здесь

Не знаю на счёт первой версии, но так как WSL 2 — это виртуальная машина, то её запуск может быть из замороженного состояния, никакие запускаторы не сработают.

А что, systemd, например, в этом вашем их WSL уже отменили? Или смузихлёбы из MS про такие «сложности» не в курсе?
PS: Прочитал комменты… Ну это просто «война и немцы»
Мда… «Дай дураку стеклянный...» Извините.
Наконец станет можно 32разрядные бинарники в binfmt_misc автоматом регистрировать на qemu-user
man binfmt.d и man systemd-binfmt в нормальных системах.
Вот у меня, например, файлик /etc/binfmt.d/regina-rexx.conf
# Regina Rexx tokenized script
:Regina_REXX_tokenized:M::Regina's Internal Format::/usr/local/lib/regina/tokenwrapper:

А последние несколько минут работы после завершения последнего процесса чем занимается? Собирает и отправляет телеметрию?

WSL это конечно хорошо, но когда windows 10 сможет наконец-то запускать APK файлы?
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Другие новости

Истории