Как настроить Bochs: полное руководство по конфигурации эмулятора

При первом запуске Bochs без корректного конфигурационного файла эмулятор выдаёт ошибку вида «couldn't open ROM image file» или просто закрывается сразу после старта — это самый частый симптом, с которым сталкиваются при настройке. Причина почти всегда одна: отсутствует или неправильно заполнен файл bochsrc.txt, который задаёт все параметры виртуальной машины — от объёма памяти до путей к BIOS и образам дисков. Именно с этого файла и начинается любая настройка Bochs.

В этом руководстве разберём весь цикл: от установки и подготовки загрузочного образа до тонкой настройки конфигурации и устранения типичных сбоев. Материал подходит для версий Bochs под Windows и Linux — синтаксис конфигурационного файла в них практически идентичен, отличаются лишь пути к файлам.

Что такое Bochs и когда он нужен

Bochs — это эмулятор x86-платформы с открытым исходным кодом. В отличие от гипервизоров вроде VirtualBox, он не использует аппаратную виртуализацию, а полностью эмулирует процессор и периферию программно. Это делает его медленнее, но позволяет запускать код для других архитектур и отлаживать операционные системы на уровне отдельных инструкций.

На практике Bochs применяют в нескольких сценариях:

  • 🖥️ Запуск старых операционных систем — MS-DOS, Windows 95/98, ранних дистрибутивов Linux;
  • 🛠️ Разработка и отладка собственных ОС и загрузчиков благодаря встроенному отладчику;
  • 📱 Эмуляция x86-систем на устройствах с другой архитектурой, включая Android;
  • 🎓 Обучение низкоуровневому программированию и изучение работы BIOS.

Если задача — просто запустить современную ОС в виртуальной машине на полной скорости, Bochs для этого подходит плохо. Его сила — в точности эмуляции и средствах отладки, а не в производительности.

Установка Bochs на Windows и Linux

На Windows установка сводится к загрузке инсталлятора с официального репозитория проекта (релизы публикуются на SourceForge) и стандартной установке. Вместе с эмулятором ставятся вспомогательные утилиты, важнейшая из которых — bximage, предназначенная для создания образов дисков.

В дистрибутивах Linux Bochs обычно доступен в штатных репозиториях. Для Debian и Ubuntu установка выполняется одной командой:

sudo apt install bochs bochs-x

Пакет bochs-x добавляет графическое окно на базе X11 — без него эмулятор может запуститься только в текстовом режиме терминала. Для других дистрибутивов название пакетов может отличаться, проверяйте в своём пакетном менеджере.

Создание образа жёсткого диска

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

bximage

Утилита последовательно спросит тип создаваемого объекта (выбирайте hd — жёсткий диск), формат образа и размер. Для старых систем вроде DOS или Windows 95 достаточно образа на несколько сотен мегабайт; выделять десятки гигабайт нет смысла, так как гостевые ОС тех лет всё равно не увидят лишнее пространство.

По завершении bximage выведет готовую строку для конфигурационного файла с параметрами геометрии диска — цилиндры, головки и секторы. Эту строку нужно скопировать и вставить в bochsrc без изменений: несовпадение геометрии — частая причина того, что диск не определяется внутри эмулятора.

Формат образа тоже имеет значение. Вариант flat создаёт файл фиксированного размера — он проще и предсказуемее. Формат growing экономит место, занимая пространство по мере заполнения, но поддерживается не всеми сборками эмулятора.

Настройка файла конфигурации bochsrc

Сердце настройки — текстовый файл bochsrc.txt (или просто bochsrc в Linux). Эмулятор читает его при запуске и строит виртуальную машину по заданным параметрам. Файл создаётся в любом текстовом редакторе, поддерживающем сохранение в plain text.

Минимальная рабочая конфигурация выглядит примерно так:

megs: 64

romimage: file="BIOS-bochs-latest"

vgaromimage: file="VGABIOS-lgpl-latest"

floppya: 1_44="dos.img", status=inserted

ata0-master: type=disk, path="hdd.img", mode=flat, cylinders=..., heads=..., spt=...

boot: floppy

log: bochsout.txt

mouse: enabled=0

Разберём ключевые строки. Параметр megs задаёт объём оперативной памяти в мегабайтах — для DOS хватит 16–64, для Windows 95/98 лучше выделить 64–128. Директивы romimage и vgaromimage указывают пути к файлам BIOS и видео-BIOS: они поставляются вместе с эмулятором, и если Bochs не находит их по относительному пути, укажите абсолютный. Строка ata0-master подключает созданный образ диска — сюда вставляется та самая геометрия из bximage.

Порядок загрузки определяет параметр boot: значение floppy — загрузка с дискеты, disk — с жёсткого диска, cdrom — с привода. Для установки системы с ISO-образа подключите его строкой вида ata1-master: type=cdrom, path="install.iso", status=inserted и поставьте загрузку с cdrom.

☑️ Проверка конфигурации перед запуском

Выполнено: 0 / 5
⚠️ Внимание: в Windows-путях внутри bochsrc используйте прямые слэши / вместо обратных, либо экранируйте обратные. Строка вида C:\images\hdd.img может быть прочитана неправильно, и эмулятор не найдёт образ, не выдав понятной ошибки.

Подключение образов и загрузка системы

Когда конфигурация готова, эмулятор запускается с указанием файла настроек:

bochs -f bochsrc.txt

Если файл называется bochsrc.txt и лежит в текущем каталоге, ключ -f можно опустить — Bochs найдёт его автоматически. После старта откроется окно эмуляции и консоль управления: в ней видны сообщения о подключённых устройствах и возможных ошибках конфигурации.

