
Разработчик из Австралии Чарли Сомервилл (Charlie Somerville) опубликовал на GitHub альтернативу WSL (подсистема Windows для Linux) для тех компьютерных энтузиастов, кто предпочитает среду MS-DOS. Проект DOS Subsystem for Linux (DSL) доступен для всех пользователей под свободной лицензией GNU AGPL.
В DSL среда Linux интегрирована в систему MS-DOS. Пользователи могут запускать приложения DOS и Linux из командной строки DOS. В настоящее время DSL можно запустить в MS-DOS 6.22 или FreeDOS.
Когда DSL впервые вызывается из командной строки, то загружается ядро Linux, которое берет на себя управление компьютером из DOS. Фактически DSL запускает реальную копию MS-DOS на виртуальной машине QEMU и запускается с нее. Сомервилл использовал в проекте режим процессора под названием VM8086, который позволяет в 32-битной ОС запускать 16-битный legacy-код как нативный. Причем в этом случае Linux во время процесса загрузки не влияет на размер памяти DOS системы, оставляя нетронутым первый мегабайт памяти, где находится DOS. Так что для возврата к выполнению DOS команд Сомервиллю не нужно было придумывать что-то нового.
Сомервилл уточнил, что такой подход к запуску DOS под VM8086 на самом деле является тем, как работала ранняя Windows. Теперь разработчик заново открыл для себя эту технику много лет спустя.
В настоящее время Сомервилл дорабатывает DSL. Сейчас эта подсистема поддерживает эмуляцию только некоторых аппаратных средств. Например, поддерживается работа клавиатуры одновременно сразу в двух операционных систем на одном и том же оборудовании. Также разработчик сумел запустить DSL на реальном оборудовании помимо запуска с помощью виртуальной машины QEMU.
Предлагаемое в примере DSL ядро основано на выпуске ядра Linux 5.8.9.

Microsoft также занимается улучшением поддержки Linux в Windows 10 с помощью подсистемы Windows для Linux (WSL). Предлагаемое Microsoft для WSL2 ядро основано на выпуске ядра Linux 4.19. В WSL добавлена поддержка компьютерных вычислений на GPU. Разработчики могут полноценно использовать свои аппаратные ресурсы, например, для машинного обучения, используя NVIDIA CUDA и DirectML. В Linux-окружении можно запустить TensorFlow и PyTorch. В начале сентября этого года Microsoft добавила в подсистему Windows для Linux 2 (WSL2) возможность монтирования дисков. С помощью WSL2 можно запускать в Windows 10 не только консольные приложения, но и линуксовые GUI-программы.
См. также:
- «Что Microsoft представила разработчикам на Build: winget, GUI-программы в WSL2 и прочее»
- «Сравниваем подсистемы WSL 1 и WSL 2. Стоит ли переходить?»
- «В Windows Subsystem for Linux (WSL) появилась поддержка вычислений на видеоускорителях»
- «В Windows 10 версии 2004 пообещали обновленную подсистему WSL2»
- «Kali Linux получил графический интерфейс для подсистемы Windows для Linux (WSL2). Инструкция по установке»
gecube
Из описания непонятно — это по сути дос-подсистема для линукса (что было бы логично, но не нужно — есть же dosbox или как там эмулятор доса в линуксе называется, хоть bochs используй), или все-таки Линукс система для запуска в досе? Но практическая ценность последнего тем более непонятна.
Kobalt_x
Судя по скринкастам второе. из DOS запускаются части Linux приложений правда для этого подымается qemu
AlexiusK
Но тогда это Linux Subsystem for DOS. Но вот аббревиатура получается не очень...
igorp1024
На правах шутки: а мне кажется, вполне соответствует происходящему. :)
usrsse2
Нет, Windows Subsystem for Linux — это то, что запускает Linux программы в Windows (т. е. компонент Windows для работы с Linux-приложениями), аналогично, DOS Subsystem for Linux — то, что запускает Linux программы в DOS.
alexey_c
Убивает такой подход формирования названий.
Может это связано с нашим языком, но пока не столкнулся, а только читал, всегда думал, что WSL это конкурент Wine.
А оказалось — сильно наоборот, и даже не рядом.
vikarti
Ну как бы у Windows NT изначально были subsystem'ы что работали поверх native api, по сути транслятор API вроде Wine но на стероидах, была кстати и для OS/2 subsystem, очень старой, была POSIX Subsystem (что позволило говорить что NT — POSIX-совместимая система, правда там все равно надо пересобирать приложения и нормально работать пользуясь только этой подсистемой было нельзя). А потом куски от подсистемы Win32 потащили в ядро для быстродействия. Сильно потом — сделали WSL1(вроде как изначально делали для очередного закрытого проекта по запуску Андроида на Windows) — по сути транслятор API-вызовов,Wine наоборот, (кроме новой подсистемы — пришлось в очередной раз доработать ядро для поддержки особых типов процессов), а потом выяснилось что вариант с API-траслятором приводит к тому что и новые API Linux сложно добавлять и реализацию поддерживать совместимой сложно и тормозит все из-за мелких отличий в NTFS и линуксовых файловых системах. Ну и сделали WSL2, которая по сути — очень качественно интегрированная виртуальная машина (пришлось правда разделить собственно ядро Hyper-V (которое использует теперь и WSL2 и например эмулятор андроида на AMD и еще кое кто, а также — VMWare (если это ядро загружено, нельзя нормально два гипервизора иметь включеными) и пользовательский интерфейс Hyper-v(который для Pro версии только) и все окончательно запуталось.
Да, WSL2 и WSL1 можно еще и одновременно использовать.
gecube
Винде сразу надо было идти по пути https://www.qubes-os.org/https://www.qubes-os.org/
маленькое гипервизор ядро. Остальное — в виртуалочках. Хотя… все равно сама архитектура x86 дырявая, т.к. виртуализацию прикручивали к ней уже потом, впопыхах
xapienz
При этом зачем-то DSL запускает MS-DOS внутри QEMU. Зачем системе, запущенной из DOS, запускать MS-DOS?
Формулировка какая-то неясная
usrsse2
_
kalininmr
немного не так.
в линуксе запускается дос, который можнет дергать линукс.
0xDEADB33F
Из первого же абзаца на гитхабе проекта.
justhabrauser
Есть ненулевая вероятность того, что разработчик просто постебался над Microsoft с их WSL.
spanasik
В качестве теории заговора — есть досовские программы, которые нельзя\трудно заменить, но можно к ним добавить батники с вызовами линуксовых утилит, выдающих требуемые данные.