Rootfs на SD-карте

У меня есть устройство, на котором ядро ​​Linux 3.10 загружается в оболочку busybox (initramfs)

Когда я извлек образ файловой системы busybox на SD-карту и изменил корень с root=/dev/ram на /dev/mmcblck0p1, он все еще загружается в оболочку. Таким образом, busybox работает нормально, но если я попытаюсь использовать любую другую FS ядро рухнет...

Пока я пытаюсь сгенерировать rootfs с помощью debootstrap (https://help.ubuntu.com/community/DebootstrapChroot) и извлеките новые rootfs на SD-карту. Я получаю сообщение об ошибке «Не удалось выполнить /sbin/init». Я проверил, присутствует ли файл, а также проверил разрешения, и мне это кажется хорошим.

В чем может быть проблема?

W.R.T rootfs Я особенно новичок. Я предполагал, что любая FS на SD-карте может быть смонтирована, но похоже, что это не так. Я предполагаю, что все, что будет делать /sbin/init, зависит от устройства?

Что я пытаюсь сделать? ---> Мне нужно создать rootfs с несколькими пакетами и библиотеками (gcc, python и т.д.). Что было бы нормальным подходом? Я даже пробовал buildroot, но не смог получить цель gcc. Разве нельзя иметь gcc в /bin/ внутри buildroot?

-- ОБНОВИТЬ --

Я форматирую SD-карту в формат ext4, и вот результат fdisk

Disk /dev/sdb1: 7945 MB, 7945588224 bytes
255 heads, 63 sectors/track, 965 cylinders, total 15518727 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xc2aa4908

Device Boot      Start         End      Blocks   Id  System

Ниже приведены журналы ядра, пока у меня есть файловая система на SD-карте. Драйвер карты памяти работает нормально, я проверял это. Если у меня на SD-карте файловая система busybox, все работает нормально. Когда я использую любые другие файловые системы, я получаю следующее...

6EXT4-fs (mmcblk0p1): mounted filesystem with ordered data mode. Opts: (null)
6VFS: Mounted root (ext4 filesystem) on device 179:1.
6Freeing unused kernel memory: 84K (c0f00000 - c0f15000)
3request_module: runaway loop modprobe binfmt-464c
4kworker/u2:4 (145) used greatest stack depth: 6132 bytes left
3Failed to execute /sbin/init.  Attempting defaults...
3request_module: runaway loop modprobe binfmt-464c
3request_module: runaway loop modprobe binfmt-464c
0Kernel panic - not syncing: No init found.  Try passing init= option to kernel. See Linux Documentation/init.txt for guidance.

При проверке также есть /sbin/init с соответствующими разрешениями!


person kimi    schedule 23.04.2014    source источник
comment
В какой файловой системе отформатирована ваша SD-карта?   -  person oakad    schedule 24.04.2014
comment
Вам нужно включить вывод консоли в свой пост, чтобы мы могли видеть, где происходит сбой загрузки. Вам нужно убедиться, что в вашем ядре или в модуле, который загружается в файле initramfs, есть драйвер MMC. Аргументы загрузки ядра должны указывать тип файловой системы. Было бы хорошо, если бы вы выложили вывод fdisk на печать для вашей SD.   -  person Jonathan Ben-Avraham    schedule 24.04.2014
comment
файловая система @oakad ext4   -  person kimi    schedule 29.04.2014
comment
@JonathanBen-Avraham да, отредактировал исходный пост сам по себе   -  person kimi    schedule 29.04.2014
comment
Опубликуйте вывод команды p (print) в fdisk. Находится ли корневая файловая система в первом разделе SD? Потому что первый раздел — это то, что пытается смонтировать ваше ядро. Вы уверены, что U-Boot не в первом разделе, а файловая система во втором разделе?   -  person Jonathan Ben-Avraham    schedule 30.04.2014


Ответы (1)


Рассмотрим эту ошибку: «request_module: неуправляемый цикл modprobe binfmt-464c»

По всей вероятности, вы пытаетесь использовать 64-битные двоичные файлы (/sbin/init и остальные) только с 32-битным ядром. Либо перекомпилируйте ядро ​​для поддержки 64b, либо установите пользовательское пространство 32b на SD-карту.

Что еще нужно проверить:

  1. Убедитесь, что поддержка эльфов действительно включена в вашем ядре (обычно это так, но ее можно отключить).
  2. Погуглите эту ошибку и посмотрите, какие проблемы возникают у людей.
person oakad    schedule 29.04.2014
comment
Я проверил /sbin/init, и это 32-битный эльф + мое ядро ​​​​также является 32-битным ядром 3.10. Пользовательское пространство, которое я использую, — это пользовательское пространство Ubuntu Raring, но ядро ​​3.10 совершенно другое. Может ли это быть проблемой? - person kimi; 29.04.2014
comment
Тогда проверьте конфигурацию ядра. Он явно не способен загружать исполняемые файлы эльфа. - person oakad; 30.04.2014