Дальнейший процесс зависит от задачи. При установке системы с ISO или дискеты гостевая ОС загрузится в свой штатный установщик — работайте с ним как на реальном железе. После завершения установки не забудьте поменять boot на disk и отключить установочный носитель, иначе при каждом запуске будет стартовать инсталлятор.

📊 Для какой цели вы настраиваете Bochs?
Запуск старых ОС (DOS, Windows 95/98)
Разработка и отладка собственной ОС
Эмуляция x86 на Android
Учебные задачи и эксперименты

Настройка видео, звука и периферии

Базовая конфигурация даёт только консольный вывод через стандартный VGA-BIOS. Для полноценной работы гостевой системы могут понадобиться дополнительные устройства, которые подключаются отдельными строками в bochsrc.

Основные опции периферии:

  • 🖱️ Мышь: строка mouse: enabled=1 активирует эмуляцию мыши, захват курсора обычно переключается комбинацией клавиш, указанной в документации вашей версии;
  • 🔊 Звук: поддерживается эмуляция Sound Blaster 16 через директиву sb16 — работоспособность зависит от сборки и хост-системы;
  • 🌐 Сеть: сетевая карта NE2000 подключается строкой ne2k, но настройка сетевого моста требует дополнительных прав на хосте;
  • ⏱️ Таймер: параметр clock: sync=realtime синхронизирует время гостевой системы с реальным, что полезно для стабильной работы некоторых ОС.

Не включайте всё сразу. Надёжнее сначала добиться стабильной загрузки минимальной конфигурации, а затем добавлять устройства по одному — так проще локализовать источник проблемы, если что-то перестанет работать.

О встроенном отладчике Bochs

Сборки с отладчиком позволяют ставить точки останова на инструкции, просматривать регистры и память. В конфигурации это активируется строкой вида display_library с опциями отладки или запуском с соответствующими ключами. Если вы собирали Bochs из исходников, отладчик включается флагом configure --enable-debugger.

Типичные ошибки и их решение

Большинство проблем при настройке Bochs сводятся к нескольким повторяющимся сценариям. Ниже — признаки и способы проверки.

Ошибка / симптомВероятная причинаЧто проверить
couldn't open ROM imageНеверный путь к BIOSПути в romimage и vgaromimage, рабочий каталог
Диск не определяетсяНеправильная геометрияСовпадение cylinders/heads/spt с выводом bximage
Окно закрывается сразуСинтаксическая ошибка в bochsrcЛог-файл bochsout.txt, лишние символы и кавычки
No bootable deviceНеверный порядок загрузкиПараметр boot и статус inserted у носителя
Чёрный экран после стартаПроблема с VGA-BIOS или display-библиотекойНаличие VGABIOS-файла, установлен ли bochs-x в Linux

Главный инструмент диагностики — лог-файл, заданный директивой log:. Bochs пишет туда подробный отчёт о каждом этапе инициализации, и сообщение об ошибке почти всегда указывает на конкретную строку конфигурации. Читайте лог с конца: последняя запись перед аварийным завершением обычно и есть причина.

⚠️ Внимание: образы дисков от других эмуляторов (например, сырые .img от QEMU) часто совместимы с Bochs, но их геометрию придётся указывать вручную. Без корректных значений cylinders/heads/spt диск может не определиться или читаться с ошибками.

Оптимизация производительности

Полная программная эмуляция процессора делает Bochs заметно медленнее гипервизоров, и это нормально — ускорить его до уровня VirtualBox не получится. Тем не менее несколько приёмов помогают снять лишнюю нагрузку.

Во-первых, не выделяйте гостевой системе больше памяти, чем ей реально нужно: лишние мегабайты в megs не ускоряют работу, а старые ОС с большими объёмами RAM иногда работают нестабильно. Во-вторых, параметр ips (instructions per second) задаёт скорость эмулируемого процессора — на слабом хосте завышенное значение приводит к рывкам, на мощном можно увеличить его для более плавной работы. Подбирайте значение экспериментально, начиная со стандартного.

Также отключите ненужные устройства: каждая активная директива в конфигурации — это дополнительная работа эмулятора. Если звук и сеть не нужны, закомментируйте соответствующие строки символом #.

Часто задаваемые вопросы

Где взять файлы BIOS для Bochs?

Файлы BIOS-bochs-latest и VGABIOS-lgpl-latest входят в комплект поставки эмулятора — отдельно их скачивать не нужно. Найдите их в каталоге установки и пропишите корректные пути в bochsrc.

Можно ли запустить Bochs на Android?

Да, существуют сторонние порты Bochs под Android, которые используют тот же формат конфигурационного файла. Учтите, что из-за программной эмуляции производительность на мобильных устройствах невысока — комфортно работают разве что DOS и очень лёгкие системы.

Чем Bochs отличается от QEMU?

QEMU умеет использовать аппаратную виртуализацию и работает значительно быстрее, а Bochs эмулирует всё программно, зато предоставляет более детальный контроль и встроенный отладчик. Для повседневной виртуализации удобнее QEMU, для отладки ОС и точной эмуляции — Bochs.

Почему Bochs пишет «no bootable device», хотя образ подключён?

Проверьте три вещи: соответствует ли параметр boot типу носителя, стоит ли у образа status=inserted и действительно ли образ загрузочный. Для жёсткого диска также убедитесь, что на него установлена система — пустой образ, созданный bximage, загрузочным не является.

Как передать файлы между хостом и гостевой системой?

Простейший способ — смонтировать образ диска на хост-системе (в Linux это делается через loop-устройство со смещением раздела) и скопировать файлы напрямую. Альтернатива — использовать образы дискет как переносной носитель между сессиями эмулятора.