Конфигурирование DOSEmu

Существует ряд конфигураций, используемых для выполнения DOSEmu в Linux. Перечислим их.

Чтобы упростить задачу и пояснить работу программного обеспечения, в главе рассмотрена только загрузка DOS с образа диска. Более сложные конфигурации, включая загрузку с других носителей, хорошо описаны в документации, которая после установки DOSEmu находится в каталоге /usr/doc/dosemu/.

Примечание

Подробная информация и документация для DOSEmu находится в http: / /www. dosemu. org. Полезные сведения включены в файлы HOWTO на сайте http://www.dosemu.org/docs/HOWTO/. С этого сайта можно загрузить последнюю версию DOSEmu с полными инструкциями по инсталляции!

Чтобы запустить DOS, необходимо иметь файл конфигурации /etc/dosemu.conf. Это очень сложный файл, который имеет обширную документацию.

Пакет DOSEmu облегчает эту задачу, поскольку имеется предварительно сконфигурированный файл образа диска и файл dosemu. conf для загрузки с образа диска. Сам образ диска находится в /var/lib/dosemu/hdimage. Он содержит бесплатный вариант DOS FreeDOS и множество полезных команд и утилит, среди которых fdisk, format, unix2dos и Iredir (утилита переадресации каталогов Linux в символы дисков DOS).

Чтобы пояснить, что понимается- под конфигурированием среды DOSEmu, приведем содержимое включенного по умолчанию в Red Hat Linux 7.1 файла dosemu.conf:

