有没有办法检索BIOS在其中找到并加载引导扇区的设备ID



我知道BIOS按照配置的顺序(可以在BIOS设置中更改(通过连接的存储设备(软盘、CD、硬盘驱动器等(,在每个扇区的第一个扇区末尾寻找神奇的16位值(0xAA55(,找到一个后加载(刚刚变成的(引导扇区并调用它。

让我们命名包含加载的引导扇区X的设备。我的问题是:你能识别X并使用BIOS的磁盘中断功能从中读取,而不必测试每个连接的设备,而不是在所有设备中循环吗?例如,BIOS是否将X的ID存储在某个地方?

谢谢。

附言:我在一台使用BOCHS模拟的IA-32机器上工作,我总是从软盘#1加载,这样我就可以对它的读取进行硬编码,但为了编写干净的代码和学习,我要求这样做。我承认测试所有设备绝对是可行的。

当BIOS将控制权传递给引导加载程序时;BIOS设备ID";在DL寄存器中,因此引导加载程序可以只使用它被告知用于所有后续BIOS功能的设备ID。

主要的问题是;BIOS设备ID";在早期引导之后(在OS开始使用其自己的磁盘驱动程序并停止使用BIOS功能之后(相对无用;因为没有简单的方法来确定哪个设备恰好被赋予了哪个";BIOS设备ID";;尤其是对于诸如";RAID 1镜像";其中您可能有两个内容基本相同的基本相同的硬盘驱动器。

我承认测试所有设备绝对是可行的。

Heh,no。在2个不同的硬盘驱动器上安装2个独立的操作系统副本(这样你就有了2个引导加载程序,每个操作系统副本一个(,这就不可能实现";测试所有设备";以区分您启动的操作系统和未启动的操作程序。

最新更新