2015-07-20 3 views
1

На встроенной платформе под управлением Linux 2.6.36 я иногда сталкиваюсь с проблемой, когда файлы не отображаются в корневой файловой системе, которые ARE присутствуют в нашем файле c initiofs cpio.Файлы «исчезают» из initramfs

Я строю initramfs из файла списка cpio (см. gen_init_cpio.c), но также столкнулся с проблемой до того, как просто использовать полный каталог.

Когда я говорю, что знаю, что файлы присутствуют в файле cpio, я имею в виду, если я извлечу usr/initrmafs_data.cpio.gz, файлы есть.

Похоже, что это связано с количеством содержимого в initramfs, но я не нашел волшебное количество файлов и/или общий размер хранилища, из-за чего файлы начинают исчезать.

Есть ли опция в make menuconfig Мне не хватает, чтобы это исправить? Аргумент загрузки? Что-то другое?

Любые предложения?

Update: Для того, чтобы уточнить, что это с встроенным псевдодиска использованием CONFIG_INITRAMFS_SOURCE и он сжат с Gzip с помощью установки CONFIG_INITRAMFS_COMPRESSION_GZIP. Кроме того, это для платформы mipsel-linux.

Обновление # 2: Я добавил печать на init/initramfs.c:clean_path и таинственным образом, ранее «исчезающие» файлы теперь все там. Я думаю, что эта сортировка, похоже, указывает на ошибку ядра, если попытка зарегистрировать поведение изменила поведение. Я сравню initramfs.c против нового ядра завтра, чтобы узнать, не проливает ли свет на этот вопрос.

+1

Голосовать против закрытия: с каких проблем возникают проблемы с компиляцией * ядра на superuser.com? В настоящее время я добавляю утверждения 'printk' и взламываю файлы init/*. C, чтобы понять это. –

+0

Это вопрос интеграции, который по теме, но граничит здесь, полностью offside для [su], borderline [unix.se] и, вероятно, будет лучше всего [на собственном сайте] (http://area51.stackexchange.com/proposals/70800/embedded-systems?referrer=ugotaNldoh5JOVkcEm-iDw2) , – Gilles

ответ

0

Возможно, размер вашего изображения больше, чем размер ramdisk по умолчанию (4 МБ afaik). Убедитесь, что добавление ramdisk_size=valuebiggerthanyourimagesize в качестве параметра ядра (до параметра root=...) решает вашу проблему. Вы также можете попробовать изменить значение конфигурации ядра CONFIG_BLK_DEV_RAM_SIZE.

+0

Хорошее предложение, но не повезло и с. :(CONFIG_BLK_DEV_RAM_SIZE уже * значительно * больше, чем после декомпрессии изображения initramfs. –

+0

Ну, похоже, я запутал initrd с initram с initramfs, поэтому этот параметр действительно не имеет значения. Файлы также исчезают, если вы не создаете initramfs в ядро, но загрузите его как initrd (если ваш загрузчик может сделать это из c)? – nsilent22

Смежные вопросы