############################# # Это файл /etc/dosemu.conf, содержащийся в /var/lib/dosemu/global.conf # # Конфигурация Linux DOSEMU для версий >= 3 (dosemu-0.97.1) # # ./doc/README.txt (раздел 2.) содержит описание синтаксиса и # использования dosemu.conf. # # # Права доступа определены в # # /etc/dosemu. users # ###################################### # Примечания для редактирования этого раздела : #- . # В $ ххх = (n) n - это числовая или двоичная величина # = # В $ zzz = "s" s - это строка # # Пожалуйста, редактируйте только между скобками и кавычками, # остальное сохраняйте нетронутым. | $_debug = "-а" # тот же формат, что в опциях команды -D # (но без -D впереди) $_features= " # список временных установок, смотрите примечания # в файле ChangeLog. Например", "0:1 2:0", # который означает: # установить feature 0 в 1 и feature 2 в 0. $_timint = (on) # эмуляция типа прерывания таймера INT08 $_matheo = (on) # или отключение $ сри = (80386) # эмулятора CPU, допустимые значения: 80 [345] 86 $ rdtsc = (off) # если возможно использовать в Pentium # счетчик цикла $_cpuspeed = (0) # 0 = калиброванный dosemu, иначе указать # (например, 166.666) $_pci = (off) $_xms = (1024) # Кбайт $_ems = (1024) # Кбайт $_ems_frame = (0xe000) $_dpmi = (off) # Кбайт $_dosmem = (640) # Кбайт, < 640 $_hardware_ram = " # список значений сегмента /диапазонов, как # "0xc8000 диапазон 0xcc000.0xcffff" $_securc ="hgd" # безопасность для: п (обычные пользователи) , # g (гости) , d (dexe) # пустая строка: зависит от 'restricted' # "0": всегда опасный (не рекомендуется) $_odd_hosts = " # черный 'список, как "lucifer.hell.com billy, the. cat" $_diskless_hosts=" ' # черный список, как "hackerl newbee gatewayl" $_emusys = " # пустой или 3 симв., config.sys -> config.XXX $_emubat = " # пустой или 3 симв., autoexec.bat -> autoexec. XXX $_emuini = " # пустой или 3 симв., system.ini -> system. XXX $_hogthreshold = (1) # 0 — вся мощность CPU для DOSEMU $_irqpassing = " # список номеров IRQ (2-15) , переданных DOS, # например "3 8 10" $_speaker = " # или "native", или "emulated" $_term_char_set = " # Глобальная кодовая страница и выбор # набора символов. # "" — автоматическая, или: ibm, latin, # latinl, Iatin2 t * $_term_color = (on) # терминал с поддержкой цвета $_term_updfreq = (4) # время между обновлениями # (единицы: 20 == 1 секунда) $_escchar = (30) # 30 == Ctrl-", приставка спец. последовательности $_rawkeyboard = (0) # обход нормального ввода с клавиатуры - '# возможна опасность $_layout = "auto" t одно из: f innish (-latinl) , de(-iatinl) , be', it, us # uk, dk(-latinl) ,. keyb-no, no-latinl, dvorak, po # sg (-latinl), fr (-latinl) , sf (-latinl) , es( -latinl) # sw, hu(-latin2), hu-cwi, keyb-user # hr-cp852, hr-latin2 # или 'auto' (для генерации таблицы из текущих # параметров консоли Linux) $_keybint = (on) # эмуляция прерывания клавиатуры ПК $_X_updfreq - (5) # Время между обновлениями (единицы: 20 =»= 1 секунда) $_X_title = "DOS in а ЮХ" # Надпись в строке заголовка окна $_X_icon_name = "xdos" # Текст для значка, когда минимизировано $_X_keycode = (auto) # on == перевод клавиатуры через таблицу # символов dosemu $_X_blinlcrate = (9) # скорость мерцания курсора $_X_font = "" # basename из /usr/XHRG/lib/X11/fonts/misc/* # (без расширения) например, "vga" $_X_mitsbm = (on) # Использовать разделяемые расширения памяти $_X_sharecmap = (off) # Разделять карту цветов с другими приложениями $_X_fixed_aspect = (on) # Установить фиксированный размер для # графического окна $_X_aspect_43 = (on) # Всегда использовать отношение 4:3 для графики $_X_lin_filt = (off) # Использовать линейный фильтр для интерполяции >15 Ьрр $_X_bilin_filt° = (off) # Использовать билинейный фильтр для # интерполяции >15 Ьрр- $_X_model3fact = (2) # Фактор начального размера для видеорежима 0x13 # (320x200) $_X_winsize = " # "х,у" начального размера окна # (по умолчанию с плавающей точкой) $_X_gamma = (1.0) # гамма-коррекция $_X_vgaemu_memsize = (1024) # размер (в Кбайтах) буфера фреймов # для эмуляции vga $_X_lfb = (on) # использовать линейный буфер фрэймов в режиме VESA $_X_pm_interface = (on) # использовать защищенный режим интерфейса # для режима VESA $_X_mgrab_key = " # имя KeySym для активации захвата мыши, # пусто == off $_X_vesamode = " # "xres , yres ' . . . xres , yres" # список vesamodes для добавления. Список содержит # пары, разделяемые пробелами: "xres, yres" $_video = "vga" # одно из: plainvga, vga, ega, mda'," mga, cga $_console = (0) # использовать видео 'console' $_graphics = (0) # использовать BIOS карты для установки графики $_videoportaccess = (1) # позволить доступ к видеопорту, # когда доступно 'graphics' $_vbios_seg = '(0xc000) # установка адреса VBIOS (например, ОхеООО) $_vbios_size = (0x10000) # установка размера BIOS (например, 0x8000) $_vmemsize = (1024) # размер буфера регенерации $_chipset = # одно из: plainvga, trident, et4000, diamond, avance # cirrus, matrox, wdvga, paradise, ati, s3, sis $_dualmon = (0) # если имеется один vga. и один hgc (2 монитора) $_vbootf loppy = "" # если необходимо загружаться с виртуального дисковода: # имя "файла образа диска под /var/lib/dosemu # например, "f loppyimage" отключает $ hdimage # "floppyimage +hd" не отключает $ hdimage $_floppy_a ="threeinch" # или "fiveinch", или "atapi", или пусто, # если не существует. # Устройство может быть добавлено как # J'threeinch:/dev/fd0" $_floppy_b = "" # dito для В: $_hdimage = "hdimage . first' # список hdimages под /var/lib/dosemu # назначенный в порядке, подобном # "hdiraage_c hdimage_d hdimage_e" # Если имя начинается с Vdev/', то используется # раздел доступа вместо виртуального hdimage. # например, "/dev/hdal" или "/dev/hdal:ro" # только для чтения. # Текущие монтированные устройства и swap # отменяются. # Hdimages и устройства могут быть смешаны, # например, "hdimage_c /dev/hdal /dev/hda3 :ro" # Заметим, wholedisk' не поддерживается. $_hdimage_r = $_hdimage # hdimages для ограниченного доступа (если иначе) $_aspi = "" # список общих устройств SCSI доступных для # встроенного драйвера aspl # (формат записи 'устройство: тип: цель', например, # "sg2:WORM sg3 : Sequential-Access: 6 sg4: CD-ROM" или # "sg2:4 sg3:l:6 sg4:5" (что одинаково)) $_coml = " # например, "/dev/mouse" или "/dev/cuaO" $_com2 = " " # например, "/dev/modem" или "/dev/cual" $_com3 = " # dito "/dev/cua2" $_com4 = "" # dito "/dev/cua3" $_ttylocks = " # Каталог Lock (например "/var/lock") # по умолчанию ("") /usr/spool/uucp $_mouse = " # одно из: microsoft, mousesystems, logitech, * mmseries # mbuseman, hitachi, busmouse, ps2 $_mouse_dev = # одно из: com1, com2, com3, com4 или /dev /mouse $_mouse_flags = " # список пустой или один или более: # "emulateSbuttons cleardtr" $_mouse_baud = (0) # скорость в бодах, 0 == не установлено $_pr inter = "Ip" # список (/etc/printcap) имен принтеров, в виде # LPT1, LPT2, LPT3 (не все необходим, пусто - если нет) $_printer_timeout = (20) # время задержки в секундах перед спуллингом $_ports = "" # список номеров портов, например, "Oxlce 0xlcf 0x238" # или "0xlce диапазон 0x280, Ox29f 310" # или "диапазон 0xla0, (OxlaO+15)" $_ipxsupport = (off) # или on $_novell_hack = (off) $_vnet = (off) # 'on' для многопакетного (используется для dosnet) $_sound = (off) # звуковая поддержка on/off $_sb_base = (0x220) $_sb_irq = (5) $_sb_dma = (1) $_sb_dsp = "/dev/dsp" $_sb_jnixer = "/dev/mixer" $_ropu_base = "0x330"

