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". Я проверил, присутствует ли файл, а также проверил права доступа, и он мне подходит.

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

WRT rootfs Я особенно новичок. Я предполагал, что можно установить любую ФС на 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-карте. Драйвер карты памяти работает нормально, я это проверил. Если у меня есть файловая система busybox на SD-карте, все работает нормально. Когда я использую любые другие файловые системы, я получаю следующее...

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 с соответствующими разрешениями, что тоже!

1 ответ

Рассмотрим эту ошибку: "request_module: runaway loop modprobe binfmt-464c"

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

Другие вещи, чтобы проверить:

  1. Убедитесь, что поддержка elf действительно включена в вашем ядре (обычно она есть, но ее можно отключить).
  2. Google эту ошибку и посмотреть, какие проблемы у людей были с этим.
Другие вопросы по тегам