TI提供了参考的rootfs,但由于在实际产品中受到存储空间的限制,以及产品应用的实现要求,需要重新搭建rootfs。
rootfs的搭建通过使用开源软件busybox实现。
Busybox
RootFs使用Busybox进行搭建,关于Busybox的功能及使用请查看相关文档,这里简单介绍Busybox的编译流程.
下载最新的Busybox版本Busybox-1.22.1
解压后进入目录,运行make menuconfig
设置Cross Compiler prefix为arm-linux-gnueabihf-
设置Don't use /usr
保存配置退出
make && make install
Rootfs目录
使用busybox编译生成的文件,搭建Rootfs目录,流程如下:
创建rootfs文件夹
mkdir rootfs
cd rootfs
创建creat_rootfs.sh文件并执行,完成Rootfs目录结构的创建.
#!/bin/sh
#root dir
mkdir bin sbin lib etc dev sys proc tmp var opt mnt usr home root media
#usr sub dir
cd usr
mkdir bin sbin lib local
#usr/local sub dir
cd local
mkdir bin sbin lib
cd ../..
#etc sub dir
cd etc
touch inittab
touch fstab
touch profile
touch passwd
touch group
touch shadow
touch resolv.conf
touch mdev.conf
touch inetd.conf
mkdir rc.d
mkdir init.d
touch init.d/rcS
chmod +x init.d/rcS
mkdir sysconfig
touch sysconfig/HOSTNAME
cd ..
#dev sub dir
cd dev
mknod console c 5 1
chmod 777 console
mknod null c 1 3
chmod 777 null
cd ..
#var sub dir
cd var
mkdir log
cd ..
复制busybox编译生成的文件到rootfs下对应目录
使用arm-linux-gnueabihf-readelf –d查看busybox及qtlib文件依赖的库文件
从arm-linux-gnueabihf工具链的库文件中复制需要的内容到rootfs/lib
使用arm-linux-gnueabihf-strip对lib下的库文件进行压缩
编辑/etc/inittab文件
::sysinit:/etc/init.d/rcS
::respawn:-/bin/login
编辑/etc/fstab文件none /dev/pts devpts mode=0622 0 0
tmpfs /dev/shm tmpfs defaults 0 0
编辑/etc/group文件
root:x:0:root
编辑/etc/passwd文件
root:x:0:0:root:/root:/bin/sh
编辑/etc/profile文件
PATH=/bin:/sbin:/usr/bin:/usr/sbin
export LD_LIBRARY_PATH=/lib:/usr/lib
USER="`id -un`"
LOGNAME=$USER
PS1='[u@h W]# '
编辑/etc/init.d/rcS文件
#! /bin/sh
/bin/mount -n -t ramfs ramfs /var
/bin/mount -n -t ramfs ramfs /tmp
/bin/mount -n -t sysfs none /sys
/bin/mount -n -t ramfs none /dev
/bin/mkdir /var/tmp
/bin/mkdir /var/modules
/bin/mkdir /var/run
/bin/mkdir /var/log
/bin/mkdir -p /dev/pts
/bin/mkdir -p /dev/shm
echo /sbin/mdev > /proc/sys/kernel/hotplug
/sbin/mdev -s
/bin/mount –a