Как мне обновить Динамически Связанный Busybox в initramfs.cpio?

Я пытаюсь правильно поместить динамически связанный Busybox в файл initramfs.cpio. Я пытаюсь добавить сервер udhcpd в Busybox, который не был включен во встроенный образ. Затем я помещаю обновленную версию в мой файл initramfs.cpio для компиляции в мой linux kernal. Я не могу понять, какие файлы добавить и где их разместить. В файле initramfs.cpio на стоковом изображении платы не так много библиотек.

Я могу скомпилировать linux платы с их исходными файлами, обновить SD-карту и запустить перекомпилированное ядро. У них есть несколько дополнительных модулей для их платы, которые необходимы.

У меня настроен правильный кросс-компилятор, и я могу скомпилировать busybox с добавленными пакетами или без них, которые я хочу.

Я разобрался как упаковать

find . -depth -print | cpio -ov > ../initramfs.cpio  

и распаковать cpio

cpio -idv < initramfs.cpio  

Распакованный сток cpio выглядит следующим образом

- bin
    + busybox
    + cat2
- cgi_bin
    + cmd
    + download
    + index.cgi
    + mac
    + reboot
    + upload
- dev (empty directory)
- mnt (empty directory)
- proc (empty directory)
- sbin
    + bin2coe
    + dns-sd
    + load_fpga
    + mdnsd.bz2
    + sdctl
    + spiflashctl
    + strace.bz2
    + tshwctl
    + xuartctl
- slib
    + ld-uClibc.so.0
    + libc.so.0
    + libdns_sd.so
    + libutil.so.0
- sys (empty directory)
- tmp (empty directory)
- var
    - run (empty directory)

Настройки Busybox:

Cross Compiler Prefix:
/opt/toolchains/arm-ts-linux-uclibcgnueabi/bin/arm-ts-linux-uclibcgnueabi-

Path to sysroot:
/opt/toolchains/arm-ts-linux-uclibcgnueabi/arm-ts-linux-uclibcgnueabi/sysroot

Busybox Bin информация:

readelf -d _install/bin/busybox

Tag |  Type    | Name/Value  
0x01| (NEEDED) | Shared Library: [libc.so.0]   
0x0F| (RPATH)  | Library rpath: [/slib]  

Что я сделал:

Попытка 1
После запуска make install для busybox я скопировал двоичный файл busybox из _install / bin в мою распакованную директорию cpio test / bin. Я собрал cpio, а затем сделал ядро ​​с новым initramfs.cpio. Затем я запустил SD-карту с новой сборкой. Сбой

Попытка 2
Я скопировал следующие библиотеки из /opt/toolchains/arm-ts-linux-uclibcgnueabi/arm-ts-linux-uclibcgnueabi/sysroot/lib/

+ ld-uClibc.so.0
+ libc.so.0
+ libutil.so.0

и вставил их в мою распакованную директорию cpio test/slib. Затем я поместил двоичный файл из исходного источника, а затем один из моей сборки busybox в _install/bin, каждый в отдельной сборке. Каждая сборка работала некорректно. Сбой

У меня нет идей. Кажется, что все статически связывают его в своих руководствах, но у меня есть около 4 МБ для моего zImage, и в итоге он оказывается слишком большим для этого.

0 ответов

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