我有一个嵌入式ARM板,正在试验initramfs。
因为我的根文件系统是ext4,而ext4驱动程序是内置在内核中的(不是作为模块编译的),所以我可以直接引导内核并挂载根文件系统,不需要initramfs。当然,如果没有InRAMFS,内核将无法识别文件系统UUID,因此我用分区标识符PARtuuID指定了根,如内核文档中所描述的。所讨论的引导参数如下:
根= PtutuuID=7ACC80F1-01
这很好用。
现在,当我尝试用initramfs启动同一个内核版本时,系统将不会启动。它抱怨找不到根设备。当我改变引导参数来使用PtutuuID的文件系统UUID时,它又工作了:
根=uuid=c9fd552c-921c-4ddb-bb46-fe557943d311
但这是为什么?当内核最初支持PARTUUID时,为什么使用iNITRAFS会导致更少的启动选项?
我想以在两种设置中都能工作的唯一方式指定根,而不管是否使用initramfs。设备名(如/dev/sda1)不是一个选项,因为它们在引导过程中可能有所不同(连接了多个磁盘)。
有线索吗?
谢谢和问候,
蒂莫
备注:内核版本是mainline 4.4.16。U-boot是2015.5。发行版是Debian8。

最佳答案

好吧,我现在明白了。这是Debian的initramfs工具包中的一个已知问题:https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=801154
用于通过InRAMFS安装根文件系统的脚本不支持PARTUUID,但仅支持UUID。这在测试分布中已经解决了,但在当前的稳定中没有解决(杰西)。

10-07 21:45