【问题标题】:Why can't I specify my rootfs with PARTUUID when I use initramfs?为什么我在使用 initramfs 时不能用 PARTUUID 指定我的 rootfs?
【发布时间】:2016-08-05 08:31:14
【问题描述】:

我有一块嵌入式 ARM 板,正在试验 initramfs。

由于我的根文件系统是 EXT4 并且 EXT4 驱动程序内置在内核中(未编译为模块),我可以直接启动内核并挂载根文件系统,不需要 initramfs。 如果没有 initramfs,内核当然不会识别文件系统 UUID,因此 我使用分区标识符 PARTUUID 指定了 root,如内核文档中所述。有问题的引导参数如下所示: 根=PARTUUID=7acc80f1-01 这很好用。

现在,当我尝试使用 initramfs 引导相同的内核版本时,系统将无法引导。它抱怨找不到根设备。当我将引导参数更改为 使用文件系统 UUID 而不是 PARTUUID 时,它会再次起作用: 根=UUID=c9fd552c-921c-4ddb-bb46-fe557943d311 但这是为什么呢? 当内核首先原生支持 PARTUUID 时,为什么使用 initramfs 会导致更少的引导选项?

我想以在两种设置中都有效的独特方式指定 root,无论是否使用 initramfs。 /dev/sda1 等设备名称不是一个选项,因为它们在引导期间可能会有所不同(连接了多个磁盘)。

有什么线索吗?

感谢和问候,

提莫

P.S: 内核版本为 mainline 4.4.16。 U-Boot 是 2015.5。发行版是 Debian 8。

【问题讨论】:

  • 小错字:U-Boot 版本是 2016.5,而不是 2015.5。
  • 你可以edit你的问题来改进它(修正错误,附加额外的信息,等等)。
  • initramfs 与分区无关。它只是一个在内核中虚拟挂载为分区的存档。
  • @AndyShevchenko:我真的不明白你想说什么。 initramfs 提供早期用户空间来挂载根文件系统(当需要某些驱动程序来实际访问磁盘/文件系统时,这对模块化内核很有用)。在这方面,它处理设备/分区/文件系统。但无论如何,我自己想通了这个问题。这是一个已知的 Debian 问题,请参阅下面的答案。
  • initramfs 不是分区。这就是我的观点。

标签: linux linux-kernel kernel initrd


【解决方案1】:

好的,我现在想通了。这是 Debian 的 initramfs-tools 软件包中的一个已知问题:https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=801154

initramfs 用来挂载根文件系统的脚本不支持PARTUUID,只支持UUID。 这已在测试发行版中解决,但在当前稳定版(Jessie)中没有解决。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-13
    • 1970-01-01
    • 2012-10-30
    • 1970-01-01
    • 2019-06-03
    • 1970-01-01
    相关资源
    最近更新 更多