Глава 38 Сосуществование операционных систем

Глава 38 Сосуществование операционных систем

Как бы мы ни старались, а полностью жить в операционной системе Linux в современном мире не получается. Так сложилась жизнь, что множество программ написаны под операционные системы MS Windows или DOS. И зачастую по тем или иным причинам эти программы незаменимы. Поэтому данную проблему необходимо решать – вариант «или-или» нам не подходит.

Существует тривиальное решение этого вопроса – установить на компьютер две или три операционные системы и перезапускать компьютер, когда необходимо поработать в Windows NT. Но наверняка такое решение не понравится никому – неоптимальное расходование дискового пространства, постоянные перезагрузки компьютера и, как следствие, непроизводительные затраты времени. Поэтому желательно решить эту проблему по-другому.

Сосуществование двух или более операционных систем необходимо рассматривать комплексно. Проблемы, возникающие при взаимодействии разных операционных систем, можно разбить на следующие виды.

1.  Передача файлов е одной операционной системы в другую. Это условие решается созданием протоколов передачи файлов и информации, которыми на данном этапе являются протоколы Интернета.

2.  Возможность работать с дисками и данными другой операционной системы. Это условие неплохо решено для операционной системы Linux – она поддерживает файловые системы FAT, VFAT, NTFS и т. п. Со стороны операционных систем производства Microsoft все выглядит намного хуже – поддерживаются только файловые системы, разработанные Microsoft.

3.  Возможность выполнять программы, созданные для другой операционной системы. Для решения этой задачи есть два подхода – разработка виртуальных машин и создание эмуляторов операционной системы:

виртуальные машины позволяют создать внутри операционной системы «виртуальный» компьютер, на котором и выполняется альтернативная операционная система и ее приложения. Для виртуальной машины все равно, какая операционная система будет установлена внутри нее, поскольку она обеспечивает псевдокомпьютер, на который и устанавливается операционная система. У этого подхода есть недостатки – мы вынуждены устанавливать на виртуальную машину альтернативную операционную систему и программное обеспечение, что не всегда возможно с точки зрения ресурсов и финансов. Несомненным достоинством виртуальной машины является полная эмуляция компьютера, и как следствие – возможность нормально запускать альтернативную операционную систему;

эмуляторы призваны создать для программ альтернативной операционной системы «нормальную среду обитания». Для сложной операционной системы практически невозможно создать нормально функционирующий эмулятор, особенно для закрытых коммерческих операционных систем.

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

Как видите – список небольшой, но охватывающий множество проблем сосуществования операционных систем.

Эмуляторы

Начнем описание с эмуляторов, поскольку исторически в операционной системе Linux они появились раньше, чем виртуальные машины. Так что, пойдем от простого к сложному.

DOSEmu

Эмулятор однозадачной, однопользовательской операционной системы MS-DOS. Вы скажете, что в эпоху развитой Windows эмулятор MS-DOS не актуален и будете неправы. Еще много программ, написанных под MS-DOS, находится в эксплуатации. Различные учетные, складские программы, программы отделов кадров и тому подобные АРМ, спокойно трудятся на своих рабочих местах. Достаточно много есть и хороших игр, написанных под MS-DOS, к примеру WarCraft II, Doom и Dune II. В свое время много специфических аппаратно-программных комплексов было разработано под MS-DOS, устройства эти эксплуатируются и по сегодняшний день.

Установка пакета DOSEmu не представляет сложности, поскольку этот пакет обычно входит в состав дистрибутива операционной ситемы. Поэтому переходим сразу к конфигурированию этого эмулятора DOS.

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

Пакет DOSEmu не отличается особой оригинальностью – конфигурационный файл называется dosemu.conf и находится в каталоге /etc. Помимо этого, каждый пользователь может создать в своем домашнем каталоге файл. dosrc, в котором можно откорректировать некоторые настройки DOSEmu для данного пользователя. Плюс к этим возможностям, поведение эмулятора можно изменить, используя параметры запуска.

На самом деле все записи в файле в dosemu.conf – это просто переменные, которые в последующем используются в /var/lib/dosemu/global.conf и имеют вид:

$_ххх = (n)

или

$_zzz = "s"

Описание параметров конфигурации сгруппировано по исполняемым функциям.

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

Для включения вывода отладочной информации DOSEmu необходимо в конфигурационный файл добавить следующую строку:

$_debug = «-а»

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

Отладочная информация будет выводиться в файл, определенный опциями '-о file' либо '-O' (в последнем случае выводит в stderr).

Основные параметры

• Разрешает или запрещает использование прерывания таймера INT08:

