在运行Linux 2.6.36的嵌入式平台上,我偶尔遇到一个问题,即文件没有出现在我们的initramfs cpio文件中 ARE 的根文件系统中。
我正在从cpio列表文件构建initramfs(请参阅gen_init_cpio.c
),但在使用完整目录之前也遇到了问题。
当我说我知道文件存在于cpio文件中时,我的意思是如果我提取usr/initrmafs_data.cpio.gz
文件就在那里。
它似乎与initramfs中的内容量松散相关,但我还没有找到导致文件开始消失的文件数量和/或总存储空间大小。
make menuconfig
中是否有选项可以解决此问题?引导参数?还有别的吗?
有什么建议吗?
更新:为了澄清,这是使用CONFIG_INITRAMFS_SOURCE
的内置ramdisk,并通过设置CONFIG_INITRAMFS_COMPRESSION_GZIP
使用gzip进行压缩。此外,这适用于mipsel-linux
平台。
更新#2 :我已经向init/initramfs.c:clean_path
添加了一个printk,神秘地说,先前已经消失了#34;"文件现在都在那里。我认为如果尝试记录行为改变行为,这种方式似乎指向内核错误。我明天将initramfs.c与一个较新的内核进行比较,看看是否能够解决这个问题。
答案 0 :(得分:0)
可能你的图像尺寸大于默认的ramdisk尺寸(4MB afaik)。检查添加ramdisk_size=valuebiggerthanyourimagesize
作为内核参数(在root=...
参数之前)是否解决了您的问题。您还可以尝试更改内核配置值CONFIG_BLK_DEV_RAM_SIZE
。