Я хочу написать самостоятельный ответ на это.
Во-первых, в Linux начните с двух ваших инструкций:
dd if=/dev/zero of=floppy.img bs=512 count=2948
mkfs.vfat floppy.img
Это создает диск FAT12, совместимый с DOS4/OS2, с расширенным блоком параметров BIOS, как описано в Википедии "Проектирование файловой системы FAT".
Первые 3 байта "eb 3c 90" являются машинным языком для: JMP 3E \ NOP
, что означает пропуск блока параметров BIOS и начало выполнения кода со смещением байтов 62 (десятичное число) [3E = 3C + 2 (основание 16) = 62 (база 10).
Начиная со смещения 62, следующие 378 байтов являются вашими для написания начальной загрузки. Программа по умолчанию печатает сообщение, ожидает нажатия клавиши и затем перезагружается.
Создайте файл myBoot.bin с бинарной программой x86 размером 378 байт.
Это всего 378 байт ... вы МОЖЕТЕ сделать это, но если вам абсолютно необходимо начальное место, используйте команду:
dd bs=1 count=378 of=myBoot.bin if=floppy.img skip=62 conv=notrunc
Наконец, перезапишите стандартную MBR дискеты с помощью пользовательской программы myBoot.bin:
dd bs=1 count=378 if=myBoot.bin of=floppy.img seek=62 conv=notrunc
Вы успешно создали образ дискеты и перезаписали загрузочную программу по умолчанию.