Назад Вперед Оглавление

2. Параметры конфигурации

This section of the document by Hans, <lermen@fgan.de>. Last updated on January 31, 1998.

Основную часть конфигурирования DOSEMU производит при запуске, и по умолчанию ищет общесистемную конфигурацию в файле /etc/dosemu.conf, которая может быть дополнена пользовательской в  /.dosrc и дополнительными параметрами командной строки (ключ -I). Встроенная конфигурация DEXE-программ передается с использованием техники -I, и использует те же правила, что и ключ -I.

На самом деле /etc/dosemu.conf входит как составная часть в глобальный конфигурационный скрипт /var/lib/dosemu/global.conf, но нормальному пользователю не стоит даже задумываться о его редактировании, достаточно одного dosemu.conf Структура файла global.conf детально описана в README-tech.txt, и здесь опущена. Однако,  /.dosrc и -I используют тот же синтаксис, поэтому, если вы делаете нечто особое (после того, как достаточно познакомились с DOSEMU), вам может потребоваться заглянуть и туда.

Первым ищется (и интерпретируется до любого другого конфигурационного файла, например, global.conf или dosemu.conf) файл /etc/dosemu.users. В нем устанавливаются основные права:

Каждая строка в dosemu.user соответствует ровно одному пользователю, специальный пользователь 'all' обозначает любого ранее не упомянутого пользователя. Формат:


  [ <login> | all ] [ confvar [ confvar [ ... ] ] ]

Ниже приведен пример из etc/dosemu.users.secure, который можно скопировать в /etc/dosemu.users.


  root c_all     # root-у можно все

  nobody guest   # переменная 'guest' помечена в global.conf

                 # to allow only DEXE execution

  guest guest    # пользователь guest аналогичен `nobody'

  all restricted # все остальные имеют стандартные ограничения

Отметим, что 'restricted' проверяется в global.conf и отключает все возможности, могущие повлиять на безопасность. Установка 'guest' автоматически устанавливает 'restricted'.

Тем не менее, при первом знакомстве с DOSEMU лучше использовать etc/dosemu.users.easy, который содержит просто


  root c_all  

  all c_all

и позволяет все всем. Подробнее о безопасности читайте во второй главе README-tech.txt.

После /etc/dosemu.users интерпретируется /etc/dosemu.conf (через global.conf) и только при анализе global.conf дается доступ ко всем параметрам конфигурации.

dosemu.conf (global.conf) проверяет переменные конфигурации, установленные в etc/dosemu.users и может при необходимости включать дополнительные файлы конфигурации. Но как только интерпретация /etc/dosemu.conf (global.conf) закончена, при последующей интерпретации .dosrc и параметров ключа -I доступ к элементам, влияющим на безопасность, ограничивается сообразно классу доступа.

Подробности настройки и функционирования системы безопасности смотрите в README-tech.txt, а пока вам понадобится только описание /etc/dosemu.conf.

2.1 Формат /etc/dosemu.conf

Все установки в dosemu.conf - это просто переменные, которые интерпретируются в /var/lib/dosemu/global.conf и имеют вид


  $_xxx = (n)

или

  $_zzz = "s"

где 'n' это числовое или булевское значение, а 's' - строка. Учтите, что скобки нужны, т.к. иначе парсер не сможет разобрать числовое выражение. Для чисел можно использовать выражения ( например, (2*1024) ), а строки могут сливаться (конкатенироваться) как в этом примере:


  $_zzz = "This is a string containing '", '"', "' (quotes)"

Здесь конкатенируется список строк, разделенных запятыми.

Управление отладочной информацией

DOSEMU поможет вам найти ошибки, если вы включите отладочную информацию. Она будет выводиться в файл, определенный опциями '-o file' либо '-O' (в последнем случае выводит в stderr). В dosemu.conf можно предустановить этот параметр через


  $_debug = "-a"

где строка содержит то, что обычно передается через ключ командной строки '-D' (подробнее см. man).

Основные параметры эмуляции

Чтобы задействовать прерывания таймера типа INT08, установите параметр в on или off


  $_timint = (on)

Показывать ли сопроцессор задачам DOS


  $_mathco = (on)

Какой тип процессора эмулировать (ВНИМАНИЕ: это не обязательно тот, на котором вы работаете, но установки не должны превышать возможности имеющегося CPU). Разрешенные значения: 80(345)86


  $_cpu = (80386)

