Volgograd

Волгоград Linux User Group

Организована 23 ноября 2002 года

Проект заморожен Птн Июл 6 02:11:14 MSD 2012


Вход:  Пароль:  

ГраблеВодство/articles/dosemu


mini-FAQ по эмуляторам процессора x86 BOCHS и QEmu


Оглавление документа

Зачем оно нам?


Интересный вопрос. В принципе, наличие этой штуки для Linux, работающей на x86, IMHO не очень оправдано. Однако, как показывает практика, студенты в массе своей почему-то упорно под «языком С», как они это называют, понимают оболочку BC 3.1. Так что для облегчения «психологического дискомфорта» при переходе на Linux, а также для повышения загрузки этого класса преподавателями (не очень жаждущими перед обучением студентов С проводить пол-семестра массовый ликбез), неплохо бы научиться запускать что-нибудь из джентльменского набора DOS под Linux. Вот тут-то эмулятор процессора и может помочь.
Есть еще одна ситуация, когда он может оказаться полезным – при проведении расчетов в DOS старыми программами (часто возникающая ситуация). Windows здесь не очень удобна. Может, это окажется лучше. Как-нибудь проведу сравнения.

Эмулятор и враппер


Враппер – это преобразователь вызовов функций одной ОС в другую (ну или одной железки в другую – например, долго ожидаемый враппер из 3DFx в Open GL?, так и не дошедший даже до альфа стадии). Поэтому такие вещи, как Wine и Winex называть эмуляторами ошибочно – они производят преобразование вызовов API Windows в системные функции Linux. Ну и поскольку этот самый API (а также всякие Direct`ы) все как-то никак не устаканится :), они и выходят регулярно, бесконечно аппроксимируя релиз. Эмулятор же, как видно из названия, эмулирует что-то, в нашем случае процессор x86. В идеале для программ, работающих под эмулятором, разница не должна быть заметна. На практике все не так безоблачно, поскольку кое-что не сделано или не доделано (есть надежда на возможность употребления слова «пока»)..

Для юзера


Ну, для пользователя это, в принципе, еще один компьютер, живущий «внутри» системы. Правда, возникают некоторые неудобства, вызванные необходимостью делить одну клавиатуру, мышь и прочие внешние устройства. К сожалению, придется немного повозиться с комбинациями клавиш в сочетании с ALT и CTRL. Также плохо то, что доступ к файловым системам машины, на которой живет эмулятор, хоть и возможен, но строго не рекомендуется. Это еще допустимо для сидюка, ну и для дисковода, но диски же для хост-системы представляются файлами, в которых и копается эмулятор. Скорость же очень интересна. С одной стороны, это вроде как эмулятор. С другой стороны, если компьютер сравнительно новый, то DOS может вообще не ожить, а если и поднимется, то будет использовать какую-то долю его мощи. В случае же эмулятора это обычный процесс, который использует все возможности вашего компьютера (со всеми вытекающими отсюда последствиями работы с внешними устройствами и пр.)

Что живет сейчас?


Ну, времени копаться у меня особо нет, поэтому сейчас там живут:

  • Turbo C 
  • Te X? 2.09
  • DOS 6.22, с поддержкой расширителей, как-то DOS4GW (вспомним молодость :)
  • Всякие VC и NC со своими причиндалами
  • Компилятор Zorteсh, и даже с поддержкой своих расширителей
  • Графические режимы вплоть до VGA, а вот SVGA уже нет :(
  • Всякие arj, zip и rar`ы
  • Доктор Web дремучей версии. На эмуляторе новее не понадобится

Как пользоваться BOCHS?

Для запуска BOCHS нужно разместить в ~ файл bochsrc.txt, который уже подготовлен заранее для использования. Также возьмите образы C и D и разместите их в ~. Для этого скопируйте эти три файла в ~, а их месторасположение узнайте у лаборантов 3-07А. Ну или позднее оно здесь появится, может... С клавиатурой особых проблем нет, разве что придеться научиться пользоваться комбинациями клавиш в сочетаниях с ALT и CTRL – они используются и файловым менеджером, поэтому там все немного непривычно. С мышью несколько хуже – как только мышь попала в окно эмулятора, она им захватывается. Чтобы вернуть мышь, нажмите среднюю кнопку (= нажатию левой и правой кнопок одновременно). Мышь вернется. Монтировать и размонтировать устройства можно с помощью пиктограмм дискет и CD в левом верхнем углу. Верхний правый угол отдан на откуп чему-то вроде буфера обмена – вырезать текст в него, получить снимок экрана.... Еще интересны кнопки “Reset” и “Power” в верхнем правом углу окна – они говорят сами за себя. Собственно запуск bochs лучше произвести с ключом q, иначе придется потом попользоваться меню для запуска симуляции.

Как пользоваться QEmu?

Для запуска QEmu нужно просто в ключах -hda/-hdb/-hdc/-hdd указать файлы-образы дисков. В отличие от BOCHS, указывать реальное физическое устройство уже нельзя. Примерно это выглядит так: qemu -hda ./drive_C.image QEmu попроще, чем BOCHS, но зато быстрее и, что главное, в нем работает большая часть нужных мне программ.

В какую сторону будем рыть

Ну, для хорошей жизни надо добиться, чтобы заработало:

  • BC 3.1 целиком
  • Попробовать Pascal туда вставить
  • VESA-режимы графики
  • Возможно, имеет смысл завести NE2K, чтоб по сети лазить на диски хоста :)
  • Звук, что-ли, еще попробовать оживить....

IPS у BOCHS

Сокращение от Instruction Per Second. К этой величине привязаны всякие внутренние таймеры, поэтому очень важно настроить эту штуку как можно более точно отражающей скорость хост-системы. Иначе всякие глюки начнутся – от неработающего дисковода и внешних портов до проблем с TC. Все исправления, пожелания и дополнения по этому творению сюда