Как сделать загрузочный iso (не cd или флэшку) для тестирования собственного загрузчика? - PullRequest
6 голосов
/ 14 января 2011

я пытаюсь написать загрузчик (hello world sort).Я использую 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, но он все еще показывает, что он не загружается.Я думаю, что кто-то сказал правильно, что вам нужно много терпения в разработке ОС.


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

Ответы [ 3 ]

1 голос
/ 15 января 2011

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

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

0 голосов
/ 11 августа 2015

Попробуйте WinISO, он отлично работает для меня.

0 голосов
/ 28 марта 2011

очень простой скрипт сделает это в Linux, как показано ниже: -

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, дайте мне знать:)

...