Чтобы позволить DOSEMU использовать счетчик циклов Pentium для лучшей обработки времени


  $_rdtsc = (on)   # or off

Для использования 'rdtsc' DOSEMU нужно знать точную тактовую частоту CPU. Обычно она определяется автоматически, но в случае ошибок можно указать ее явно:


  $_cpuspeed = (166.666)  # 0 = разрешить определение DOSEMU

Если у вас есть карта PCI, вы можете разрешить DOSEMU доступ к конфигурированию PCI


  $_pci = (on)    # or off

Распределение памяти, которое видно DOS-у:


  $_xms = (1024)          # in Kbyte

  $_ems = (1024)          # in Kbyte

  $_ems_frame = (0xe000)

  $_dpmi = (off)          # in Kbyte

  $_dosmem = (640)        # in Kbyte, < 640

Учтите, что (в отличие от настоящего DOS) эти сегменты памяти выделяются по-отдельности, поэтому DOS, вероятно, покажет другие значения для 'расширенной' памяти. Включение DPMI и выделение ему памяти может вызвать проблемы с безопасностью, поэтому следует либо не давать доступа к DOSEMU обычным пользователям (через /etc/dosemu.users), либо присвоить им аттрибут 'restricted' (см. выше).

У DOSEMU есть некоторые возможности, которые могут нарушить систему безопасности и которые поэтому не следует использовать на "открытых" машинах. Для хотя бы минимальной защиты используйте следующее:


  $_secure ="ngd"  # secure for: n (normal users), g (guest), d (dexe)

                   # empty string: depending on 'restricted'

В строке выше указано то, что может присутствовать либо отсутствовать, например

  $_secure ="d"

будет влиять только на выполнение DEXE-файлов. Если вы не относитесь к 'restricted' пользователям (что задается в /etc/dosemu.users), эти установки действовать не будут. Чтобы полностью отключить проверки на безопасность установите

  $_secure ="0"

Аналогично можно "вычеркнуть" какой-либо хост, с которого нежелательно давать доступ к DOSEMU


  $_odd_hosts = ""    # черный список вида

                      #      "lucifer.hell.com billy.the.cat"

  $_diskless_hosts="" # черный список "hacker1 newbee gateway1"

Элементы в списке разделяются пробелами, "odd_hosts" - проверка на удаленный логин, 'diskless_hosts' означает машины, которые монтируют полное дерево каталогов, следовательно, указанный компьютер - тот, на котором работает dosemu, а не удаленный. Подробнее читайте в README-tech.txt .

Если вы хотите иметь смешанный доступ к файловой системе, с которой запускается dosemu ("натуральный" и через dosemu), может потребоваться два отдельных набора из 'config.sys,autoexec.bat,system.ini'. DOSEMU умеет подменять расширения имен файлов, поэтому DOS получит другие файлы при запуске из-под эмулятора.


  $_emusys = ""    # empty or 3 char., config.sys   -> config.XXX

  $_emubat = ""    # empty or 3 char., autoexec.bat -> autoexec.XXX 

  $_emuini = ""    # empty or 3 char., system.ini   -> system.XXX

Как можно заметить с первого взгляда, DOS не получит CPU в собственное распоряжение. А как много ему отдаст Linux, зависит от параметра 'hogthreshold'. Его значение определяет, насколько Dosemu будет любезно предоставлять возможность выполнения другим программам.


  $_hogthreshold = (1)   # 0 == максимум для DOSEMU

                         # 1 == максимум для Linux

                         # >1 чем выше, тем медленнее  DOSEMU

Если у вас есть оборудование, не поддерживаемое Linux, но для которого есть DOS-драйвер, то может потребоваться разрешить передачу IRQ в DOS


  $_irqpassing = ""  # список номеров IRQ (2-15) для передачи DOS

                     # например,"3 8 10"

Здесь вы сообщаете dosemu что делать, когда DOS захочет сыграть на спикере:


  $_speaker = ""     # or "native" or "emulated"

При помощи следующих установок можно получить управление реальными портами машины. Но: ВНИМАНИЕ: РАЗРЕШЕНИЕ ДОСТУПА К ПОРТАМ НАРУШАЕТ БЕЗОПАСНОСТЬ, КРОМЕ ТОГО, НЕКОТОРЫЕ ПОРТЫ ОПАСНО ИСПОЛЬЗОВАТЬ. ПРОПУСТИТЕ ЭТОТ РАЗДЕЛ И НЕ ИЗМЕНЯЙТЕ НИЧЕГО В ЭТОЙ СЕКЦИИ, ЕСЛИ НЕ УВЕРЕНЫ АБСОЛЮТНО В ТОМ, ЧТО ДЕЛАЕТЕ.


  $_ports = ""  # список портов, например "0x1ce 0x1cf 0x238"

                # или "0x1ce range 0x280,0x29f 310"

                # или "range 0x1a0,(0x1a0+15)"

