如何知道磁盘上是否安装了grub,以及它是否具有什么设置(值得注意的是,它对root参数具有什么设置)
我需要检查软件RAID1阵列中的许多磁盘,以确保两个磁盘都安装了grub,并且每个磁盘上的grub具有适当的根值。
grub
普遍使用0.9x 或更低的值,并且很久之后才将其重命名为grub-legacy
。如果您对此感到困扰,建议您专门问一个新问题grub2
。或者,进行一场运动,纠正因时间流逝而过时的每个问题和答案。
如何知道磁盘上是否安装了grub,以及它是否具有什么设置(值得注意的是,它对root参数具有什么设置)
我需要检查软件RAID1阵列中的许多磁盘,以确保两个磁盘都安装了grub,并且每个磁盘上的grub具有适当的根值。
grub
普遍使用0.9x 或更低的值,并且很久之后才将其重命名为grub-legacy
。如果您对此感到困扰,建议您专门问一个新问题grub2
。或者,进行一场运动,纠正因时间流逝而过时的每个问题和答案。
Answers:
您可以file
用来识别MBR中的GRUB。例如
# file -s /dev/sda
/dev/sda: x86 boot sector; GRand Unified Bootloader, stage1 version 0x3
, stage2 address 0x2000, stage2 segment 0x200; partition 1:
ID=0xfd, starthead 1, startsector 63, 1044162 sectors; partition
2: ID=0x82, starthead 0, startsector 1044225, 1028160 sectors;
partition 3: ID=0xfd, starthead 0, startsector 2072385,
1951447680 sectors, code offset 0x48
该root=
paramater不存储在MBR,这是存储在GRUB的menu.lst
文件,该文件被存储在文件系统(通常在根文件系统的/ boot / grub目录或/ boot文件系统的grub目录-但并非总是如此,它可能在任何地方)。
您必须解析上面文件的输出,确定文件在哪个磁盘/分区menu.lst
上,挂载它,读入它并解析它。您还需要读入grub / default文件,以找出哪个grub菜单项是默认的,因为这可能是您最感兴趣的root =参数的菜单项。
替代方法
file -s
在Ubuntu Lucid中对我不起作用,因为我的文件命令的魔术文件已过期。如果您的魔术文件没有赶上GRUB更改,执行此操作的另一种方法是使用如下dd
命令检查设备的前512个字节:
user@host:~$ sudo dd bs=512 count=1 if=/dev/sda 2>/dev/null | strings
ZRr=
`|f
\|f1
GRUB
Geom
Hard Disk
Read
Error
这将dd
通过strings
命令发送命令的输出,从而去除不可打印的字符(传输统计信息将丢弃到/dev/null
)。
如果您看到GRUB遇到故障时会显示的任何消息,则说明您已安装了grub。
在ubuntuforums.org上给louib的帽子提示,以在受密码保护的帖子中回答:http ://ubuntuforums.org/showthread.php?t=363372
出于好奇,这是我从中得到的file -s
:
user@host:~$ sudo file -s /dev/sda
/dev/sda: x86 boot sector; partition 1: ID=0x83, active, starthead 32, startsector 20
48, 337211392 sectors; partition 2: ID=0x5, starthead 254, startsector 337215486, 1434214
6 sectors, code offset 0x63
那里没有关于GRUB的任何东西。
file -s
命令上尝试过的系统使用的是grub-pc,它显然是GRUB2,所以听起来您部分正确。但是,我file -s
在其他一些运行GRUB 0.97的系统上运行,并且在某些系统上运行,而在其他系统上却没有运行。这些系统之间的区别在于file命令附带的魔术文件中的数字。交换幻数文件确认来自非工作系统的定义导致了工作系统失败。
您可以grub-emu
用来查看grub在下次重新启动计算机时将显示的菜单。
$ sudo apt-get install grub-emu
$ sudo grub-emu
在我的台式机上,菜单按预期显示,尽管如果我实际上假装引导内核,则会出现“无此设备”错误。我认为这是预期的行为。
在我的DigitalOcean VPS上,grub菜单中没有显示任何条目,尽管服务器实际上确实可以重启。(这是2013年的VPS,因此您的里程可能会有所不同。)
运行时的一些注意事项grub-emu
:
c
然后键入退出仿真器exit
。reset
。(请放心,它不会重启您的计算机。它只会清理您的终端。)c
紧跟着打字exit
对我没有用。