#assembly #bootloader #bios #dvd
#сборка #загрузчик #bios #dvd
Вопрос:
У меня есть загрузчик первого этапа, написанный на ассемблере. Мне нужно, чтобы он загружал загрузчик второго этапа с dvd (или cd). Я нашел только примеры, когда он считывает данные с floopy или hdd. Используемое там прерывание равно 13h. В описании прерывания говорится, что он может читать дискеты и жесткие диски. я пытался использовать 13h для чтения компакт-диска, как если бы это была дискета, но это не сработало.
Вопрос: есть ли разница между дискетами и DVD (в смысле доступа к ним), могу ли я использовать CHS (cilinder, head, sector), каков его размер сектора, могу ли я использовать инструкцию 13h для правильного чтения dvd. может быть, несколько примеров. Я просмотрел исходный код LILO и нашел там только 13h, поэтому он должен работать. Спасибо.
Комментарии:
1. Я не совсем уверен (поэтому ответа нет), но я не думаю, что загрузчик загружается с DVD — он загружается с дискеты или жесткого диска. DVD / CD запускается в режиме эмуляции и предоставляет дискету / диск во время процесса загрузки.
2. Я думаю, слово «эмуляция» было ключевым. Я быстро нашел расширение «El Torito», которое все объясняет. Вы можете написать это как ответ, и я приму его. Спасибо, я просто ленивый
Ответ №1:
Вы можете создать загрузочный компакт-диск из файла образа загрузочной дискеты с помощью инструмента mkisofs. Вот как я это делаю под Windows:
- Создайте подкаталог,
CdFiles
, содержащий загрузочный файл образа дискетыfloppy.img
(длиной 1474560 байт) и любые другие файлы, которые я хочу на компакт-диске. mkisofs.exe -b floppy.img -v -r -l -o cd.iso CdFiles
Он создаст файл ISO-образа CD cd.iso
, который вы можете либо записать на компакт-диск и загрузить с диска, либо использовать в любом эмуляторе ПК и загружать непосредственно с образа.
BIOS будет эмулировать дисковод гибких дисков на компакт-диске с содержимым floppy.img
, и он сможет получить к себе обычный доступ через int 13h, используя диск с номером 0. Чтобы получить доступ ко всему CD через int 13h, вам нужно будет создать образ жесткого диска (загрузочный) и указать другой метод эмуляции (не уверен, как это сделать с mkisofs, никогда не пробовал образы жестких дисков). Произойдет то же самое, но теперь жесткий диск будет эмулироваться поверх компакт-диска, и это будет диск с номером 80h для int 13h.
Комментарии:
1. Хороший, интересный инструмент. Я использовал MagicISO, но я попробую.
Ответ №2:
Загрузчик загружается с DVD — он загружается с дискеты или жесткого диска. DVD / CD запускается в режиме эмуляции и предоставляет дискету / диск во время процесса загрузки
Ответ №3:
LILO не работает для загрузки с компакт-дисков, поэтому я бы не ожидал, что он будет содержать какой-либо код для их чтения. Попробуйте взглянуть на загрузчик ISOLINUX, который чаще всего используется на загрузочных компакт-дисках Linux.