我刚刚在我的 Debian 系统 (SID) 上遇到了一系列启动问题,突然报告:
/grub/i386-pc/normal.mod not found.
最终我找回了它(fsck 将很多东西从 /boot 移到了 lost+found 中,我需要通过 grub-install 进行替换)
但是在一切正常之后,我重新安装了各种 grub-* 软件包(以防它们现在处于丢失+找到状态)。我注意到 grub.cfg 有很多不同之处,形式如下:
< set root='hd2,msdos1'
---
> set root='hd0,msdos1'
我的 /boot(和 /(root))设备现在是 /dev/sdc (hd2) 而不是 /dev/sda (hd0)。一方面我看不出它是如何/为什么改变的,但另一方面我意识到 /dev/sdX 名称不固定并且可以从一个引导更改为下一个引导。所以鉴于这一切,我的问题是:
grub.cfg 如何包含如下条目:
set root='hd2,msdos1'
因为(没有映射文件)这等同于 /dev/sdc ...如果在下次启动时该磁盘显示为 sdb 或 sda 怎么办?
ABTW。最初的原因可能是损坏的 /boot ...我注意到它是 ext2 ,我不能使用 ext4 吗?...现在不是默认设置吗?[错误985470 ]
它应该看起来像
所以初始值只是一个可选的提示。它真正做的是搜索文件系统 UUID。
grub-probe
( https://www.gnu.org/software/grub/manual/grub/html_node/Invoking-grub_002dprobe.html )的任务是将/dev/sda1
名称转换为(hd0,msdos1)
.但是如果转换失败,您可以使用设备映射文件 ( https://www.gnu.org/software/grub/manual/grub/html_node/Device-map.html#Device-map ) 来帮助它。
您可以键入以获取使用 Grub 命名方案的
grub-probe -t drive /
驱动器。/