查找引导加载程序

SHW*_*SHW 6 linux boot-loader

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

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

编辑:

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

sda1:_________________________________________________________________________

File system:       
Boot sector type:  Unknown
Boot sector info:
Mounting failed: mount: unknown filesystem type ''
Run Code Online (Sandbox Code Playgroud)

/dev/sda是我必须启动的唯一设备。我想知道,如果只有可用的单个分区上没有已知的文件系统,那么它是如何引导的?

slm*_*slm 5

我不相信在/sys或下以有意义的方式跟踪此信息/proc。我能理解的唯一方法是在引导后您可以访问它,即通过查看 GRUB 或 Lilo 配置文件是否存在来询问系统,或者使用诸如bootinfoscript.

示例 - 检查引导设备

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

                      党卫军#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
Run Code Online (Sandbox Code Playgroud)

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

Binary file (standard input) matches
Run Code Online (Sandbox Code Playgroud)

示例 - 使用引导信息脚本

$ 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
    ...
Run Code Online (Sandbox Code Playgroud)

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

参考

  • 值得一提的是`sudo dd if=/dev/sda bs=512 count=1 2>&1 | strings` 可能会在这里结束,因为无论您在运行什么,您都会获得一些信息。 (2认同)