Конфигурирование 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

tt 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

emumouse . com

exitemu . com

lredir.com

unix . com

Выдвигает дисковод CD-ROm

Настраивает драйвер мыши DOSEmu

Выход из DOSEmu

Переадресует каталог Unix в символ диска DOS

Выполняет команду Linux из DOSEmu