出于好奇,是否有可能找出用于启动给定系统的引导加载程序?系统是否由 GRUB、Lilo 或任何其他引导加载程序引导?
我猜一定存在一些/sys
或/proc
相同的变量?
编辑:
启动信息摘要:=> Lilo 安装在 /dev/sda 的 MBR 中
sda1:_________________________________________________________________________
Run Code Online (Sandbox Code Playgroud)File system: Boot sector type: Unknown Boot sector info: Mounting failed: mount: unknown filesystem type ''
/dev/sda
是我必须启动的唯一设备。我想知道,如果只有可用的单个分区上没有已知的文件系统,那么它是如何引导的?
我不相信在/sys
或下以有意义的方式跟踪此信息/proc
。我能理解的唯一方法是在引导后您可以访问它,即通过查看 GRUB 或 Lilo 配置文件是否存在来询问系统,或者使用诸如bootinfoscript
.
如果您知道您的系统是用哪个设备引导的,您可以使用它dd
来转储引导加载程序的内容,然后转储到grep
GRUB 或 LILO。
您可以使用这些命令来确定您使用的是 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)
然而,这两种方法都不是“决定性的”,因为多个引导加载程序可以共存,但至少它可以让您大致了解“可能”正在使用的引导加载程序。