查找引导加载程序

查找引导加载程序

出于好奇,是否有可能找出哪个引导加载程序用于启动给定系统?系统启动的是GRUB,利洛或任何其他引导加载程序?

我想一定存在一些相同的/sys或变量?/proc

编辑:

引导信息摘要: => Lilo 安装在 /dev/sda 的 MBR 中

sda1:___________________________________________________________________

File system:       
Boot sector type:  Unknown
Boot sector info:
Mounting failed: mount: unknown filesystem type ''

/dev/sda是我必须用来启动的唯一设备。

我想知道,如果唯一可用的单个分区上没有已知的文件系统,那么它是如何启动的呢?

答案1

我不认为在 或 下以有意义的方式跟踪此/sys信息/proc。我能理解启动后您可以访问此信息的唯一方法是询问系统,查看是否存在 GRUB 或 Lilo 配置文件,或者使用诸如以下的脚本bootinfoscript

示例 - 检查启动设备

如果您知道系统是用哪个设备引导的,则可以使用dd转储引导加载程序的内容,然后grep转储 GRUB 或 LILO。

                      SS #1

您可以使用以下命令来确定您使用的是 GRUB 还是 LILO:

$ sudo dd if=/dev/sda bs=512 count=1 2>&1 | grep GRUB
$ sudo dd if=/dev/sda bs=512 count=1 2>&1 | grep LILO

返回此字符串的是您正在使用的引导加载程序:

Binary file (standard input) matches

示例 - 使用 bootinfoscript

$ sudo ./bootinfoscript --stdout
                  Boot Info Script 0.61      [1 April 2012]


============================= Boot Info Summary: ===============================

 => Grub2 (v1.99) is installed in the MBR of /dev/sda and looks at sector 1 of 
    the same hard drive for core.img, but core.img can not be found at this 
    location.

sda1: __________________________________________________________________________

    File system:       ext4
    Boot sector type:  -
    Boot sector info: 
    Operating System:  
    Boot files:        /grub2/grub.cfg
    ...

然而,这些方法都不是“决定性的”,因为多个引导加载程序可以共存,但至少它可以让您大致了解“可能”正在使用的引导加载程序。

参考

答案2

。但是,该脚本是用 Bash 编写的,因此如果您需要在嵌入式平台上运行它,则必须对其进行修改。我已经测试了这个脚本,它可以正确识别 Ubuntu 上的 GRUB 和 Slackware 上的 LILO。

答案3

要获取引导加载程序 ID,请使用引导加载程序类型

echo $((`cat /proc/sys/kernel/bootloader_type`>>4)) 

找你的引导加载程序 ID

相关内容