我有一个用汇编编写的第一阶段bootloader。我需要它从DVD(或cd)加载第二阶段引导加载程序。我只找到了从floopy或hdd中读取的示例。那里使用的中断是13h。在中断描述中,它说它可以读取软盘和硬盘。我试过用13h读取一张CD,好像它是一张软盘,但它不起作用。
问题:软盘和DVD之间是否存在差异(在访问它们的意义上),我可以使用CHS(cilinder,head,sector),它的扇区大小,我可以使用13h指令来正确读取DVD。也许是一些例子。我查看了LILO的源代码,发现只有13h,所以它必须工作。感谢。
答案 0 :(得分:4)
您可以使用 mkisofs 工具从可启动软盘映像文件制作可启动CD。 以下是我在Windows下的操作方法:
CdFiles
文件,floppy.img
(长1474560字节),以及我的任何其他文件
希望在CD上。mkisofs.exe -b floppy.img -v -r -l -o cd.iso CdFiles
它将创建一个CD ISO映像文件cd.iso
,您可以在CD上刻录并从磁盘启动,也可以在任何PC仿真器中使用,直接从映像启动。
BIOS将模拟CD上的软盘驱动器,其内容为floppy.img
,它将能够通过int 13h使用驱动器号0正常访问自身。为了通过int 13h访问整个CD将需要创建一个硬盘驱动器映像(可启动)并指定一个不同的模拟方法(不知道如何使用mkisofs,从未尝试过硬盘驱动器映像)。同样的情况会发生,但现在硬盘驱动器将在CD上模拟,驱动器编号为80h,用于int 13h。
答案 1 :(得分:2)
引导加载程序从DVD加载 - 它从软盘或硬盘加载。 DVD / CD在仿真模式下运行,并在引导过程中暴露软盘/光盘
答案 2 :(得分:1)
LILO无法用于从CD启动,因此我不希望它包含任何用于读取这些内容的代码。试着看一下ISOLINUX bootloader,这是Linux启动CD中最常用的。