К счастью, в глубоком реконфигурировании нет необходимости. Работая с текущей версией DOSEmu (I.O.I), вы должны будете установить образ диска и загрузочный каталог и затем скопировать ряд стандартных загрузочных MS-DOS файлов в этот каталог.

Для установки образа диска (hdimage. first) и загрузочного каталога (/var/ lib/dosemu/ bootdir. first) можно воспользоваться следующими командами, расположенными в каталоге

/var/lib/dosemu/: $ /var/lib/dosemu/setup-hdimage $ /var/lib/dosemu/setup-bootdir 

К сожалению, FreeDOS не поддерживает управление Linux-файлами и каталогами из эмулятора DOS. Для реализации такого управления вам потребуются три базовых файла конфигурации DOS. Например, если вы располагаете любым загрузочным диском MS-DOS или PC-DOS, скопируйте файлы COMMAND.COM, IO.SYS и MSDOS.SYS в созданный каталог /var/lib/dosemu /bootdir.first.

Допустим, что эти файлы расположены на несмонтированном гибком диске, который находится в накопителе /dev/ f d0 (аналог DOS-устройства А:). Поскольку Linux учитывает регистр, необходимо использовать следующие команды, чтобы заменить FreeDOS-версии этих файлов:

$ mcopy a:io.sys /var/lib/dosemu/bootdir.first/io.sys $ mcopy a:command.com /var/lib/doseim/bootdir.first/cofflmand.com

Примечание

Упомянутые системные файлы можно скопировать с любой системной дискеты MS-DOS версии 4.0.1 или более свежей. Этот метод применим даже для некоторых других версий DOS, равно как и для загрузочных дисков Windows 95/98.

В завершение создайте или отредактируйте конфигурационный файл . dosemurc в своем каталоге. В этом файле должна быть одна строка, указывающая системе Linux расположение соответствующих конфигурационных файлов DOS:

$_hdiraage = "bootdir.first"

Запуск DOS

Простейший способ запуска DOSEmu состоит в использовании команды dos в консоли или окне xterm. По команде

$ dos

загружается и запускается DOSEmu с устройства начальной загрузки, определенного в /etc/dpsemu. conf. По умолчанию в Red Hat Linux 7.1 это означает загрузку с указанного файла образа диска.

Вопреки выданному сообщению, запущен эмулятор версии 1.0.1. После запуска DOS можно использовать стандартные команды и синтаксис DOS для запуска программ с дискет или запуска приложений, находящихся в переадресованных каталогах.

Загрузка DOS в отдельном окне X

DOS можно запускать как в текущем окне, так и в своем собственном окне при выполнении X Windows. Для запуска DOS в собственном окне X Windows используется команда

$ xdos

Фактически, эта команда является ссылкой на основной двоичный файл dos. Выполнение программы через ссылку xdos имеет тот же эффект, что и команда

$ dos -X

Выполнение DOS в ее собственном Х-окне

Полезные команды DOSEmu

Образ диска, распространяемый с DOSEmu, содержит несколько полезных команд и утилит (некоторые из них приведены в табл. 30.1). Эти и многие другие команды находятся в каталогах с: \bin и с: \dosemu. Для этого запустите DOSEmu, используя образ диска, заданный по умолчанию.

Табл. 30.1. Некоторые команды DOSEmu

КомандаОписание
eject.comВыдвигает дисковод CD-ROM
emumouse.comНастраивает драйвер мыши DOSEmu
exitemu.comВыход из DOSEmu
lredir.comПереадресует каталог Unix в символ диска DOS
unix.comВыполняет команду Linux из DOSEmu