Как загрузить initrd в память для передачи ядра при использовании kexec?

Поскольку порт MIPS kexec не поддерживает параметр --initrd , я ищу обходные пути для имитации функции. Согласно вики Linux / MIPS , ядра MIPS поддерживают rd_size командной строки ядра rd_start и rd_size для указания местоположения initrd. Мне интересно, можно ли загрузить initrd в память и передать его по параметрам ядра?

Если это возможно, где в памяти я должен загрузить файл и как его загрузить? Я думал о конкатенации ядра и initrd в один файл, но как получить адрес, где kexec загрузил новое ядро?

Немного фона: у меня есть wifi-маршрутизатор WNDR3700, работающий под OpenWrt с ядром kexec'd. Моя цель – загрузить в ядро ​​OpenWrt vanilla, хранящееся на USB, чтобы облегчить обновление. Проблема (в настоящее время) заключается в том, что модули usb не встроены в ядро, но вместо этого они предоставляются в качестве загружаемых модулей ядра. Я могу загрузиться с usb на другое ядро, используя встроенные initramfs, но использование initramfs требует от меня компиляции ядра, не так ли? Таким образом, можно ли встроить initramfs / initrd в существующий двоичный файл / elf (без какого-либо ramdisk) и избежать повторной компиляции ядра?

Кроме того, очевидно, что сборка модулей usb в ядре требует перекомпиляции ядра, поэтому это не вариант.

One Solution collect form web for “Как загрузить initrd в память для передачи ядра при использовании kexec?”

Если это возможно, где в памяти я должен загрузить файл и как его загрузить?

На небольших устройствах Linux вы определили области памяти:

 $ cat /proc/mtd dev: size erasesize name mtd0: 00020000 00010000 "u-boot" mtd1: 00102b20 00010000 "kernel" mtd2: 006cd4e0 00010000 "rootfs" mtd3: 00510000 00010000 "rootfs_data" mtd4: 00010000 00010000 "art" mtd5: 007d0000 00010000 "firmware" 

Будьте осторожны, чтобы не наклеить устройство.

  • GCC (toolchain) для Ralink SoC - ELF не найден и синтаксическая ошибка
  • bnx2: Не удается загрузить файл прошивки «bnx2 / bnx2-mips-09-6.2.1b.fw»
  • Нужна помощь Кросс-компиляция Openssl для MIPS
  • Как загружать Linux с помощью rootfs в ОЗУ?
  • Как установить Linux на Playstation 2
  • Больше ничего не видно на консоли после «Начало ядра ...»
  • Linux и Unix - лучшая ОС в мире.