当我grub-mkconfig
在 Debian 10 上运行时,它会生成如下内容:
...
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2 fc6c3fbf-8cfc-411c-ac5d-072c6e8c8092
else
search --no-floppy --fs-uuid --set=root fc6c3fbf-8cfc-411c-ac5d-072c6e8c8092
fi
linux /boot/vmlinuz-4.19.0-9-amd64 root=UUID=e0674dbf-3546-4898-9933-c9eb55703cb5 ro single
initrd /boot/initrd.img-4.19.0-9-amd64
...
这段程序正在做什么以及为什么它使用不同的 UUID?这些 UUID 是从哪里获取的?
答案1
这些是两个文件系统/
和/boot
.
第一部分告诉 grub 如何查找/boot
包含 Linux 内核(和 initramfs)的分区:
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2 fc6c3fbf-8cfc-411c-ac5d-072c6e8c8092
else
search --no-floppy --fs-uuid --set=root fc6c3fbf-8cfc-411c-ac5d-072c6e8c8092
fi
下一节告诉 grub 引导 Linux,传递控制其使用的文件系统的根内核参数,如下所示/
:
linux /boot/vmlinuz-4.19.0-9-amd64 root=UUID=e0674dbf-3546-4898-9933-c9eb55703cb5 ro single
我从未研究过它是如何找到它们的,但最终它们是由 控制的/etc/fstab
。值得注意的是,如果您将 fstab 更改为指向不同的文件/
,或者/boot
您应该始终以 root 身份运行此命令:
update-grub