引导程序如何读取DVD(CD)?

时间:2011-10-15 07:29:04

标签: assembly bootloader bios dvd

我有一个用汇编编写的第一阶段bootloader。我需要它从DVD(或cd)加载第二阶段引导加载程序。我只找到了从floopy或hdd中读取的示例。那里使用的中断是13h。在中断描述中,它说它可以读取软盘和硬盘。我试过用13h读取一张CD,好像它是一张软盘,但它不起作用。

问题:软盘和DVD之间是否存在差异(在访问它们的意义上),我可以使用CHS(cilinder,head,sector),它的扇区大小,我可以使用13h指令来正确读取DVD。也许是一些例子。我查看了LILO的源代码,发现只有13h,所以它必须工作。感谢。

3 个答案:

答案 0 :(得分:4)

您可以使用 mkisofs 工具从可启动软盘映像文件制作可启动CD。 以下是我在Windows下的操作方法:

  1. 创建一个包含可引导软盘映像的子目录CdFiles 文件,floppy.img(长1474560字节),以及我的任何其他文件 希望在CD上。
  2. mkisofs.exe -b floppy.img -v -r -l -o cd.iso CdFiles
  3. 它将创建一个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中最常用的。