Jump to content

Запуск KolibriOS в QEMU

From KolibriOS wiki


Цель этого руководства — настроить запуск 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]

Ссылки