我正在尝试将动态链接的Busybox正确放入initramfs.cpio文件中。我正在尝试将udhcpd服务器添加到未包含在构建映像中的Busybox中。然后我将更新后的版本放入我的initramfs.cpio中,编译成我的linux内核。我无法确定要添加哪些文件以及放置它们的位置。董事会股票图片中的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
在为busybox运行make install之后,我将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,每个都在不同的版本中。每个构建都没有正确运行。的失败
我没有想法。 每个人似乎都在他们的指南中静态地链接它,但我的zImage大约有4MB,并且它最终太大了。