Может быть комментарий.

аюсь написать загрузчик (привет мир сортировки). Я использую Bochs для моделирования (платформа Linux-Ubuntu). Но я не могу сделать загрузочный ISO для моего двоичного файла. Хотя в учебнике используется VFD (виртуальная дискета), но это для платформы Windows. Вот мой код для загрузчика (только для тестирования)

;*********************************************
;    Boot1.asm
;        - A Simple Bootloader for testing if cd is booting or not
;
;    Operating Systems Development Tutorial
;*********************************************

[BITS 16]    ;tell the assembler that its a 16 bit code
[ORG 0x7C00]    ;Origin, tell the assembler that where the code will

Start:

    cli                    ; Clear all Interrupts
    hlt                    ; halt the system

times 510 - ($-$) db 0                ; We have to be 512 bytes. Clear the rest of the bytes with 0

dw 0xAA55                    ; Boot Signature

Я попробовал мастер ISO на Ubuntu. Это преобразование двоичного файла в ISO, но не в загрузочный ISO. Bochs показывает ошибку «cd is eltorito», которую я нагуглил и нашел стандартной для загрузочного ISO. Какие дополнительные вещи я должен добавить к нему, чтобы сделать его загрузочным. я уже добавил загрузочную подпись в конце. Кто-нибудь может предложить надежное приложение для создания загрузочного ISO в Ubuntu? Моя работа застряла из-за этого .... ИЛИ я уверен, что многие люди должны быть вовлечены в разработку ОС на платформе Linux. Как вы, люди, тестируете?

Я сделал загрузочную флешку с Unetbootin с iso моей программы загрузчика. переключился на Virtual-box и немного повернулся, чтобы загрузиться с pendrive, но он все еще показывает, что он не загружается. Я думаю, что кто-то сказал правильно, что вам нужно много терпения в разработке ОС.

00056.gif наконец то моя программа загрузчика запустилась ...
Я использовал образ виртуальной дискеты для загрузки моей программы на виртуальной коробке. Вот шаги на случай, если кто-то борется с этим.
1. Создайте boot.asm, в котором есть ваша программа загрузчика.
2.Сравните с насм. nasm -f bin boot.asm -o boot.bin.
3.sudo mkfs.msdos -C / home /имя пользователя/floppy.img 1440
4. Судо Чоунимя пользователя ./floppy.img.текст ссылки
5. Копировать с дд. дд если =. / boot.bin из =. / floppy.img.
6. Запустите VirtualBox и выберите floppy.img в качестве загрузочного устройства на вашей новой виртуальной машине.
PS: вы также можете прикрепить floppy.img к «петле» устройства и смонтировать его как настоящую дискету.

Ответы на вопрос(2)

ROM / El-Torito - чудак (и не заводите меня на гибридах файловой системы Mac CDROM)

При использовании Floppy, Harddisk / USB или PXE-TFTP достаточно записать объектный код в первый сектор или, в случае tftp, просто загрузить и выполнить. С этим не может быть легче.

 Terminal15 янв. 2011 г., 09:58
Это то, во что я теперь верю после того, как попробовал все виды программного обеспечения для создания загрузочного iso и flashdrive в течение 3 дней. Простая команда dd - это то, что спасает жизнь ... :)
 user56237416 янв. 2011 г., 03:05
Там нет необходимости использоватьdd и его неловкий синтаксис, когдаcat > а такжеdd_rescue делать. дд так же, как eltorito ..
Решение Вопроса

rm -f disk_images/myos.iso
mkisofs -quiet -V 'MYOS' -input-charset iso8859-1 -o disk_images/myos.iso -b myos.flp disk_images/ || exit

Дисковод гибких дисков выполнен следующим образом:

nasm -f bin -o boot.bin boot.asm
dd if=boot.bin of=floppy.img count=1 bs=512 //for the bootloader

а также

dd if=boot.bin of=floppy.img skip seek=1 count=1339 //assuming a 1.44Mb floppy

и тогда у вас есть файловая система

mkdosfs (or whatever system you want ) -C floppy.img 1440

Если вам нужна помощь для Windows, дайте мне знать :)

 Ross Ridge14 дек. 2015 г., 20:50
@MichaelPetch Вы также должны использоватьconv=notrunc Вариант или второй дд перезапишет первый. Я бы перевернул порядок двух командdd if=/dev/zero of=floppy.img seek=2879 count=1 && dd if=boot.bin of=floppy.img count=1 conv=notrunc или если вам действительно нужна файловая система FATmkdosfs -C floppy.img 1440 && dd if=boot.bin of=floppy.img count=1 conv=notrunc.
 ASHUTOSH12 мая 2013 г., 09:58
как мы делаем это в Windows? Может ли POWERISO добиться этого?
 Michael Petch14 дек. 2015 г., 19:25
Я также смущенmkdosfs -C floppy.img 1440 , Это не удастся, если образ диска уже существует. И он уже существует, потому что он был создан с предыдущимDD команды.
 Michael Petch14 дек. 2015 г., 21:15
@RossRidge В моем примереdd if=/dev/zero of=floppy.img seek=1 count=2879 conv = notrunc не нужен, потому чтоseek=1 пропускает первый блок выходного файла (который является загрузочным сектором). затем он добавляется к полному размеру диска с нулями. Я согласен с вашими комментариями оmkdosfs, но, по моему мнению, для загрузочного ISO-образа это даже не требуется, поэтому его даже не стоит беспокоить. Этот ответ на самом деле очень запутанный и бессмысленный. Даже вопрос ссылкиmkdosfs но почему?
 Michael Petch14 дек. 2015 г., 19:18
dd if=boot.bin of=floppy.img skip seek=1 count=1339 выглядит очень неправильно. Первыйskip требуется параметр, но ни один не указан. skip пропустит количество блоков во входном файле (boot.bin), но boot.bin занимает всего 512 байт, так что это не имеет смысла. Размер блока по умолчанию для DD равен 512, поэтому count = 1339 выглядит неправильно. Я вижу, что это 2879 (для дискеты 1,44 МБ). Есть часть меня, которая считает, что вы пытались пропустить первый блок в образе выходного файла (дискеты) и написать 0, чтобы заполнить образ диска. Это кажется разумным решениемdd if=/dev/zero of=floppy.img seek=1 count=2879

Ваш ответ на вопрос