Загрузите ядро +rootfs и загрузитесь на нем с помощью u-boot
Мы работаем с несколькими одноплатными компьютерами (SBC). Мы генерируем внедренные образы Linux с помощью Yocto (используя U-boot в качестве загрузчика) и разворачиваем его вручную на SD-картах. Сейчас это хорошо работает, когда мы находимся в фазе тестирования и у нас не так много SBC. Но позже это будет определенно слишком медленно.
У нас есть центральный сервер для сети SBC. В настоящее время это простой DHCP-сервер, влияющий на IP-адреса в зависимости от MAC-адресов плат. Во-первых, мы думали создать PXE-сервер, но кажется, что загрузчик внутренней загрузочной ПЗУ некоторых SBC (например, Freescale i.MX6 sabresd) не поддерживает процесс загрузки PXE.
Поэтому мы хотели бы загрузить на карты только u-boot, а затем использовать скрипт (boot.scr) для загрузки всего, что необходимо (zImage, dtb и rootfs) для загрузки. Мы не хотим использовать NFS (не тонкий клиент, мы хотим, чтобы все необходимое было загружено на карты). В настоящее время мы можем загрузить ядро и файл dtb, используя это:
U-Boot > dhcp ${image}; tftpboot ${fdt_addr} ${fdt_file} ; fdt addr ${fdt_addr}
U-Boot > bootz ${loadaddr} - ${fdt_addr}
Конечно, поскольку нет никаких rootfs, загрузка ядра заканчивается паникой ядра. Но мы не знаем, как скачать rootfs и собрать ядро, используя его. Любое предложение, как это сделать, приветствуется. Благодарю.
1 ответ
Итак, я нашел, как это сделать:
tftpboot 0x12000000 zImage
tftpboot ${fdt_addr} ${fdt_file}
tftpboot 0x19000000 core-image-minimal-boot.cpio.gz.u-boot
bootz 0x12000000 0x19000000 ${fdt_addr}
Чтобы создать .cpio.gz.u-boot
Я должен редактировать conf/local.conf
:
IMAGE_CLASSES += "image_types_uboot"
IMAGE_FSTYPES = "cpio.gz.u-boot"