Я пытаюсь разработать операционную систему. Я закончил Barebones tutorial из OSDev, но все еще есть проблемы с мультизагрузкой.Использование как мультизагрузочных, так и гибких дисков с QEMU
Как я понимаю, когда я создаю многозадачное изображение после учебника, у меня есть двоичный файл формата ELF. Этот исполняемый файл ELF загружается в память с помощью QEMU, когда я указываю опцию -kernel
. Таким образом, у меня есть одна исполняемая программа в памяти, и у нее есть точка входа. У него есть некоторые функции и библиотеки вместе с ним. В памяти больше ничего нет. Также нет образа дискеты или диска, из которого я могу читать или писать секторы. Это в основном потому, что я не указал ничего для QEMU в этом отношении.
Однако, что я хочу достичь, после того, как QEMU загружает исполняемый файл ELF, я хочу иметь дисководную или гибкую архитектуру, из которой я могу читать или писать секторы. Я также хочу загрузить с него некоторые пользовательские программы или, возможно, настроить на нем файловую систему. До сих пор, что я думаю, это:
qemu-system-i386 -kernel myKernel.bin -fda myDisk.image
Или, может быть, я должен взять мой myKernel.bin
файл, раздувания нулями, пока не будет выровнен по 512 байт, а затем добавить остальную часть образа диска к нему.
Мой вопрос в том, как я могу достичь этой функциональности с помощью QEMU. Мне нужно знать, возможна ли такая задача, прежде чем погрузиться в запись драйвера диска. Если это невозможно, я могу принять другой подход, но это те идеи, которые у меня есть сейчас. Я уже рассмотрел -initrd
, и это не совсем то, что я хочу. Я также не хочу, чтобы файлы QAMU загружались в ОЗУ. Вместо этого я хочу сам манипулировать изображением диска. Любые предложения о том, как это сделать?
При создании многозадачного совместимого загрузчика и использовании опции '-kernel' побочный эффект заключается в том, что вы попали в защищенный режим. У вас больше нет прямого доступа к BIOS. Вы можете получить доступ к контроллеру [флоппи-дисковода] (http://wiki.osdev.org/Floppy_Disk_Controller) напрямую (вы действительно пишете драйвер устройства). В качестве альтернативы вы можете переключиться обратно в реальном режиме, используя Floppy Disk BIOS прерывает загрузку данных в память, а затем переходит в защищенный режим. Но в обоих случаях вы монтируете виртуальную гибкую дискету с помощью команды QEMU с -kernel и '-fda', как вы предложили. –