为什么在启动之前和之后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 /启动),但我不知道从哪里来(这个系统可以回到木头我想)! grub-mkdevicemap想把它重新生成为hd[0,1,2]->sd[a,b,c] (但是我没有让它)。 update-grub告诉我: warning: grub-probe can't find drive for /dev/sdb1 。 根据不断变化的枚举顺序,对于健康的device.map应该是什么样的build议? (我不清楚它是否应该包含启动前或启动设备枚举顺序)。

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

达到了预期的效果:在启动前或启动后的grub shell中,我感觉更加舒适,而且我知道>grub setup (hd1) (hd1,0)真的

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

也许在启动的时候你的grub做了一个驱动映射:

看这里

不知道这是怎么回事,但是我记得你只能从主硬盘启动,你需要使用映射的东西才能正确启动。 看看grub的configuration,也许这​​就是grub所做的。