Запуск KolibriOS в QEMU
Цель этого руководства — настроить запуск KolibriOS в QEMU.
Использование командной строки
Для запуска KolibriOS из образа дискеты достаточно следующей команды:
qemu-system-i386 \
-m 128 \
-drive file=/path/to/kolibri.img,if=floppy,format=raw \
-boot order=a \
-rtc base=localtime \
-vga vmware \
-nic user,model=rtl8139 \
-device AC97 \
-usb \
-device usb-tablet
Замените /path/to/kolibri.img на путь к образу дискеты KolibriOS.
Используемые параметры:
-m 128
- Выделяет виртуальной машине 128 МБ оперативной памяти.
-drive file=/path/to/kolibri.img,if=floppy,format=raw
- Подключает образ KolibriOS как дискету.
-boot order=a
- Устанавливает загрузку с дискеты.
-rtc base=localtime
- Устанавливает часы реального времени виртуальной машины в соответствии с локальным временем основной системы.
-vga vmware
- Использует эмулируемую видеокарту VMware.
-nic user,model=rtl8139
- Создаёт сетевой адаптер RTL8139 и подключает его к встроенной пользовательской сети QEMU. Для обычного доступа в сеть дополнительная настройка основной системы не требуется.
-device AC97
- Добавляет звуковое устройство AC97.
-usb
- Включает встроенный USB-контроллер виртуальной машины.
-device usb-tablet
- Добавляет USB-планшет. Он использует абсолютные координаты указателя, поэтому курсор не требуется захватывать окном QEMU.
RTL8139, AC97 и USB поддерживаются KolibriOS. [1]
Сеть
Для работы сети используется параметр:
-nic user,model=rtl8139
Он одновременно создаёт поддерживаемый KolibriOS сетевой адаптер RTL8139 и включает пользовательский сетевой стек QEMU.
Если требуется раздельно указать виртуальное устройство и сетевой интерфейс QEMU, ту же конфигурацию можно записать следующим образом:
-netdev user,id=net0 \
-device rtl8139,netdev=net0
Жёсткие диски
Дополнительные образы жёстких дисков можно подключать с помощью -drive:
-drive file=/path/to/c100.img,if=ide,index=0,format=raw \
-drive file=/path/to/c100_2.img,if=ide,index=1,format=raw
Если номер index не имеет значения, его можно не указывать:
-drive file=/path/to/disk.img,if=ide,format=raw
QEMU выберет свободное место на IDE-контроллере автоматически.
Аппаратное ускорение
По умолчанию QEMU может выполнять систему с помощью программной эмуляции TCG.
В Linux при наличии KVM можно явно включить аппаратное ускорение:
-accel kvm
Если KVM недоступен или вызывает проблемы, этот параметр можно просто не указывать либо явно выбрать TCG:
-accel tcg
Для KolibriOS аппаратное ускорение не является обязательным.
Звук
Для эмуляции поддерживаемой KolibriOS звуковой карты AC97 используется:
-device AC97
Если QEMU не смог автоматически выбрать звуковой вывод основной системы, можно посмотреть доступные аудиодрайверы:
qemu-system-i386 -audio driver=help
Например, в системе с PipeWire AC97 можно запустить следующим образом:
-audio pipewire,model=ac97
В этом случае отдельный параметр -device AC97 не требуется.
Копирование файлов на образ жёсткого диска в Linux
Предположим, у вас есть файл hi.txt с текстом «Hello world!», который необходимо открыть из KolibriOS.
Для работы с FAT-образами удобно использовать dosfstools и mtools.
Сначала создайте пустой образ размером 100 МБ:
dd if=/dev/zero of=hda.img bs=1M count=100
Создайте на нём файловую систему FAT:
mkfs.fat hda.img
Теперь можно просмотреть содержимое образа:
mdir -i hda.img
Вывод будет выглядеть примерно так:
Volume in drive : has no label
Volume Serial Number is FD16-6B35
Directory for ::/
No files
104 634 368 bytes free
Для копирования файла используется mcopy:
mcopy -i hda.img hi.txt ::/
Проверим содержимое образа ещё раз:
mdir -i hda.img
Например:
Volume in drive : has no label
Volume Serial Number is FD16-6B35
Directory for ::/
hi txt 8 2014-03-15 21:04 hi.txt
1 file 8 bytes
104 632 320 bytes free
Чтобы подключить созданный образ к KolibriOS, добавьте к команде запуска QEMU:
-drive file=/path/to/hda.img,if=ide,format=raw
После загрузки диск должен стать доступен в файловых менеджерах KolibriOS среди подключённых IDE-дисков.
Проброс каталога Linux как USB-накопителя
QEMU умеет предоставлять содержимое обычного каталога основной системы в виде виртуального FAT-диска. Это позволяет передавать файлы в KolibriOS без ручного создания и заполнения образа.
Например, чтобы предоставить каталог /some/directory в режиме чтения и записи, добавьте:
-drive file=fat:rw:/some/directory,if=none,format=raw,id=shared \
-device usb-ehci,id=ehci \
-device usb-storage,bus=ehci.0,drive=shared
Полная команда запуска может выглядеть следующим образом:
qemu-system-i386 \
-m 128 \
-drive file=/path/to/kolibri.img,if=floppy,format=raw \
-boot order=a \
-rtc base=localtime \
-vga vmware \
-nic user,model=rtl8139 \
-device AC97 \
-usb \
-device usb-tablet,bus=usb-bus.0 \
-drive file=fat:rw:/some/directory,if=none,format=raw,id=shared \
-device usb-ehci,id=ehci \
-device usb-storage,bus=ehci.0,drive=shared
После загрузки каталог должен быть доступен в KolibriOS как USB-накопитель.
Если доступ на запись из KolibriOS не требуется, используйте режим только для чтения:
-drive file=fat:/some/directory,if=none,format=raw,id=shared
Поддержка записи в виртуальную FAT-файловую систему QEMU считается экспериментальной. Не изменяйте файлы в предоставленном каталоге одновременно из основной системы и KolibriOS — это может привести к повреждению файловой системы. [2]