При первом запуске 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.
☑️ Проверка конфигурации перед запуском
⚠️ Внимание: в Windows-путях внутри bochsrc используйте прямые слэши/вместо обратных, либо экранируйте обратные. Строка видаC:\images\hdd.imgможет быть прочитана неправильно, и эмулятор не найдёт образ, не выдав понятной ошибки.
Подключение образов и загрузка системы
Когда конфигурация готова, эмулятор запускается с указанием файла настроек:
bochs -f bochsrc.txt
Если файл называется bochsrc.txt и лежит в текущем каталоге, ключ -f можно опустить — Bochs найдёт его автоматически. После старта откроется окно эмуляции и консоль управления: в ней видны сообщения о подключённых устройствах и возможных ошибках конфигурации.
Дальнейший процесс зависит от задачи. При установке системы с ISO или дискеты гостевая ОС загрузится в свой штатный установщик — работайте с ним как на реальном железе. После завершения установки не забудьте поменять boot на disk и отключить установочный носитель, иначе при каждом запуске будет стартовать инсталлятор.
Настройка видео, звука и периферии
Базовая конфигурация даёт только консольный вывод через стандартный 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-устройство со смещением раздела) и скопировать файлы напрямую. Альтернатива — использовать образы дискет как переносной носитель между сессиями эмулятора.