Комментарии 66
О, да в этой «отличной» статье даже не сказано, что WSL2 это HyperV и конфликтует с остальными средствами виртуализации…
Явно заявлено "подмножество Hyper-V" — https://devblogs.microsoft.com/commandline/wsl-2-post-build-faq/ "Does WSL 2 use Hyper-V? — The newest version of WSL uses Hyper-V architecture to enable its virtualization. This architecture will be available in an optional component that is a subset of the Hyper-V feature."
И там же про конфликты — некоторые сторонние виртуализаторы уже обновили: "Some 3rd party applications cannot work when Hyper-V is in use, which means they will not be able to run when WSL 2 is enabled. Unfortunately, this does include VMware, and versions of Virtual Box before Virtual Box 6"
конфликтует с остальными средствами виртуализации…
В VirtualBox уже реализовали поддержку Hypervisor Platform. Пока ещё не очень быстро, но ситуация улучшается.
Я тоже так думаю. А WINE вместе с родными MS-овскими DLL-ками обеспечит обратную совместимость.
Если быть точным: IBM и MS совместно выпускали полуось. Потом было принято решение сделать новое ядро, этим занялись MS. В какой-то момент совместный проект закончился, и было принято решение выпустить версию Windows на основе этого ядра.
Ну разве что если «базой наработок» считать наработанный опыт сотрудников.
Ядро NT — совсем другое.
Какой же это линукс если не можешь сам ядро собрать?
Возникает и обратный вопрос — зачем нужен wsl, если есть полноценный линукс и вайн?
Виртуалка с ssh решает ту же задачу не хуже, но позволяет не думать, что что-то в WSL может не работать и какие подводные камни всплывут при выводе в прод.
Если уж все равно извращаетесь, то Visual Studio, .net и MSSQL работают в линухе под вайном, а что-то уже и нативно, но бонусом вся прелесть линуксовой автоматизации, нормальный гит и секьюрность из коробки.
Ансибл это кроссплатформенная радость.
А есть где-нибудь почитать, что с WSL1 не так? Я натыкался на комментарии о том, что он слишком медленный, но что помешало майкрософту его ускорить?
Многие утилиты тупо не работали или вели себя странно. Например, nmap
Ну неработающие утилиты это понятно, ведь там, ЕМНИП, не все системные вызовы до конца были доделаны. Но опять же остаётся любопытно, что помешало их доделать
По сообщению MS в WSL1 тормозили файловые операции — https://devblogs.microsoft.com/commandline/announcing-wsl-2/ "Initial tests that we’ve run have WSL 2 running up to 20x faster compared to WSL 1 when unpacking a zipped tarball, and around 2-5x faster when using git clone"
Вероятно замедлялось из-за того, что слою трансляции системных вызовов приходилось эмулировать свойства и метаданные posix fs поверх ntfs, а затем вызывать ntfs подсистемы, предполагали также проблемы с кэшированием.
В WSL2 файловые операции быстрее для linux root fs, т.е. образа фс, с которым реализация файловых систем ядра линукс работает напрямую: https://devblogs.microsoft.com/commandline/wsl-2-is-now-available-in-windows-insiders/ "Make sure to put the files that you will be accessing frequently with Linux applications inside of your Linux root file system to enjoy the file performance benefits.
… To enjoy the faster file system access in WSL 2 these files must be inside of the Linux root file system."
А трансляцию доступа к файлам в linux root fs в wsl2 теперь производят для виндовых приложений.
Прямой вызов, пусть даже неэффективной функции, против слоя виртуализации…
Скорее политические мотивы.
С точки зрения файлового ввода-вывода:
Новая система WSL2 — это виртуальная машина в удобной обертке. Внутри виртуальной машины работает ядро Linux со своим родным кэшем, VFS, ФС (ext4). Слой виртуализации замедлит лишь доступ к блочному устройству в котором лежит ext4. (Доступ к ФС между ОС — по 9p протоколу через сеть.) Тесты ФС показывают для WSL2 незначительное замедление по сравнению с нативным линуксом: https://www.phoronix.com/scan.php?page=article&item=windows-10-wsl2&num=2 например, тест на создание файлов https://openbenchmarking.org/embed.php?i=1906141-HV-WSL2MICRO62&sha=6af9cf2&p=2 (виртуализация wsl2 добавила 5 мкс к 11 мкс нативного линукса; в wsl1 было в 60 раз медленнее); git быстрее https://openbenchmarking.org/embed.php?i=1906141-HV-WSL2MICRO62&sha=2c29823&p=2
ФС в старом WSL1 — это огромный слой эмуляции "lxcore VFS" — см https://blogs.msdn.microsoft.com/wsl/2016/06/15/wsl-file-system-support/ — при этом там есть два разных драйвера VolFs ("/", "/home", эмулятор posix флагов через NTFS Extended Attributes) и DrvFs (для /mnt/c, медленнее т.к. отключает часть кэшей фс); которые затем обращались к NT ядру для исполнения реальных запросов в NTFS. (вызов цепочки функций, увеличение числа запросов — для каждого linux stat надо прочитать несколько ntfs ea)
Сегодня же новая версия Microsoft Windows создается именно на базе Linux.
В смысле?
Сегодня же новая версия Microsoft Windows создается именно на базе Linux.Как же автора занесло.
When Apple reinvented the Mac OS in 2000, it was built atop the BSD Unix OS — which is more like Linux than DOS, which is what Microsoft Windows is built atop, Swartz pointed out.
- Невозможность производить операции с файлами в WSL файловой системе средствами Windows программ.
- Каждый WSL терминал имеет свой собственный init процесс, из-за чего приходится городить огороды, чтобы получить постоянно работающий SSHD. Гораздо разумнее было бы пускать WSL-init фоном, как виндовый сервис.
Использовать WSL для разработки под Linux неудобно, проще работать в Linux.
Использовать WSL для разработки под Windows (линуксовые утилиты + кросскомпиляция) так же неудобно, уж лучше MSYS2/MinGW. Отсюда вопрос — зачем оно? Чтобы без PuTTY иметь возможность подключаться к Linux машинам, сидя в Windows окружении?
Использовать WSL для разработки под Windows (линуксовые утилиты + кросскомпиляция) так же неудобно, уж лучше MSYS2/MinGW
MinGW невероятно, запредельно тормозной.
А вот разработка под микроконтроллеры, например, где кросс-компиляция будет по-любому, под WSL прекрасна — с одной стороны виндовый софт, с другой git/make/gcc в родном для них окружении.
Из того что не работает — пробовал завести distcc под cygwin, он тупо крашился) спрашивал в одном из своем посте в комментах — кто-то вообще заводил distcc+cygwin, мне не ответили.
Я бы сказал не 2-3, а до 10 раз на мелких файловых операциях.
Плюс невменяемая стоимость exec и отсутствие fork/clone, из-за чего неприемлемо тормозит весь не-виндовый софт.
, распаковка архива tar.gz с 2.5 ГБ исходных текстов занимает 2 минуты 50 сек. Даже тормозной cygwin шелл выигрывает — 2 минуты 17 секунд.
В остальном, WSL это плюс.
Да не, бред какой-то, надо WSL использовать, скучно ведь.
Ну и к чему тогда эта возня с WSL?
Я бы предпочел один раз настроить виртуалку, чем каждый раз сталкиваясь с необяснимым проверять а не в WSL ли это дело? А могу я использовать этот софт для дебагга в нем? Запустится ли он вообще?
К тому же виртуалки уже давно не тормознутые. Консольный вариант так и вовсе неотличим по задержкам.
Вы тыркнете в Windows Store по Ubuntu 18.04 и бац, открылась терминалка и хрен до неё докопаешься так просто, что это не полноценный линукс. Просто работает. Ну и к чему вся эта возня с тормознутыми виртуалками если можно без них?
От используемого linux-софт же зависит.
К примеру, попробуйте кучу основанного на Docker софта запустить в WSL 1.
Для чего? Чтобы получить наиболее приближенную к production среду на этапе разработки.
declare -x DOCKER_HOST=«tcp://127.0.0.1:2375»
К примеру, попробуйте кучу основанного на Docker софта запустить
Докер докеру рознь. «Софт основанный на докере» работает по разном на разных машинах. Например, на официальном докере для виндовс (виртуальная hyper-v машина) libgit не работает корректно с оверлеями, пока не пропатчишь, а на линукс машинах — без проблем.
- if (git_repository_open_ext(&repository_, path_.c_str(), 0, NULL) != 0)
+ if (git_repository_open_ext(&repository_, path_.c_str(), GIT_REPOSITORY_OPEN_CROSS_FS, NULL) != 0)
ставите докер в WSL, в настройках expose daemon on… и
declare -x DOCKER_HOST=«tcp://127.0.0.1:2375»
Вы предлагаете некий способ решения проблемы.
А MS продает сервис, удобство, комфорт. Она за вас решает проблему в WSL 2 (и, автоматически, ряд других проблем). Тем самым увеличивая количество лояльных к Windows пользователей.
При выборе Ubuntu vs Arch большинство предпочитает Ubuntu. Люди в большинстве своем предпочитают «готовенькое», а не то, где нужно потратить дополнительные усилия для решения проблемы.
MS делает так, чтобы большинство предпочитало Windows.
Тут их позиция в корне не изменилась никак со времён предустановки Windows на 80% компьютеров мира.
«Сделаем пользователю удобнее, дадим ему сервис — и он выберет нас»
P.S.:
Согласен, что изначальное решение в виде легковесной оболочки было вполне изящно. Хотелось бы чтобы и такой вариант оставили, буде WSL 1 более производительным на ряде задач, чем WSL 2.
c:\users\%username%\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc\ LocalState\rootfs
на Хабре переносы сломались поставил пробел
Поскольку в абзаце про CVE речь идёт о безопасности, CVE database companies — это, видимо, "компании, поддерживающие базы данных распространённых уязвимостей".
Смешно слышать о направленности в сторону опен-сорса компании, которая вымогает деньги с производителей Android-устройств, угрожая возможными исками по поводу нарушения ядром Linux каких-то их патентов.
Они вынужденно делают свои продукты более совместимыми с open-source решениями, чтобы не терять долю рынка. И делают это весьма неплохо, молодцы. Но ни о каком дружелюбии речи тут не идёт.
Как там в 2012м? Покупайте биток!
вымогает деньги с производителей Android-устройств, угрожая возможными исками по поводу нарушения ядром Linux каких-то их патентов.Да, подумаешь, какие-то там патенты.
Но ни о каком дружелюбии речи тут не идёт.О дружелюбии вроде ничего и не сказано.
Именно «какие-то там», в духе «наш фирменный уникальный запатентованный прямоугольник со скруглёнными уголками». Агрессивное патентование все что только можно в максимально расплывчатых формулировках, так что любая разумная реализация функциональности в этой области будет что-нибудь нарушать.
MS скрывала списки патентов (и в целом сводки с этой войны не очень подробны), но в 2014 году Китай опубликовал 310 номеров патентов: https://www.zdnet.com/article/310-microsoft-patents-used-in-android-licensing-agreements-revealed-by-chinese-gov/ https://arstechnica.com/tech-policy/2014/06/chinese-govt-reveals-microsofts-secret-list-of-android-killer-patents/
сам список http://images.mofcom.gov.cn/pep/201404/20140408143159274.docx
Ранее, на 2012 год MS получала выплаты примерно с 70% проданных андроид-смартфонов — https://www.howtogeek.com/183766/why-microsoft-makes-5-to-15-from-every-android-device-sold/
В 2014 году размер выплат оценивался в 1 млрд долларов от Самсунга и более 3 млрд со всех андроидов — https://www.zdnet.com/article/microsoft-open-sources-its-entire-patent-portfolio/
В 2018 году MS присоединилась к Open Invention Network https://www.zdnet.com/article/microsoft-open-sources-its-entire-patent-portfolio/ но судьба договоров о выплатах с андроид-производителями остается неясной.
Речь об открытости исходного кода, а не о том, коммерческий ли продукт
Речь об открытости исходного кода, а не о том, коммерческий ли продукт
Там общая память по вашей ссылке как критерий идет, да.
Из чего вы делаете далеко идущие выводы, так как:
Значит, и все ОС должны быть открыты, так как у них есть прикладное API и общая память (через которые и идет вирусное заражение лицензией, достаточно интегрировать в систему хоть одну единицу открытого ПО, а это широко используется, даже и с коммерческими ОС).
После чего — заражаются лицензией заодно и абсолютно все прикладные программы, так как они через API и общую память взаимодействуют с ОС, открытыми на предыдущем шаге?
исключение из GPL
Для прикладных API в Linux отдельно прописано
И?
Почему виртуальная машина под это условие-исключение не попадает? Там тоже API docs.microsoft.com/en-us/virtualization/api
Программное обеспечение WSL не поставляется в дистрибутиве ОС, а устанавливается пользователем отдельно. Это широкоизвестная практика используется хоть в той же Ubuntu для установки дополнительного софта, который не полностью соответствует открытой лицензии.
Ну а исходный код модифицированного ядра Linux вполне себе может быть вами получен.
GPL не требует публикации. GPL требует возможности получения исходного кода желающим. Да хоть по отдельному запросу в MS электро-почтой вам лично.
Я полагал что WSL2 будет поставляться как компонент системы и тесно с ней интегрироваться, что нарушало бы GPL.
Вопрос был не в возможности получения исходного кода модифицированного ядра, он и так доступен. Вопрос в том, в праве ли Microsoft включать в состав дистрибуции проприетарной Windows ядро Linux, распространяющееся под GPL.
Я полагал что WSL2 будет поставляться как компонент системы и тесно с ней интегрироваться, что нарушало бы GPL.
А как вы думаете, почему для WSL 1 выбран столь неудобный способ:
1) Часть функционала активируется простой галочкой
2) А часть — требует обязательно явной установки пользователем из MS Store
Такой же практики придерживается и Ubuntu при установке несовместимых с ее лицензией компонент.
Писать "новая Windows делается на основе linux" то ли чересчур оптимистично, то ли это попытка ввести в заблуждение. Просто новые инструменты, действительно, пишутся в первую очередь под linux, и windows версия часто плохо поддерживается. Например, докер под windows работает через виртуальную машину вместо нативной версии. А туториалы начинаются с "установите ubuntu...". Желания и сил вносить патчи в тысячи проектов у МС нет, потому они решили добавить слой совместимости для нативного запуска линуксовых компиляторов, докеров, менеджеров пакетов, ноды и т.д. чтобы разработчики оставались на Windows, а не убегали на linux.
Следующим шагом, я думаю, МС постарается сделать, чтобы работа с WSL была комфортнее, чем на настоящем линуксе — сделают какой-нибудь графический менеджер пакетов, чтобы начинающие любители яваскрипта могли поставить ноду без консольных команд или какой-нибудь удобный конфигуратор докера. При этом завяжут его на Windows API и магазин приложений Windows, чтобы на линуксе его запустить было нельзя. Не уверен, правда, что у них это получится.
При этом скорее всего WSL будет оптимизироваться исключительно под запуск докера, нгинкса, ноды, стандартного набора веб-разработчика, а например поддерживать Гном или KDE никто не будет — зачем вам Гном, если у вас уже есть десктопное окружение?
Windows не будет разрабатываться поверх линукса хотя бы из-за лицензии. Кому нужна винда, которую можно взять бесплатно и удалить из нее всю телеметрию?
Пингвин в окне: о потенциале и перспективах WSL2