Запуск DOS-приложения в Linux
Необходимость запуска DOS-приложений под Linux возникает не часто, но случается. Вот недавно и со мной случилось, решил поделиться опытом.
А нужно было запустить кем-то, когда-то написанное приложение для поликлиники, работающее на Foxpro под DOSом, в Linux, т.к. денег на покупку Windows лицензий не нашлось.
Исходные данные:
Suse Linux Enterprise Desktop 10.3 — рабочие станции.
Suse Linux Enterprise Server 10.3, на нем шара на Samba (я же до этого и расшаривал для работы с Windows рабочих станций, т.к. на лицензию для Win-сервака тоже денег не было), имя шары, как ни странно, — SHARE.
Ставим из репозитория, или отдельно скачиваем dosemu-xxx.rpm.
Ещё нам понадобятся кириллические шрифты (далее по тексту папка XFonts), не помню уже где я их взял, приложу в архиве к статье.
Создаём папку, куда смонтируем шару (делаем из под root):
su
/mnt/dos
chmod 777
и прописываем монтирование в fstab:
echo "//192.168.0.130/SHARE /mnt/dos cifs iocharset=utf8,codepage=cp866,noperm,forcemand,direct,nounix,nolock,username=user,password=userpassword,rw 0 0" >> /etc/fstab
и монтируем:
mount /mnt/dos
небольшое пояснение: 192.168.0.130 — IP сервера, user и userpassword берём из пользователей на сервере, которым разрешён доступ к Samba-шаре.
Дальше копируем шрифты:
cp -rf XFonts /usr/X11R6/lib/X11/fonts/
и прорписываем папку подобно остальным шрифтам в файле /etc/X11/xorg.conf, и добавляем их в систему командой:
/usr/sbin/fonts-config
В /etc/dosemu.conf добавляем или изменяем в соответствующих разделах следующие опции (у меня в итоге только эти опции и остались):
Ко всем опциям в самом файле есть подробные подсказки.
В файл autoexec.bat, находящийся в папке /usr/share/dosemu/drive_z пишем следующее (!!!при копировании # и пояснения убрать!!!):
Для полной ясности вот содержание lin.bat (!!!при копировании # и пояснения убрать!!!):
Делаем первый запуск, пишем в терминале команду (уже из под юзера):
dosemu
получим фигвам, потому что нет файла lin.bat, исправляем созданием в домашней директории, в папке .dosemu/drive_c (папка создаётся при первом запуске эмулятора) этого файла с вышеприведённым содержанием.
Ещё раз запускаем dosemu и вуаля, наша досовская прога работает, показывает текст на русском языке и даже распечатывает под Linux.
Мои изыски относились к определённой программе, но думаю таким способом, с заменой путей и имён файлов, запустятся если не все, то многие приложения работающие под DOS.
P.S.
Если при запуске dosemu ловим:
>LOWRAM mmap: Недопустимый аргумент
То дописываем в /etc/sysctl.conf
vm.mmap_min_addr=0
Ну и перезагружаемся.
Обсудить на форуме (комментариев 0).