Настройка initramfs с помощью buildroot и uboot - PullRequest
0 голосов
/ 07 декабря 2018

Я пытаюсь заставить 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

Затем в конфигурации ядра

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

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

1 Ответ

0 голосов
/ 08 декабря 2018

Для людей, у которых может возникнуть один и тот же вопрос, лучший способ продвинуться - лучше узнать 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.

...