- Как запустить DOS программы в Linux
- DOSBox
- DOSemu
- FreeDOS
- DOS, Linux, без ОС, в чём разница? Что лучше выбрать?
- 1. Операционная система DOS
- 2. Операционная система Linux
- 3. Без ОС
- Разработчик опубликовал DOS Subsystem for Linux
- Запуск DOS-приложения в Linux
- Идея Linux-дистрибутива с полной (почти) поддержкой Windows приложений
- Предисловие
- Как и что будем интегрировать?
- Что мы в итоге получим?
- И кому это нужно?
- В чем проблема?
- Что дальше?
Как запустить DOS программы в Linux
Есть шанс, что большинство из вас, читающих эти строки, начали своё «путешествие» в мир компьютеров через DOS. Хотя эта, уже давно устаревшая, операционная система теперь работает только в наших воспоминаниях, она всегда будет занимать особое место в наших сердцах. Тем не менее, кому-то захочется окунуться в ностальгические воспоминания или показать своим детям, на что было похоже прошлое, запустив некоторые приложения MS-DOS на вашем дистрибутиве Linux. Хорошие новости в том, что вы можете это сделать без особых усилий!
Для этой инструкции я буду использовать игру DOS, в которую я играл когда был маленьким ребёнком, она называется “UFO Enemy Unknown”. Это была первая в истории команды пошаговая стратегия, выпущенная Microprose чуть более чем 20 лет тому назад. Ремейк игры был реализован Firaxis в 2012, которые чётко выделили черты, так нравившиеся нам в оригинале.
Поскольку исполнимые файлы DOS — это .exe, само-собой приходит мысль, что мы сможем запустить их под Wine, но, к сожалению, у нас ничего не получится. Причина этому — “DOS memory range unavailability” — «Недоступность диапазона памяти DOS».
Это означает, что ядро Linux запрещает любым программам (включая Wine) выполнять 16-битные приложения и, таким образом, иметь доступ к 64k памяти ядра. Это функция безопасности и её нельзя изменить, поэтому начнём наши попытки с DOSBox.
DOSBox
Установите DOSBox из вашего Менеджера Приложений и затем откройте ваш менеджер файлов и убедитесь, что вы создали каталог с названием “dosprogs” в вашей домашней директории. Скопируйте файлы игры внутрь этого каталога, а затем откройте DOSBox, набрав в терминале “dosbox”. Теперь нам нужно смонтировать каталог “dosprogs” в dosbox. Чтобы это сделать, напечатайте
нажмите Enter в консоли DOSBox. Затем напечатайте
чтобы войти в новый смонтированный диск, как показано на следующем скриншоте.
Вы можете передвигаться по каталогам диска с использованием команды “cd”, совмещая её с “dir”, пока не достигнете исполнимых файлов игры. Например, напишите “cd GAME”, чтобы войти в каталог GAME, а затем напишите “dir” и нажмите Enter, чтобы увидеть что содержит каталог GAME. Если список слишком длинный для просмотра на экране, вы также можете попробовать использовать команду “dir /w/p”. В любом случае, исполнимым файлом является UFO.bat и я могу запустить игру напечатав имя файла (с расширением) и нажав Enter.
DOSemu
Другое приложение, которое позволяет вам запускать исполняемые файлы DOS под Linux, — это DOS Emulator (также доступный в Менеджере Приложений). В чём-то это программа проще, т. к. не нужно заботиться о монтировании разделов, можно набрать “D:” и войти в консольный интерфейс для доступа к вашей домашней директории. Оттуда вы можете передвигаться в каталог, содержащий исполняемые файлы DOS и запускать их таким же образом, как мы делали в DOSBox. Хотя DOSemu проще в использовании, она не всегда может работать безупречно, это я обнаружил по своим тестам. Вы всегда можете попробовать это и посмотреть, как идут дела.
FreeDOS
Ещё одна альтернатива, FreeDOS по-прежнему активно развивается и используется на очень старом железе или на встроенных системах. Также можно упомянуть DR-DOS.
DOS, Linux, без ОС, в чём разница? Что лучше выбрать?
Операционная система — важная составляющая любого ПК, так как именно благодаря ей тот же ноутбук из коробочки, набитой микросхемами, превращается в рабочий аппарат. Вдыхает жизнь, так сказать.
С точки зрения программного обеспечения, существует четыре основных варианта поставки ноутбуков. Самый расхожий — это аппарат с предустановленной Windows, она же «окна», она же виндовс, она же винда и т.д. Думаю, что большинство сталкивались с ней в том или ином виде. Текущая версия этой ОС — Windows 10, её вариации — Windows 10 Home и Windows 10 Pro.
А вот про ноутбуки с DOS, Linux и вообще без ОС необходимо рассказать подробнее.
1. Операционная система DOS
DOS или, точнее, FreeDOS — это бесплатная командная операционная система, совместимая с MS-DOS.
Именно по причине свободного распространения некоторые производители устанавливают её на свои продукты. В отличие от той же Windows она им ничего не стоит, значит, есть возможность предоставить пользователю лэптоп с ценником пониже.
Несколько уточнений. Во-первых, из-под DOS можно осуществить первичную проверку ноутбука при покупке, правда, для этого необходимо знать команды. Во-вторых, FreeDOS не предназначена для массового пользователя, поэтому многие покупают ноутбуки с ней, только исходя из желания сэкономить. В-третьих, купить ноутбук сразу с Windows дешевле, чем купить его с DOS, а потом докупить лицензию Windows 10. Поэтому выбор в пользу лэптопа с DOS оправдан, если у пользователя уже есть лицензия Windows или он планирует установить один из дистрибутивов Linux.
2. Операционная система Linux
ОС Linux тоже распространяется свободно (по лицензии GNU GPL), но в отличие от FreeDOS — это полноценная операционная система, которую используют десятки миллионов юзеров по всему миру.
Linux предустанавливается на ноутбуки в двух вариантах:
- командный, который внешне почти неотличим от DOS,
- в виде дистрибутива с графической оболочкой, в целом похожего на привычную операционную систему с иконками, курсором мыши т.д.
В первом случае, как и в случае с DOS, для работы с такой ОС необходимо знать команды.
Зато дистрибутивы Linux с графическим интерфейсом не столь требовательны к умениям и знаниям пользователя.
Из десятков существующих в ноутбуках и моноблоках, как правило, можно столкнуться только с двумя: Ubuntu и Endless OS.
Ubuntu широко распространён, будучи достойной альтернативой Windows. Он прост в освоении, нетребователен к «железу», безопасен, регулярно обновляется и располагает большой базой ПО. Такая версия Linux чаще всего встречается в ноутбуках Dell .
В Linux (и в Ubuntu, в частности) очень непривычная для Windows-пользователей система скачивания и установки приложений. В Linux-системах есть понятие зависимости, на практике это означает невозможность установки ПО без скачивания пакетов, от которых зависит работа софта. Если две, три или более программ используют одну и ту же библиотеку, она скачивается один раз одним пакетом, к которому потом обращаются все зависимые программы.
Сами пакеты устанавливаются автоматически через репозиторий, который и является их хранилищем. При желании пакеты можно скачать и установить вручную, но использование репозиториев существенно упрощает жизнь. При этом пользователь сам выбирает, каким репозиторием пользоваться, более того, он волен создать собственный.
Звучит излишне сложно, но на практике всё совсем нестрашно. Просто дело привычки.
Endless OS нашла применение преимущественно в ноутбуках ASUS . Внешне она больше похожа на мобильную систему, развёрнутую на планшете, чем на привычную десктопную ОС. В любом случае, Endless OS — очень неплохой вариант для тех, кому необходим компьютер только для мультимедийных развлечений и веб-сёрфинга.
Аскетичный внешний вид и минимальная возможность настройки неслучайны. Это сделано с оглядкой на начинающих пользователей ПК. Как результат, её невозможно «сломать», случайно нажав «не на ту клавишу».
По этой же причине в Endless OS нет системы пакетов и репозиториев, описанных выше. Весь софт устанавливается «полностью» из встроенного магазина.
Главный недостаток «бесконечной ОС» — отсутствие гибкости, которая присуща Linux, но в целом это хорошая и простая операционная система. Она вполне подходит, например, людям в возрасте с минимальной компьютерной грамотностью.
3. Без ОС
Последний популярный вариант — ноутбук вообще без операционной системы. Тяжело ещё что-то к этому добавить, на самом деле. При включении лэптопа пользователь видит перед собой BIOS.
Единственное неудобство такого способа поставки — невозможность проверить ноутбук или моноблок перед покупкой. Хотя всегда можно создать загрузочную флешку с одним из вариантов Linux.
Разработчик опубликовал DOS Subsystem for Linux
Разработчик из Австралии Чарли Сомервилл (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.
Пример запуска DSL в системе.
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-программы.
Запуск DOS-приложения в Linux
Необходимость запуска DOS-приложений под Linux возникает нечасто, но случается. Вот как-то и со мной случилось, решил поделиться опытом, может, кому пригодится.
А нужно было запустить кем-то, когда-то написанное приложение для поликлиники, работающее на Foxpro под DOSом, в Linux, т.к. денег на покупку Windows лицензий не нашлось.
Исходные данные:
Suse Linux Enterprise Desktop 10.3 — рабочие станции.
Suse Linux Enterprise Server 10.3, на нем шара на Samba (я же до этого и расшаривал для работы с Windows рабочих станций, т.к. на лицензию для Win-сервака тоже денег не было), имя шары, как ни странно, — SHARE.
Происходило всё 2-3 года назад, поэтому версии SLED и SLES на момент установки были не такие уж и древние.
Т.к. сервер уже настроен, то все нижеописанные манипуляции производим на десктопе.
Ставим из репозитория, или отдельно скачиваем dosemu-xxx.rpm.
Ещё нам понадобятся кириллические шрифты (далее по тексту папка XFonts), не помню уже где я их взял, приложу в архиве к статье.
Создаём папку, куда смонтируем шару, прописываем монтирование в fstab и монтируем:небольшое пояснение: 192.168.0.130 — IP сервера, user и userpassword берём из пользователей на сервере, которым разрешён доступ к Samba-шаре.
Дальше копируем шрифты:прописываем папку подобно остальным шрифтам в файле /etc/X11/xorg.conf, и добавляем их в систему командой:
В /etc/dosemu.conf добавляем или изменяем в соответствующих разделах следующие опции (у меня в итоге только эти опции и остались):
В файл autoexec.bat, находящийся в папке /usr/share/dosemu/drive_z пишем следующее (. при копировании # и пояснения убрать. ):
Для полной ясности вот содержание lin.bat (. при копировании # и пояснения убрать. ):
Делаем первый запуск, командем:получим фигвам, потому что нет файла lin.bat, исправляем созданием в домашней директории, в папке .dosemu/drive_c (папка создаётся при первом запуске эмулятора) этого файла с вышеприведённым содержанием.
Ещё раз запускаем dosemu и вуаля, наша досовская прога работает, показывает текст на русском языке и даже распечатывает под Linux.
Мои изыски относились к определённой программе, но, думаю, таким способом, с заменой путей и имён файлов, запустятся если не все, то многие приложения работающие под DOS.
Идея Linux-дистрибутива с полной (почти) поддержкой Windows приложений
Предисловие
Привет, Хабр! Я хочу поделиться с вами идеей о создании Linux-дистрибутива с полной поддержкой Windows приложений. Все началось около 4-х лет назад, когда я в первый раз установил Linux. Тогда меня очень заинтересовала эта ОС, но поначалу все было очень непривычно, так как мне не хватало некоторых приложений из Windows, к которым я сильно привык. В итоге приходилось на другом разделе держать установленную Windows и это сильно раздражало. По мере изучения Linux я узнал о такой программе как Wine, а позже о VirtualBox. Если быть честным, то Wine не особо доставлял, так как некоторые приложения на нем заводились с пол тыка, а другие занимали уйму времени на поиски информации и ковыряния Wine’а. VirtualBox в то время сильно помог, так как дал мне почти полную интеграцию Windows с Linux. Сейчас я полностью перешёл на Linux и почти не пользуюсь Windows на VirtualBox’е, но у меня осталась одна идея, которую хотелось бы реализовать.
Итак, пользуясь Windows через VirtualBox, я подумал о том, чтобы максимально интегрировать ее в Linux и использовать как некую обёртку для запуска Windows-приложений прямо в Linux’е. Дальше я начал продумывать, как организовать мою идею и придумал решение по интеграции.
Как и что будем интегрировать?
Интерфейс
Основой интеграции будет VirtualBox в бесшовном режиме. Так как для Linux’а все Windows-окна будут одним большим окном, то с ним ничего не остаётся сделать, как закрепить его поверх всех окон на отдельном рабочем столе Linux’а и запретить вывод Linux приложений на этот рабочий стол. Таким образом все Windows приложения будут появляться на отдельном рабочем столе Linux, что на мой взгляд очень удобно.
Файловая система
Ее можно просто примонтировать к Linux. Например:
/virtualization
/virtualization/Windows/
/virtualization/Documents & Settings/
/virtualization/Program Files/
Вызов приложений
Запуск приложений планируется делать через меню Linux’а. Огранизовать это будет достаточно сложно, но реалистично. У VirtualBox’а есть консольная утилита, которая может запускать приложения в гостевой ОС из хоста. На этом и планируется основать вызов приложений из меню Linux.
Установка программ
По сути, установка программ не будет проблемой, но у меня есть более интересная идея. Можно использовать пакетную систему Linux для установки Windows приложений. Таким образом мы вся сила пакетного менеджера будет использована в Windows. Если делать репозитории с программами для Windows, то отпадет проблема вирусов и захламления системы.
Меню приложений
Если использовать пакеты в Windows-софтом, то при установке пакета просто копировать ярлык для запуска программы в гостевой системе. Эта проблема отпадает сама по себе.
Остальное
Многое уже реализовано VirtualBox’ом, так что интернет будет работать сразу, usb — тоже и еще много чего. На стадии идеи тяжело все продумать наперед. Так что пока остановлюсь.
Что мы в итоге получим?
Мы получим Linux c полной поддержкой Windows приложений. Почему почти? Потому, что единственное, что не будет работать — это мощные приложения, использующие DirectX, но над этим ведётся работа. Все остальное зависит от мощности компьютера. Так же можно будет завести почти любое USB-устройство, которое не хотело работать с Linux. Тем самым сводя неудобство пользования Linux от нехватки привычного софта к нулю. То есть мы берём безопасность и функциональность Linux и мощь софта от Windows.
И кому это нужно?
Во первых людям, которым нравится Linux, но бесит отсутствие привычного софта. Или тем, кому не хватает 1-го или 2-ух профессиональных приложений, из-за которых они не могут пользоваться только Linux. Или тех, кто хочет изучить Linux, но не переходить резко на нативные приложения. Будет в помощь тем, кто хочет перейти на Linux.
В чем проблема?
Проблем много. Главная — мы по прежнему будем использовать Windows. Так же я не знаю, что будет с лицензиями. Можно ли будет обрезать купленный нами Windows так, как нам хочется? Так же мы теряем кучу ресурсов компьютера. Без процессора с аппаратной виртуализацией это будет один большой тормоз и ещё будет нужно много оперативной памяти. Для комфортной работы 3-4 Гб.
Что дальше?
Мне интересно узнать мнение сообщества. Возможно это бредовая идея, а может неплохая. Организация подобного проекта займет очень много времени и сил и никогда не будет реалиована одним человеком. Если вы посчитаете эту идею интересной, то можно будет собраться вместе и вложить свой вклад в Linux.