明远智睿技术论坛

标题: busybox制作文件系统 [打印本页]

作者: myzr_soft    时间: 2020-1-20 08:33
标题: busybox制作文件系统
主机平台: UBUNTU14.04
硬件平台:明远智睿MY-IMX6-EK200-6Q-1G
内核版本 :linux-4.1.15
交叉编译链:arm-poky-linux-gnueabi



下载busybox: https://busybox.net/downloads/busybox-1.31.1.tar.bz2
配置交叉编译工具:
$ source /home/myzr/my-work/03_toolchain/fsl-imx-fb-glibc-x86_64-meta-toolchain-qt5-cortexa9hf-neon-toolchain-4.1.15-2.1.0/environment-setup-cortexa9hf-neon-poky-linux-gnueabi


解压:
$ tar xf busybox-1.31.1.tar.bz2
$ cd busybox-1.31.1
配置:
$ make menuconfig
Settings  --->
build options --->
     Cross compiler prefix (添加交叉编译工具链绝对路径):
/home/myzr/my-work/03_toolchain/fsl-imx-fb-glibc-x86_64-meta-toolchain-qt5-cortexa9hf-neon-toolchain-4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-

     Path to sysroot(添加sysroot路径):
/home/myzr/my-work/03_toolchain/fsl-imx-fb-glibc-x86_64-meta-toolchain-qt5-cortexa9hf-neon-toolchain-4.1.15-2.1.0/sysroots/cortexa9hf-neon-poky-linux-gnueabi

     Additional CFLAGS(配置环境参数):
-march=armv7-a -mfpu=neon -mfloat-abi=hard -mcpu=cortex-a9

     Additional LDFLAGS(配置环境参数):
--sysroot=/home/myzr/my-work/03_toolchain/fsl-imx-fb-glibc-x86_64-meta-toolchain-qt5-cortexa9hf-neon-toolchain-4.1.15-2.1.0/sysroots/cortexa9hf-neon-poky-linux-gnueabi

环境参数可以打印$CC查看
$ echo $CC
[attach]653[/attach]

开始编译busybox:

$ make
$ make install

进入到安装的目录,创建目录:
$ cd _install
$ mkdir root dev etc boot tmp var sys proc lib mnt home usr
$ mkdir etc/init.d etc/rc.d etc/sysconfig
$ mkdir usr/sbin usr/bin usr/lib usr/modules
$ sudo mknod -m 600 dev/console c 5 1
$ sudo mknod -m 600 dev/null  c 1 3
$ mkdir mnt/etc mnt/jffs2 mnt/yaffs mnt/data mnt/temp
$ mkdir var/lib var/lock var/run var/tmp
$ chmod 777 tmp
$ chmod 777 var/tmp

将交叉编译工具中的库复制到文件系统:
$ cp /home/myzr/my-work/03_toolchain/fsl-imx-fb-glibc-x86_64-meta-toolchain-qt5-cortexa9hf-neon-toolchain-4.1.15-2.1.0/sysroots/cortexa9hf-neon-poky-linux-gnueabi/usr/lib/ -rd
$ cp /home/myzr/my-work/03_toolchain/fsl-imx-fb-glibc-x86_64-meta-toolchain-qt5-cortexa9hf-neon-toolchain-4.1.15-2.1.0/sysroots/cortexa9hf-neon-poky-linux-gnueabi/usr/lib/* usr/lib/ -rd

由于这个工具链中是包含了QT库的,所以最后打包得到的文件系统会比较大(188M左右)
也可以选择复制工具链5.3中的库(只有一些基础库),得到的文件系统会比较小(44M左右),命令如下:

$ cp ~/gcc-linaro-5.3-2016.02-x86_64_arm-linux-gnueabihf/lib/* lib -rd
$ cp ~/gcc-linaro-5.3-2016.02-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/lib/* lib -rd
$ cp ~/gcc-linaro-5.3-2016.02-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/lib/* lib -rd  
$ cp ~/gcc-linaro-5.3-2016.02-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/usr/lib/* usr/lib -rd

$ cd etc
$ vi inittab
复制以下内容:
::sysinit:/etc/init.d/rcS                                                                                                                                            
console::askfirst:-/bin/sh
::restart:/sbin/init  
::ctrlaltdel:/sbin/reboot  
::shutdown:/bin/umount -a -r  
::shutdown:/sbin/swapoff -a

$ chmod a+x inittab  
$ cd init.d
$ vi rcS
复制以下内容:
mount -a
echo "Starting..."
echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s
/bin/hostname -F /etc/sysconfig/HOSTNAME

$ chmod a+x rcS
$ cd ..
$ vi profile
复制以下内容:
PATH=/bin:/sbin:/usr/bin:/usr/sbin                                                                                                                       
export PATH   
#set hostname   
HOSTNAME='/bin/hostname'
export HOSTNAME   
# Set PS1   
PS1='[\u@\h \W]\$'
export PS1

拷贝主机/etc目录下的passwd和group文件到etc目录下:

$ cp /etc/passwd ./
$ cp /etc/group ./
$ cd sysconfig
$ vi HOSTNAME
在文件中写入主机名,我这里写的是:myzr

打包文件系统   
$ cd ../..
$ tar -cjvf rootfs.tar.bz2 *

[attach]654[/attach]
rootfs.tar.bz2 即为打包好的文件系统,放入烧录工具中进行烧录,烧录成功后启动:

[attach]655[/attach]







欢迎光临 明远智睿技术论坛 (http://bbs.myzr.com.cn/) Powered by Discuz! X3.2