Разработка ОС - загрузка с дискеты с помощью qemu

Я читал учебник по разработке ОС BrokenThorn и занимаюсь созданием и загрузкой загрузчика второго этапа. Учебник предназначен для Windows, но я делаю это в Linux (Ubuntu 13.04).

Вот что я сделал:

  • Создал файл floppy.img под ~/Documents/floppy командой mkfs.vfat
  • Скомпилировано boot.asm файлом с использованием nasm, что дает мне boot.bin
  • Затем я выполнил эту команду: dd if=boot.bin of=~/Documents/floppy/floppy.img bs=512 count=1

Таким образом, у меня есть образ дискеты с загрузчиком первой стадии. При запуске с использованием qemu все работает нормально.

Однако после того, как я создам загрузчик второго этапа (если я прав), мне придется смонтировать floppy.img и скопировать этап 2 в смонтированную файловую систему. Как в таком случае загрузить смонтированную дискету с помощью qemu? Это вообще возможно? Если нет, то как мне работать с загрузчиком второго этапа.

Пожалуйста, простите меня за любое глупое предположение/вопрос, так как я новичок в этом.


person Cygnus    schedule 13.11.2013    source источник
comment
Таким образом, причина разделения загрузчика на две части связана с тем, как действует биос, в основном при загрузке диска он считывает первый сектор и запускает его. Итак, в первый сектор вы поместите загрузочный код для загрузки большего количества секторов с дискеты, т.е. Загрузчик второго этапа, который собственно и будет загружать системы.   -  person Skeen    schedule 13.11.2013
comment
Кроме того, если вы еще не знаете, то на forum.osdev.org есть форум по разработке ОС для хобби, который может быть более полезным, чем переполнение стека, поскольку оно предназначено только для одного домена.   -  person Skeen    schedule 13.11.2013
comment
Таким образом, чтобы ответить на ваш вопрос, загрузчик этапа 1 должен получить доступ к контроллеру гибких дисков и прочитать загрузчик этапа 2. Вы можете решить загрузить статическое количество секторов для вашего загрузчика этапа 2, чтобы все было просто. Как только загрузчик этапа 2 окажется в памяти, просто перейдите к его точке входа.   -  person Skeen    schedule 13.11.2013
comment
Что касается того, следует ли монтировать для перемещения на него stage2 (я предполагаю, что вы говорите о его монтировании в Linux). Тогда я скажу, что если вы хотите, чтобы все было просто, просто запишите это на диск, а не используйте жир. Но если вы хотите иметь файловую систему, то да, смонтируйте ее и скопируйте. Однако тогда вашему загрузчику придется иметь дело с толстым макетом.   -  person Skeen    schedule 13.11.2013
comment
Также в сообществе разработчиков is активно обсуждается, следует ли начинать с загрузчика или с ядра.   -  person Skeen    schedule 13.11.2013
comment
@Skeen: Большое спасибо. Да, я имел в виду установку в Linux. Пожалуйста, взгляните на отредактированный вопрос. Я добавил более подробную информацию о том, что я сделал.   -  person Cygnus    schedule 14.11.2013
comment
Если вы смонтировали дискету в Linux и скопировали на нее второй этап. Затем установка его в qemu не должна отличаться от только этапа 1, то есть использования -fda.   -  person Skeen    schedule 15.11.2013
comment
Небольшой совет: выбросьте дискету. Начните использовать разумные варианты, такие как загрузка с жесткого диска, компакт-диска или DVD. Дискеты мертвы, перестаньте их кусать.   -  person Griwes    schedule 16.11.2013


Ответы (1)


Где твоя проблема? Вы монтируете образ:

mount -oloop ~/Documents/floppy.img /mnt/floppy

Скопируйте этап2:

cp stage2.bin /mnt/floppy

Размонтировать его:

umount /mnt/floppy

И запустите его с помощью QEMU:

qemu -fda ~/Documents/floppy.img

Вуаля!

person fNek    schedule 30.12.2013
comment
Да, я понял это из комментариев и некоторых собственных тестов. Но спасибо, будет полезно для дальнейшего использования! - person Cygnus; 31.12.2013