一、配置,编译,安装BUSYBOX
1.1 配置BUSYBOX
①进入busybox所在目录,指定配置文件cd Hi3516A_SDK_V1<span class="token punctuation">.</span>
<span class="token number">0.5</span>
<span class="token number">.0</span>
<span class="token operator">/</span>osdrv<span class="token operator">/</span>opensource<span class="token operator">/</span>busybox<span class="token operator">/</span>busybox<span class="token operator">-</span>
<span class="token number">1.20</span>
<span class="token number">.2</span>
cp config_v300_soft <span class="token punctuation">.</span>config
- 1
- 2

make menuconfig
- 1
<span class="token punctuation">[</span>
<span class="token operator">*</span>
<span class="token punctuation">]</span>Build BusyBox as a <span class="token keyword">static</span> binary <span class="token punctuation">(</span>no shared libs<span class="token punctuation">)</span>
<span class="token punctuation">[</span>
<span class="token operator">*</span>
<span class="token punctuation">]</span> Build with Large File Support <span class="token punctuation">(</span>
<span class="token keyword">for</span> accessing files <span class="token operator">></span> <span class="token number">2</span> GB<span class="token punctuation">)</span>
- 1
- 2




vim Makefile
<span class="token number">164</span> CROSS_COMPLE<span class="token operator">=</span>armhisiv300<span class="token operator">-</span>linux<span class="token operator">-</span> <span class="token comment">//指定编译工具链</span>
<span class="token number">190</span> ARCH<span class="token operator">=</span>arm <span class="token comment">//arm体系架构</span>
- 1
- 2
- 3
- 4

1.2 编译和安装BUSYBOX
配置好busybox后,输入以下命令进行编译和安装make
make install
- 1
- 2
drwxr<span class="token operator">-</span>xr<span class="token operator">-</span>x <span class="token number">2</span> root root <span class="token number">4096</span> <span class="token number">2</span>月 <span class="token number">27</span> <span class="token number">14</span>
<span class="token punctuation">:</span>
<span class="token number">53</span> bin
lrwxrwxrwx <span class="token number">1</span> root root <span class="token number">11</span> <span class="token number">2</span>月 <span class="token number">27</span> <span class="token number">14</span>
<span class="token punctuation">:</span>
<span class="token number">53</span> linuxrc <span class="token operator">-></span> bin<span class="token operator">/</span>busybox
drwxr<span class="token operator">-</span>xr<span class="token operator">-</span>x <span class="token number">2</span> root root <span class="token number">4096</span> <span class="token number">2</span>月 <span class="token number">27</span> <span class="token number">14</span>
<span class="token punctuation">:</span>
<span class="token number">53</span> sbin
drwxr<span class="token operator">-</span>xr<span class="token operator">-</span>x <span class="token number">4</span> root root <span class="token number">4096</span> <span class="token number">2</span>月 <span class="token number">26</span> <span class="token number">17</span>
<span class="token punctuation">:</span>
<span class="token number">26</span> usr
- 1
- 2
- 3
- 4
- 5

二、使用BUSYBOX制作根文件系统
在成功安装 SDK 后,Hi3516A_SDK_V1.0.5.0/package/目录中已经有制作好的根文件系统rootfs_uclibc.tgz
mkdir rootbox
cd rootbox
cp <span class="token operator">-</span>R <span class="token punctuation">.</span>
<span class="token punctuation">.</span>
<span class="token operator">/</span>_install<span class="token comment">/* .
mkdir etc dev lib tmp var mnt home proc
</span>
- 1
- 2
- 3
- 4

- etc 目录可参考系统/etc 下的文件。其中最主要的文件包括 inittab、 fstab、 init.d/rcS文件等,这些文件最好从busybox 的 examples 目录下拷贝过来,根据需要自行修改。
- dev 目录下的设备文件,可以直接从系统中拷贝过来或者使用 mknod 命令生成需要的设备文件。拷贝文件时请使用 cp –R file。
- lib 目录是存放应用程序所需要的库文件,根据应用程序需要拷贝相应的库文件。
参考海思官方文档:《Hi3519AV100╱Hi3556AV100 开发环境用户指南.pdf》
1、进入busybox目录,解压busybox源代码包
cd osdrv/opensource/busybox/
tar -xvf busybox-1.26.2.tgz
2、配置busybox
# 引入交叉编译相关环境变量
source /etc/profile
# 配置busybox
cd busybox-1.26.2/
cp config_arm_himix200_a53_softfp_neon .config
make menuconfig
# 重点检查Busybox Settings ---> Build Options中交叉编译器的相关配置
# (arm-himix200-linux-) Cross Compiler prefix
# 其它配置项未修改,暂时保持默认
3、编译安装busybox
编译并安装成功后的busybox在_install目录<span class="token builtin">make</span>
<span class="token builtin">make</span> install
4、制作根文件系统
mkdir rootfs
cd rootfs/
cp -R /home/hisilicon/3519A/Hi3519AV100_SDK_V2.0.2.0/osdrv/opensource/busybox/busybox-1.26.2/_install/* .
mkdir etc dev lib tmp var mnt home proc
# 拷备linuxrc所依赖的库文件,linuxrc是一个链接文件,指向bin/busybox
# 如果不拷备依赖库文件,启动时会报错:Kernel panic - not syncing: Requested init /linuxrc failed (error -2).
# 拷备并创建ld-linux.so.3的软链接后仍然会报错:/linuxrc: error while loading shared libraries: libm.so.6: cannot open shared object file: No such file or directory
# Kernel panic - not syncing: Attempted to kill init! exitcode=0x00007f00
# 报错的原因是lib库文件的目录结构和交叉编译器中的目录结构不一致,解决的办法有两个:
# 1、在rootfs的lib目录建立a53_softfp_neon-vfpv4的软链接,使 a53_softfp_neon-vfpv4 -> ../lib/,并在lib目录创建ld-linux.so.3的软链接 ld-linux.so.3 -> ld-2.24.so*
# 2、在rootfs的lib目录建立a53_softfp_neon-vfpv4目录,将lib库文件拷备至此目录下,并在lib目录创建ld-linux.so.3的软链接 ld-linux.so.3 -> a53_softfp_neon-vfpv4/ld-2.24.so*
# 本文采用方法2,保持rootfs的lib库文件的目录结构和交叉编译器中的目录结构一致
cd lib
mkdir a53_softfp_neon-vfpv4
cp -R /opt/hisi-linux/x86-arm/arm-himix200-linux/target/lib/a53_softfp_neon-vfpv4/* .
cd ..
ln -s a53_softfp_neon-vfpv4/ld-2.24.so ld-linux.so.3
- etc目录可参考系统/etc 下的文件。其中最主要的文件包括inittab、fstab、init.d/rcS 文件等,这些文件最好从busybox 的examples目录下拷贝过来,根据需要自行修 改。
- dev目录下的设备文件,可以直接从系统中拷贝过来或者使用mknod命令生成需 要的设备文件。拷贝文件时请使用cp –R file。
- lib 目录是存放应用程序所需要的库文件,请根据应用程序需要拷贝相应的库文 件。
5、生成根文件系统镜像文件
前期使用NFS启动测试,暂时未测试