如何判断Linux下哪些磁盘将被BIOS使用来启动?

问题描述:

如何从CMOS打印哪些设备将在重启后用作启动设备?如何判断Linux下哪些磁盘将被BIOS使用来启动?

计算机有几个SATA磁盘驱动器和几个可引导的USB设备连接。

CMOS存储器的布局由所使用的BIOS版本定义。 我知道有几个不同的版本和BIOS的制造商。我认为可以通过检查BIOS内存来确定使用哪一个。不知怎的,喜欢在这个问题上 - How to check the BIOS version or name in Linux through a command prompt?

我的电脑给

$ sudo dmidecode -t bios -q 
BIOS Information 
    Vendor: Award Software International, Inc. 
    Version: F4 
    ... 
Characteristics: 
    Boot from CD is supported 
    Selectable boot is supported 
    USB legacy is supported 
    BIOS boot specification is supported 
    ... 

我没有重启大型机和只看BIOS设置的可能性。这就是为什么我需要知道他们而不重新启动。

# dmidecode --type 32 --dump 

Handle 0x0025, DMI type 32, 11 bytes 
System Boot Information 
Status: No errors detected 
Header and Data: 
    20 0B 25 00 00 00 00 00 00 00 00 
Strings: 
    20 00 
    " " 

发现了一些文件,
http://www.scs.stanford.edu/05au-cs240c/lab/specsbbs101.pdf
http://www.dmtf.org/standards/smbios
http://www.dmtf.org/sites/default/files/standards/documents/DSP0134_2.8.0.pdf
但他们还嫌我。理想情况下,我需要一些命令行工具(或者如何编写它的信息),这将帮助我了解哪个设备(/ dev/sd?)将被引导。

有关于Windows类似的问题,但还没有明确的答案 - How to tell which disk Windows Used to Boot

如果是抱着启动顺序和工具“efibootmgr”,可以帮助UEFI有定义的变量可以访问它们:http://linux.dell.com/files/efibootmgr/efibootmgr-0.5.4/efibootmgr.txt

如果这实际上是一个基于BIOS的系统,而不是UEFI,那么就没有通用的可靠方法来确定将从哪个磁盘启动。对于许多BIOS版本,默认情况下启动的磁盘甚至可能从一个启动到下一个启动都随机更改,因为设备按不同的顺序枚举。

如果你想在基于BIOS的机器上可靠地启动GNU/Linux,标准的解决方案是确保grub的启动扇区被安装到BIOS可能决定启动的任何驱动器的MBR上。如果你的发行版在grub包得到更新时自动重新安装grub(它应该,而且大部分都是这样),那么你应该确保你的发行版被配置为重新安装grub的引导扇区到所有驱动器。