$_timint = (on|off)

• Позволяет либо запрещает задачам DOS использовать математический сопроцессор:

$_mathco = (on|off)

• Параметр определяет, какой тип процессора эмулировать:

$_cpu = (80386)

Можно установить тип процессора не выше существующего в компьютере. Разрешенные значения:

• 80386;

• 80486;

• 80586.

• Параметр разрешает или запрещает DOSEmu использовать счетчик циклов Pentium для лучшей обработки временных интервалов:

$_rdtsc = (on)

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

$_cpuspeed = (166.666)

• Разрешает DOSEmu доступ к конфигурированию PCI устройств:

$_pci = (on)

• Следующие параметры позволяют задать распределение оперативной памяти, которая доступна для DOS:

$_xms = (1024)

$_ems = (1024)

$_ems_frame = (0xe000)

$_dpmi = (off)

$_dosmem = (640)

• Следующий параметр определяет стиль поведения DOSEmu по отношению к процессорному времени, используемому DOSEmu:

$_hogthreshold = (1) # 0 – максимум процессорного времени для DOSEMU

# 1 – максимум процессорного времени для Linux

# >1 чем больше, тем меньше процессорного времени для DOSEMU

• В том случае, если на вашем компьютере установлено нестандартное оборудование, для которого отсутствует Linux-драйвер, но существует DOS-драйвер, часто необходимо разрешить использование соответствующего IRQ в DOS:

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

• Следующий параметр определяет, каким образом будет использоваться встроенный динамик:

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

• При помощи следующих параметров можно получить управление реальными портами компьютера, но с точки зрения безопасности этого делать ни в коем случае нельзя:

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

Терминалы

Этот раздел предназначен для DOSEmu, выполняемой на удаленном компьютере или в графическом терминале xterm.

• Определяет набор используемых шрифтов:

$_term_char_set = ""

• Разрешает использование цвета:

$_term_color = (on)

• Задает интервал между обновлениями экрана в 1/20 секунды:

$_term_updfreq = (4)

• Определяет символ ESC:

$_escchar = (30)

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

При запуске DOSEmu из консоли или X Window может понадобиться задать подходящую раскладку клавиатуры. Это делается либо выбором одной из внутренних таблиц клавиатуры, либо загрузкой внешней таблицы.

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

$_layout = «name»

• Используется для сосуществования с X Window, поскольку по умолчанию устанавливается нейтральная (US) клавиатура:

$_X_keycode = (on)

• Следующий параметр позволяет получить прямой доступ к клавиатуре для DOS-программ. Обычно это необходимо для игр.

$_rawkeyboard = (1)

• Следующая переменная используется для улучшенной обработки прерывания клавиатуры:

$_keybint = (on)

Поддержка X Window

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

• Задает интервал обновления изображения в 1/20 секунды:

$_X_updfreq = (5)

• Определяет заголовок окна программы:

$ X title = «DOS in a BOX»

• Определяет текст значка:

$_X_icon_name = «xdos»

• Разрешение трансляции клавиатурных кодов через таблицы DOSEmu:

$_X_keycode = (off)

• Параметр задает частоту мерцания курсора:

$_X_blinkrate = (8)

• Задает тип шрифта для DOS-программы:

$_X_font = ""

• Параметр разрешает использование разделяемой памяти:

$_X_mitshm = (on)

• Использование системной палитры:

$_X_sharecmap = (off)

• Параметр разрешает пропорциональное изменение размеров окна:

$_X_fixed_aspect = (on)

• Разрешает использовать отношение сторон окна 4:3 в графике:

$_X_aspect_43 = (on)

• Параметр задает начальные размеры окна:

$_X_winsize = ""

• Параметр задает коэффициент гамма-коррекции:

$_X_gamma = (1.0)

• Задает размер фрейм-буфера для эмуляции VGA в килобайтах:

$_X_vgaemu_memsize = (1024)

• Параметр разрешает использовать линейный фрейм-буфер для VESA-режимов:

$_X_lfb = (on)

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

За конфигурирование DOSEmu для работы в консольном режиме отвечают следующие параметры.

• Этот параметр позволяет выбрать тип видеокарты:

$_video = «vga»

• Разрешает или запрещает использование видео на консоли:

$ console = (0)

• Параметр разрешает использовать BIOS-карты для установки видеорежима:

$_graphics = (0)

• Параметр разрешает доступ к видеопорту в графических режимах:

$_videoportaccess = (1)

• С помощью этого параметра задается адрес видео – BIOS:

$_vbios_seg = (0хс000)

