Использование мультизагрузки и дискеты с QEMU

Я пытаюсь разработать операционную систему. Я закончил учебник Barebones от OSDev, но у меня все еще есть проблемы с мультизагрузкой.

Как я понимаю, когда я создаю мультизагрузочный образ после учебника, у меня есть двоичный файл в формате ELF. Этот исполняемый файл ELF загружается в память QEMU, когда я указываю -kernel вариант. Итак, у меня есть одна исполняемая программа в памяти, и она имеет точку входа. У него есть некоторые функции и библиотеки. В памяти больше ничего нет. Также нет образа дискеты или образа диска, с которого я могу читать или записывать сектора. Это главным образом потому, что я ничего не указал QEMU в этом отношении.

Однако, чего я хочу достичь, так это того, чтобы после того, как QEMU загрузит мой исполняемый файл ELF, я хочу иметь архитектуру диска или дискеты, из которой я могу читать или записывать сектора. Я также хочу загрузить из него некоторые пользовательские программы или настроить файловую систему. Пока что я думаю вот что:

qemu-system-i386 -kernel myKernel.bin -fda myDisk.image

Или, может быть, я должен взять мой myKernel.bin файл, заполните его нулями, пока он не выровняется до 512 байт, затем добавьте к нему оставшуюся часть образа диска.

У меня вопрос, как я могу достичь этой функциональности с QEMU. Мне нужно знать, возможна ли такая задача, прежде чем погрузиться в написание драйвера диска. Если это невозможно, я могу использовать другой подход, но это те идеи, которые у меня есть сейчас. Я уже изучил -initrd и это не совсем то, что я хочу. Я также не хочу, чтобы QEMU загружал какие-либо файлы в оперативную память. Вместо этого я хочу манипулировать образом диска самостоятельно. Любые предложения о том, как это сделать?

1 ответ

Вам не нужен и образ дискеты, и мультизагрузочное ядро, если только вы не написали какой-то загрузчик. -kernel flag работает аналогично grub и работает намного быстрее, чем загрузка с виртуального носителя. Именно так многие разработчики ядра и драйверов Linux тестируют свой код, а не каждый раз создают образ виртуального носителя.

Другие вопросы по тегам