为什么我在使用 initramfs 时不能用 PARTUUID 指定我的 rootfs?
Why can't I specify my rootfs with PARTUUID when I use initramfs?
我有一块嵌入式 ARM 板,正在试验 initramfs。
由于我的根文件系统是EXT4,而EXT4驱动是内核内置的(没有编译成模块),所以我可以直接启动内核并挂载根文件系统,不需要 initramfs。 如果没有 initramfs,内核当然不会识别文件系统 UUID,因此 我用分区标识符 PARTUUID 指定了 root,如内核中所述文档。有问题的引导参数如下所示:
root=PARTUUID=7acc80f1-01
这很好用。
现在,当我尝试使用 initramfs 引导相同内核版本 时,系统无法引导 。它抱怨找不到根设备。当我将引导参数更改为 使用文件系统 UUID 而不是 PARTUUID 时,它再次工作 :
根=UUID=c9fd552c-921c-4ddb-bb46-fe557943d311
但这是为什么呢? 当内核首先支持 PARTUUID 时,为什么使用 initramfs 会导致启动选项更少?
我想以独特的方式指定 root,无论是否使用 initramfs,这两种设置都适用。 /dev/sda1 之类的设备名称不是一个选项,因为它们在引导期间可能会发生变化(连接多个磁盘)。
有什么线索吗?
感谢和问候,
蒂莫
P.S:内核版本是主线4.4.16。 U-Boot 是 2015.5。发行版是 Debian 8.
好的,我现在明白了。这是 Debian 的 initramfs-tools 包中的一个已知问题:https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=801154
initramfs 用于挂载根文件系统的脚本不支持PARTUUID,只支持UUID。 这已在测试发行版中解决,但在当前稳定版 (Jessie) 中尚未解决。
我有一块嵌入式 ARM 板,正在试验 initramfs。
由于我的根文件系统是EXT4,而EXT4驱动是内核内置的(没有编译成模块),所以我可以直接启动内核并挂载根文件系统,不需要 initramfs。 如果没有 initramfs,内核当然不会识别文件系统 UUID,因此 我用分区标识符 PARTUUID 指定了 root,如内核中所述文档。有问题的引导参数如下所示: root=PARTUUID=7acc80f1-01 这很好用。
现在,当我尝试使用 initramfs 引导相同内核版本 时,系统无法引导 。它抱怨找不到根设备。当我将引导参数更改为 使用文件系统 UUID 而不是 PARTUUID 时,它再次工作 : 根=UUID=c9fd552c-921c-4ddb-bb46-fe557943d311 但这是为什么呢? 当内核首先支持 PARTUUID 时,为什么使用 initramfs 会导致启动选项更少?
我想以独特的方式指定 root,无论是否使用 initramfs,这两种设置都适用。 /dev/sda1 之类的设备名称不是一个选项,因为它们在引导期间可能会发生变化(连接多个磁盘)。
有什么线索吗?
感谢和问候,
蒂莫
P.S:内核版本是主线4.4.16。 U-Boot 是 2015.5。发行版是 Debian 8.
好的,我现在明白了。这是 Debian 的 initramfs-tools 包中的一个已知问题:https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=801154
initramfs 用于挂载根文件系统的脚本不支持PARTUUID,只支持UUID。 这已在测试发行版中解决,但在当前稳定版 (Jessie) 中尚未解决。