Настройка initramfs с помощью buildroot и uboot

Я пытаюсь заставить initramfs работать на встроенном устройстве linux, используя buildroot и uboot. Я следовал инструкциям по настройке initramfs в buildroot и конфигурации ядра. Однако, насколько я могу судить, он не встроен в ядро, хотя CPIO или корневая FS включены в вывод.

Мои вопросы двоякие. Во-первых, правильно ли мое понимание процесса загрузки с точки зрения высокого уровня?

  1. Стартовый загрузчик 1 (для Atmel/ARM) запускается и отключается
  2. Загрузчик стадии 2 (uboot) инициализирует несколько вещей, загружает ядро ​​в память и запускает его
  3. Ядро помещает архив CPIO в память, создает этот корень и запускает init в этой среде

Это означает, что образ, который я вставляю в чип, является IMG с загрузочным и системным разделом, системный раздел - ext4 и содержит архив CPIO внутри. Я не уверен, как сделать пункт 3 на самом деле отсюда.

Во-вторых, с точки зрения реальных конфигураций, настройка меню Buildroot имеет ряд опций для файловых систем.

  • корневая файловая система ext2/3/4 (по умолчанию включена)
  • cpio корневая файловая система (для использования в качестве начальной файловой системы RAM)
  • исходная файловая система RAM, связанная с ядром Linux

Тогда в конфиге ядра

  • Общее -> Поддержка начальной файловой системы RAM и диска RAM (initramfs/initrd)
  • Общие -> Исходные файлы Initramfs (задайте сгенерированный файл cpio)

Что генерирует buildroot здесь? С моей стороны, похоже, я получаю дубликаты изображений (CPIO и ext4), а CPIO игнорируется.

1 ответ

Для людей, у которых может возникнуть тот же вопрос, лучший способ продвинуться в том, чтобы лучше познакомиться с Uboot и его возможностями. В частности, роль uboot-env.txt в этом процессе.

Мое понимание buildroot было неверным. Процесс

  1. Сборка ядра
  2. Создание всех корневых файловых систем (ext и CPIO)
  3. Восстановление ядра с CPIO внутри
  4. Упаковка файла ext в соответствии с моим файлом genimage.cfg

Это может быть интересно, если процесс сбивает вас с толку.

Вот что делала система

  1. Стартовый загрузчик 1 (для Atmel/ARM) запускается и отключается
  2. Загрузчик стадии 2 (uboot) инициализирует несколько вещей, а затем ведет себя так, как предписывает config, записывая ядро ​​в память из раздела ext4 и выполняя его.
  3. В этом ядре не было cpio, поэтому он не работал.

Для лучшего понимания процесса и компонентов я смог реструктурировать свой файл img и использовать загрузчик для загрузки ядра, созданного с помощью cpio.

Другие вопросы по тегам