grub-mkconfig 从哪里获取 root 的 UUID?

grub-mkconfig 从哪里获取 root 的 UUID?

当我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

相关内容