Терминалы

Этот раздел отностися к запуску dosemu на удаленной машине или в xterm. Теперь поддержка цветных терминалов встроена в DOSEMU. Этот раздел стоит пропустить и пользоваться установками по умолчанию, пока не настроите DOSEMU.


  $_term_char_set = ""  # отсутствие == automatic, иначе 'ibm' или 'latin'

  $_term_color = (on)   # терминал с поддержкой цвета

  $_term_updfreq = (4)  # промежуток между обновлениями (единицы: 20 ==1 секунда)

  $_escchar = (30)      # 30 == Ctrl-^, special-sequence prefix

'term_updfreq' - это число, обозначающее частоту обновления экрана терминала. Чем меньше число, тем чаще это происходит. Значение 20 дает частоту 1 раз в секунду, что очень мало. 'escchar' - число (ascii код меньше 32) задающее управляющий символ, используемый как префикс при посылке alt, shift, ctrl и функциональных клавиш. По умолчанию используется 30, т.е. Ctrl-ˆ. Например:


  F1 is 'Ctrl-^1', Alt-F7 is 'Ctrl-^s Ctrl-^7'.

  For online help, press 'Ctrl-^h' or 'Ctrl-^?'.

Установки клавиатуры

При запуске DOSEMU из консоли (в том числе удаленной) или X может понадобиться определить подходящую раскладку клавиатуры. Это делается либо выбором одной из внутренних таблиц клавиатуры, либо загрузкой внешной таблицы из /var/lib/dosemu/keymap/* (котоые вы можете модифицировать под свои нужды). Оба набора имеют одинаковые имена (хотя в /var/lib/dosemu/keymap/ вы можете добавлять свои):


  be              es-latin1       hu-latin2       sg

  de              finnish         it              sg-latin1

  de-latin1       finnish-latin1  keyb-no         sw

  dk              fr              no-latin1       uk

  dk-latin1       fr-latin1       po              us

  dvorak          hu              sf              

  es              hu-cwi          sf-latin1       

Внутренняя таблица клавиатуры определяется как:


  $_layout = "name"

где 'name' - одно из определенных выше. Для загрузки внешней таблицы нужно префикс load:

  $_layout = "load de-latin1"

Обратите внимание, что потребуется установить


  

  $_X_keycode = (on)

для использования этих возможностей под X, поскольку по умолчанию устанавливается нейтральная (us) клавиатура. Обычно правильные установки клавиатуры выдаются X-сервером.

На консоли может потребоваться непосредственный доступ к клавиатуре, особенно для игр, которые не используют BIOS/DOS для обработки нажатий.


  $_rawkeyboard = (1)

Однако, будте внимательны, если приложение зависнет, у вас может не получиться переключить консоль и выйти из этой ситуации. Детали восстановления см. в README-tech.txt (раздел Recovering the console after a crash).

'keybint (on)' позволяет более аккуратную обработку прерываний клавиатуры. Этот режим немного нестабилен, но клавиатура работает заметно лучше, когда он включен.


  $_keybint = (on)     # emulate PCish keyboard interrupt

Поддержка X

Когда dosemu работает в собственном X-окне (не в xterm), может потребоваться дополнительная настройка. Далее следует список установок и краткое описание их назначения. Более подробное описание можно найти в главе 2.2.14 (X Support settings) файла README-tech.txt


$_X_updfreq = (5)       # интервал обновления (единицы: 20 == 1 секунда)

$_X_title = "DOS in a BOX" # Заголовок окна программы

$_X_icon_name = "xdos"  # Текст минимизированной иконки

$_X_keycode = (off)     # on == трансляция клавиатурных кодов через таблицы dosemu

$_X_blinkrate = (8)     # частота мерцания курсора

$_X_font = ""           # basename from /usr/X11R6/lib/X11/fonts/misc/*

                        # (without extension) e.g. "vga"

$_X_mitshm = (on)       # Использовать разделяемую память

$_X_sharecmap = (off)   # использовать общую палитру с другими задачами

$_X_fixed_aspect = (on) # Сохранять отношение сторон при растягивании окна

$_X_aspect_43 = (on)    # Использовать отношение сторон 4:3 в графике

$_X_lin_filt = (off)    # Линейная фильтрация для >15 bpp interpol.

$_X_bilin_filt = (off)  # Билинейная фильтрация для >15 bpp interpol.

$_X_mode13fact = (2)    # начальный множитель для видеорежима 0x13 (320x200)

$_X_winsize = ""        # "x,y" начального размера окна

$_X_gamma = (1.0)       # коэффициент гамма-коррекции

$_X_vgaemu_memsize = (1024) # размер (в Kbytes) фрейм-буфера

                        # для эмуляции vga

$_X_lfb = (on)  # использовать линейный фрейм-буфер для VESA режимов

$_X_pm_interface = (on) # использовать  protected mode interface для VESA режимов

$_X_vesamode = ""       # "xres,yres ... xres,yres"

                        # Список добавляемых vesa режимов. Представляет

                        # собой разделенный запятыми список пар "xres,yres"

Видеоустановки (только для консоли)

!!ВНИМАНИЕ!!: ЕСЛИ ВЫ ВКЛЮЧИТЕ ГРАФИКУ НА НЕСОВМЕСТИМОМ АДАПТЕРЕ, ТО МОЖЕТЕ ПОЛУЧИТЬ ПУСТОЙ ЭКРАН ИЛИ МУСОР ДАЖЕ ПОСЛЕ ВЫХОДА ИЗ DOSEMU. См. в README-tech.txt (раздел Recovering the console after a crash).

Начинайте в текстовом режиме, используя следующие установки в dosemu.conf


  $_video = "vga"         # один из: plainvga, vga, ega, mda, mga, cga

  $_console = (0)         # использовать видео на консоли

  $_graphics = (0)        # использовать BIOS карты для установки режима

  $_videoportaccess = (1) # разрешить доступ к видеопорту в граф. режиме

  $_vbios_seg = (0xc000)  # адрес видео-BIOS (e.g. 0xe000)

  $_vbios_size = (0x10000)# размер BIOS (e.g. 0x8000)

  $_vmemsize = (1024)     # размер буфера регенерации

  $_chipset = ""       

  $_dualmon = (0)         # если у вас один vga _и_ один hgc (2 монитора)

После того, как это заработает, и если у вас поддерживаемая DOSEMU видеокарта, можно переключиться в графику изменив настройку так:


  $_graphics = (1)        # использовать BIOS карты для установки режима

Если у вас 100% совместимая с VGA карта, это может работать, но лучше результат будет, если вашу карту поддерживает DOSEMU, и вы скажете ему об этом:


  $_chipset = "s3"        # одна из: plainvga, trident, et4000, diamond,

                          # avance, cirrus, matrox, wdvga, paradise

S3 - это только пример, вы должны установить правильный тип, иначе скорее всего снесете себе видеорежим.

Диски и дискеты

Установки параметров в dosemu.conf подгоняются под рекомендованное использование диска и доступа к ГМД. Существуют и другие способы, подробнее о них можно посмотреть в README-tech.txt (и может потребоваться модификация global.conf). Мы настоятельно рекомендуем использовать предлагаемый здесь подход. Вот типовые установки:


  $_vbootfloppy = ""    # для загрузки с виртуальной дискеты:

                        # имя образа диска в /var/lib/dosemu

  $_floppy_a ="threeinch" # или "fiveinch" или пусто, если отсутствует

  $_floppy_b = ""       # то же для B:



  $_hdimage = "hdimage.first" # список образов диска в /var/lib/dosemu

                        # расположенных в порядке

                        # "hdimage_c hdimage_d hdimage_e"

  $_hdimage_r = $_hdimage # образы дисков для режима 'restricted' (если они отличаются)

При установке DOSEMU (make install) в файл /var/lib/dosemu/hdimage.first записывается образ загрузочного диска. Он содержит урезанную вырсию FreeDos, просто для демонстрации работоспособности. Это файл, содержащий виртуальный образ файловой системы DOS-FAT. Загрузившись с него, вы (или autoexec.bat) можете использовать 'lredir' для доступа к любому каталогу Linux как к досовскому диску (в том числе и к примонтированным через -t msdos). См. главу 6 (Using lredir), а дополнительные детали создания собственного (лучшего) образа диска см. в главе 4.3 данного README (Making a bootable hdimage for general purpose). Глава 4.4 описывает также, как записывать файлы на образ диска и читать их оттуда.

Теперь, что же означает vbootfloppy? Альтернативой загрузки с виртуального "диска" может служить загрузка с виртуальной "дискеты", которая создается просто командой 'dd if=/dev/fd0 of=floppy_image'. Если это загрузочная дискета DOS, то


  $_vbootfloppy = "floppy_image"

будет загружаться как с этой дискеты. После запуска в DOS вы сможете получить доступ к дисководу виртуально "вынув диск" через 'bootoff.com'

COM порты и мыши

Мы уупростили настройку мыши и последовательных портов и проверили зависимости между ними. Если все строки в в примере ниже пусты, то ни мышь, ни последовательные порты не доступны. Учтите, что вам не нужна установка драйвера mouse.com в DOS-е, DOSEMU имеет встроенный драйвер. Ниже приводится пример установки.


  $_com1 = ""           # т.е. "/dev/mouse" или "/dev/cua0"

  $_com2 = "/dev/modem" # т.е. "/dev/modem" или "/dev/cua1"



  $_mouse = "microsoft" # одна из: microsoft, mousesystems, logitech,

                        # mmseries, mouseman, hitachi, busmouse, ps2

  $_mouse_dev = "/dev/mouse" # один из: com1, com2 or /dev/mouse

  $_mouse_flags = ""    # пустой список или один и более из:

                        # "emulate3buttons cleardtr"

  $_mouse_baud = (0)    # baudrate, 0 == не устанавливать

Этот пример позволяет работать модему на COM2, COM1 свободен (например, в настоящем DOS-е к нему подсоединена мышь, и вы не хотите менять конфигурацию модемных программ при перезагрузках между DOS и Linux)

Тем не менее, вы можете использовать свой любимый досовский драйвер мыши и разрешить ему прямой доступ к COM1 изменив следующие переменные (остальные остаются неизменными)


  $_com1 = "/dev/mouse"

  $_mouse_dev = "com1"

И наконец, если в Linux работает мышь PS2, используйте встроенный драйвер (не ваш mouse.com). Как и раньше, прочие параметры не меняются:


  $_mouse = "ps2"

  $_mouse_dev = "/dev/mouse"  

Если используется мышь PS2 либо имеется более 2 последовательных портов, можно назначить любое последовательное устройство на COM1 и COM2. Порядок значения не имеет:


  $_com1 = "/dev/cua2"

  $_com2 = "/dev/cua0"

Принтеры

Принтер эмулируется передачей печатаемых данных на обычный Linux принтер. Настройки ниже говорят DOSEMU, какой из принтеров использовать. 'Timeout' сообщает DOSEMU, сколько времени ждать после последней выдачи в LPT1 перед тем, как счесть работу завершенной и сбросить данные в очередь печати.


$_printer = "lp"        # имя (из /etc/printcap) принтера, который будет LPT1

$_printer_timeout = (20)# задержка перед печатью

Работа с сетью под DOSEMU

Включите следующий параметр в 'on' если нужна эмуляция IPX/SPX. Загружать IPX.COM в DOS-сессии не требуется (но эта опция не эмулирует LSL.COM, IPXODI.COM и т.п.). И учтите: ядро должно быть сконфигурировано с поддержкой протокола IPX.


  $_ipxsupport = (on)

Разрешение трансляции Novell 8137->raw 802.3 в новом пакетном драйвере.


  $_novell_hack = (on)

Если вы используете драйвер dosnet, включите поддержку 'multi' пакетного драйвера:


  $_vnet = (on)

Дополнительная информация в главе 24 (Net code)

Звук

Звуковой драйвер в настоящее время неработоспособен. Однако, вот установки, которые потребуются для эмуляции SoundBlaster при помощи звуковой подсистемы LINUX.


$_sound = (off)           # поддержка звука on/off

$_sb_base = (0x220)       # базовый IO-адрес (HEX, шестнадцатеричное)

$_sb_irq = (5)            # IRQ

$_sb_dma = (1)            # канал DMA

$_sb_dsp = "/dev/dsp"     # путь к звуковому устройству

$_sb_mixer = "/dev/mixer" # путь к управлению микшером

$_mpu_base = "0x330"      # базовый адрес MPU-401 (HEX)

                          # (пока не реализовано)


Назад Вперед Оглавление
Перевод: Валерий Груздев (grue@vpti.vladimir.ru)

Banner.Novgorod.Ru