• С помощью этого параметра указывается размер видео – BIOS:

$_vbios_size = (0x10000)

• С помощью этого параметра задается размер буфера регенерации:

$_vmemsize = (1024)

• С помощью этого параметра можно указать чипсет видеокарты для лучшего взаимодействия с видеокартой:

$_chipset = ""

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

Следующие переменные определяют наличие дисковода, а так же параметры жесткого диска.

• Параметр используется для задания имени файла виртуальной дискеты, с которой будет производиться загрузка:

$_vbootfloppy = ""

• Параметр определяет тип и наличие дисковода А:

$_floppy_a ="threeinch"

• Параметр определяет тип и наличие дисковода В:

$_floppy_b = ""

• Этот параметр задает имя файла, содержащего список образов жесткого диска в /var/lib/dosemu:

$_hdimage = «hdimage.first»

При установке DOSEmu в файл /var/lib/dosemu/hdimage.first записывается образ загрузочного диска. Это файл, содержащий виртуальный образ файловой системы DOS – FAT. Альтернативой загрузки с виртуального диска может служить загрузка с виртуальной дискеты, которая создается командой

'dd if=/dev/fd0 of=floppy_image'

Если это загрузочная дискета DOS, то при установке следующего параметра

$_vbootfloppy = «floppy_image»

будет загружаться с этой виртуальной дискеты.

СОМ-порты

Нижеприведенные параметры используются DOSEmu для задания параметров СОМ-портов и устройств, которые их используют.

• Параметр определяет, какое устройство Linux соответствует порту СОМ1:

$_coml = «/dev/mouse»

• Параметр определяет, какое устройство Linux соответствует порту COM2:

$_com2 = «/dev/modem»

• Параметр определяет тип используемой мыши:

$_mouse = «microsoft»

• Параметр задает драйвер мыши:

$_mouse_dev = «/dev/mouse»

• С помощью этого параметра можно установить специальные управляющие флаги:

$_mouse_flags = ""

• Параметр задает скорость обмена информацией с мышью, 0 – не устанавливать:

$_mouse_baud = (0)

Принтеры

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

• Параметр определяет имя Linux-принтера, который будет называться LPT1:

$^printer = «lp»

• Параметр задает задержку перед началом печати:

$_printer_timeout = (20)

Работа с сетью IPX/SPX

Следующие параметры используются для поддержки сетевого протокола IPX/SPX, при этом ядро операционной системы должно быть сконфигурировано с поддержкой протокола IPX.

• Параметр разрешает использование протокола IPX/SPX:

$_ipxsupport = (on)

• Параметр используется в том случае, если вы примените драйвер dosnet:

$_vnet = (on)

Звук

Для поддержки звуковой карты DOSEmu средствами звуковой подсистемы Linux необходимо установить следующие параметры.

• Параметр разрешает или запрещает поддержку звука:

$_sound = (off)

• Параметр определяет базовый адрес портов ввода/вывода звуковой карты:

$_sb_base = (0x220)

• Параметр определяет прерывание, используемое звуковой картой:

$_sb_irq = (5)

• Параметр определяет канал DMA, используемый звуковой картой:

$_sb_dma = (1)

• Параметр определяет используемое звуковое устройство:

$_sb_dsp = «/dev/dsp»

• Параметр определяет используемый микшер:

$_sb_mixer = «/dev/mixer»

• Параметр определяет базовый адрес MPU-401:

$_mpu_base = «0x330»

Приложения DEXE

Непосредственно исполняемые DOS-приложения DOSEmu (DEXE) – достаточно оригинальная концепция. На самом деле – это загружаемый образ диска, содержащий одно DOS-приложение. Достоинства такого типа приложений – они имеют доступ только к образу диска, и как следствие – порождают меньше проблем с безопасностью. Помимо этого – вам не надо делать инсталляцию DOS-приложения и настраивать его.

Для создания приложения формата DEXE нужно:

• пакет mtools;

• скомпилированный DOSEmu;

• zip-архив, содержащий все файлы, относящиеся к DOS-приложению;

• подготовить следующую информацию перед запуском mkdexe:

– размер раздела для образа диска;

– версию DOS, которую следует поместить на этот образ;

– содержимое файлов Config.sys и Autoexec.bat.

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

mkdexe myapp.zip -х myapp.exe -о confirm

Если все прошло нормально, то у вас появится файл myapp.exe, который можно запустить на выполнение командой

dos -L myapp.exe [dosemu-options]

либо

dosexec myapp.exe [dosemu-options]

Данный текст является ознакомительным фрагментом.