在 Debian Linux 机器上,我遇到了一种非常奇怪的情况,开机后,GRUB 出现错误“没有这样的分区”,但如果我按下重置按钮,它就会正常启动。我试图诊断这种情况,然后我意识到我不知道哪个版本的引导加载程序安装在哪里? 我如何才能知道? 也就是说,我如何才能找出我的每个磁盘的 MBR 上安装了什么引导加载程序,以及如何找出各个分区上安装了哪些第二阶段引导加载程序?
如果我不能确切地知道我拥有什么,我愿意只知道哪个版本的 GRUB安装在哪里。
答案1
您可以查看 GRUB(1 或 2)是否安装在膜生物反应器和日:
dd if=/dev/sda bs=512 count=1 2> /dev/null | grep -q GRUB && echo "GRUB found"
如果找到 GRUB 签名,您可以运行:
file -s /dev/sda
如果输出类似于:
/dev/sda:x86 启动扇区;GRand Unified Bootloader,stage1 版本 0x3...........
那么你已经在 MBR 上安装了 GRUB1。如果没有提到 GRUB,如下所示:
/dev/sda:x86 启动扇区;分区 1:ID=0x83,活动,启动头 32,启动扇区 2048........
那么您就已在该磁盘的 MBR 上安装了 GRUB 2。
要查找必要的 GRUB 文件(GRUB 1 的“阶段”、GRUB 2 的“图像”):
GRUB 1:
配置文件:
find / -name menu.lst
阶段:
find / -name stage1
或者
find / -name stage2
GRUB 2:
配置文件:
find / -name grub.cfg
图片:
find / -name core.img
或者
find / -name boot.img