Как загрузчик может читать DVD (cd)?

#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:

  1. Создайте подкаталог, CdFiles , содержащий загрузочный файл образа дискеты floppy.img (длиной 1474560 байт) и любые другие файлы, которые я хочу на компакт-диске.
  2. 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.