为什么 GRUB 驱动器枚举在启动前后不同?

为什么 GRUB 驱动器枚举在启动前后不同?

我正在研究一个装有 Debian/Lenny 的系统,它安装在几个旧的 IDE PATA 驱动器(包括 /boot 在内的几个 RAID-1 分区)和一个最近添加的 SATA 驱动器上。系统运行良好,但我一直在研究 GRUB 设置,以便升级旧驱动器……

如果我在启动菜单出现时直接进入 grub 命令行并检查那里的驱动器(使用

grub> root (<TAB>...)

) 然后我看到 hd0 和 hd1 是 PATA,而 hd2 是 SATA。

但是,如果我在系统启动后执行相同的操作,则我会看到 hd0 现在是 SATA,而 hd1 和 hd2 是 PATA。(此外,系统将 /dev/sda、c、b 映射到 SATA、PATA、PATA。)

这让我有点担心grub>机器启动后从提示符进行更改。所以:

为什么 grub 看到的设备顺序在这两种情况下会发生变化?

还:

一些 GRUB 命令的正确运行似乎依赖于 device.map 的正确性。目前它包含一行:

(hd0)   /dev/md0

(即 RAID1 /boot)但我不知道它是从哪里来的(我认为这个系统可以追溯到 woody)! grub-mkdevicemap想要将其重新生成为hd[0,1,2]->sd[a,b,c](但我还没有让它生成)。 update-grub告诉我:warning: grub-probe can't find drive for /dev/sdb1。鉴于枚举顺序的变化,对于健康的 device.map 应该是什么样的,有什么建议吗?(我不清楚它是否应该包含启动前或启动后的设备枚举顺序)。

答案1

启动前驱动器顺序似乎与 BIOS 启动菜单中的顺序相对应。在那里进行更改对启动后顺序没有影响,所以我只是将其更改为与启动后顺序相同,并且启动后生成的新 devices.map 现在包含一些在启动前也有效的内容。

达到了预期的效果:我对在启动前或启动后的 grub shell 中乱搞感到更舒服了,而且我知道 a>grub setup (hd1) (hd1,0)在哪里真的去。

答案2

编辑您的/boot/grub/device.map文件以反映启动时间映射,并且使用命令行grub实用程序应该是完全安全的。

答案3

也许在启动时你的 grub 会进行驱动器映射:

看这里

不知道实际情况如何,但我记得有时你只能从主硬盘启动,并且需要使用映射功能才能正确启动。查看 grub 的配置,也许这​​就是 grub 所做的。

相关内容