2011-10-15 35 views
2

我有用匯編寫的第一階段啓動程序。我需要它從DVD(或CD)加載第二階段啓動加載程序。我只找到了從floopy或hdd中讀取的例子。這裏使用的中斷是13h。在中斷描述中說它可以讀取軟盤和硬盤。我試圖用13h來讀一張CD,就好像它是一張軟盤,但它不起作用。引導程序如何讀取DVD(cd)?

問題:軟盤和dvd(在訪問它們的意義上)是否有區別,我可以使用CHS(cilinder,head,sector),它的扇區大小,我可以使用13h指令正確讀取一個DVD。也許是一些例子。我看了LILO的源代碼,發現只有13h,所以它必須工作。謝謝。

+1

我不完全確定(所以沒有答案),但我不認爲引導程序從DVD加載 - 它從軟盤或硬盤加載。 DVD/CD以仿真模式運行,並在啓動過程中暴露軟盤/光盤。 – TomTom

+0

我猜「模擬」這個詞是關鍵。我很快找到了解釋一切的「El Torito」擴展。你可以把它寫成答案,我會接受它。謝謝,我只是一個懶惰 – ilcredo

回答

2

引導加載程序從DVD加載 - 從軟盤或硬盤加載。 DVD/CD以仿真模式運行並在啓動過程中暴露軟盤/光盤

1

LILO無法從CD啓動,所以我不希望它包含任何讀取這些代碼的代碼。嘗試查看ISOLINUX引導加載程序,這是Linux啓動CD上最常用的。

+0

謝謝。我正在尋找ISOLINUX源代碼。 – ilcredo

4

您可以使用mkisofs工具從可啓動軟盤映像文件中製作可啓動CD。 這裏是我如何做到這一點在Windows下:

  1. 創建一個子目錄,CdFiles,包含啓動軟盤映像文件 ,floppy.img(1474560字節長),而且我想 在CD上的任何其他文件。
  2. mkisofs.exe -b floppy.img -v -r -l -o cd.iso CdFiles

它將創建一個CD ISO映像文件,cd.iso,您可以在CD和引導燒傷從磁盤或任何PC模擬器和引導直接從圖像使用。

BIOS將模擬光盤上的軟盤驅動器,其內容爲floppy.img,它將能夠通過int 13h使用驅動器號0正常訪問自身。爲了通過int 13h訪問整個CD,您需要創建一個硬盤驅動器映像(可啓動)並指定一個不同的仿真方法(不知道如何使用mkisofs,從未嘗試過hdd映像)。同樣的情況會發生,但是現在硬盤將在CD上模擬,並且在13h時將是驅動器編號80h。

+0

好的,有趣的工具。我正在使用MagicISO,但我會試一試。 – ilcredo