Как мне обновить Динамически Связанный 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, и в итоге он оказывается слишком большим для этого.