Я следую учебному руководству BrokenThorn о разработке ОС.
Windows используется в учебном руководстве, но я решил использовать Ubuntu, потому что процесс сборки лучше.
До сих пор у меня только была программа для Главной загрузочной записи.
Я использовал сценарий удара для создания
nasm -f bin -o boot.bin boot.asm
dd status=noxfer conv=notrunc if=boot.bin of=boot.flp
qemu-system-i386 -fda boot.flp
Теперь я в точке, где я хочу загрузить второй загрузчик Этапа. В учебном руководстве дискета имеет файловую систему FAT12. Таким образом, я пытался адаптировать это в своем сценарии сборки
mkfs.vfat -F 12 ./boot.flp
sudo mount -o loop ./boot.flp /media/floppy1/
nasm -f bin -o STAGE2.SYS stage2.asm
sudo cp ./STAGE2.SYS /media/floppy1/
sudo umount /media/floppy1/
nasm -f bin -o boot.bin boot.asm
dd status=noxfer conv=notrunc if=boot.bin of=boot.flp
qemu-system-i386 -fda boot.flp
Изображение все еще загружается, но когда я пробую открытый изображение как циклическое устройство, Ubuntu отбрасывает ошибку
смонтируйтесь:/media/floppy1: неправильный тип фс, плохая опция, плохой суперблок на/dev/loop16, пропуская кодовую страницу или программу помощника или другую ошибку.
Таким образом, я думаю, что FAT12 повреждается.
Как я могу установить работу гибкое изображение FAT12 с моей собственной Главной загрузочной записью?
Прежде, чем создать файловую систему, необходимо разделить изображение и в случае, чтобы быть основным разделом с загрузочным флагом
Я решил проблему, добавив элементы из блока параметров BIOS в качестве параметров в команду mkfs.vfat. Нет необходимости создавать раздел.
mkfs.vfat -F 12 ./boot.flp -f 2 -h 0 -i 0xa0a1a2a3 -I -n "NAME OF OS " -r 224 -R 1 -s 1 -S 512