Настройка initramfs с помощью buildroot и uboot
Я пытаюсь заставить initramfs работать на встроенном устройстве linux, используя buildroot и uboot. Я следовал инструкциям по настройке initramfs в buildroot и конфигурации ядра. Однако, насколько я могу судить, он не встроен в ядро, хотя CPIO или корневая FS включены в вывод.
Мои вопросы двоякие. Во-первых, правильно ли мое понимание процесса загрузки с точки зрения высокого уровня?
- Стартовый загрузчик 1 (для Atmel/ARM) запускается и отключается
- Загрузчик стадии 2 (uboot) инициализирует несколько вещей, загружает ядро в память и запускает его
- Ядро помещает архив 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 было неверным. Процесс
- Сборка ядра
- Создание всех корневых файловых систем (ext и CPIO)
- Восстановление ядра с CPIO внутри
- Упаковка файла ext в соответствии с моим файлом genimage.cfg
Это может быть интересно, если процесс сбивает вас с толку.
Вот что делала система
- Стартовый загрузчик 1 (для Atmel/ARM) запускается и отключается
- Загрузчик стадии 2 (uboot) инициализирует несколько вещей, а затем ведет себя так, как предписывает config, записывая ядро в память из раздела ext4 и выполняя его.
- В этом ядре не было cpio, поэтому он не работал.
Для лучшего понимания процесса и компонентов я смог реструктурировать свой файл img и использовать загрузчик для загрузки ядра, созданного с помощью cpio.