本人对于arm的了解属于小白阶段。刚刚学习了如何从零开始制作文件系统,与大家分享,希望能帮助到一些同学。
1、首先下载busybox.目前最新的稳定版为1.21.1;
2、在工作目录下创建根目录文件夹,rootfs.
ubuntu:~/PrjDev$ mkdir rootfs;
3、解压busybox,
ubuntu:~/PrjDev$tar jxvf busybox-1.21.1.tar.bz2;
4、进入busybox根目录,修改Makefile,修改ARCH和CROSS_COMPILE两个变量的值
ARCH =arm
CROSS_COMPILE=arm-xilinx-linux-gnueabi-
5、通过busybox的配置菜单配置制作文件系统
ubuntu:~/PrjDev/busybox-1.21.1$make menuconfig
系统将弹出配置菜单,只需要选择动态库编绎,其它基本不需要配置;
6、编译busybox使用命令make install CONFIG_PREFIX=/home/PrjDev/rootfs对busybox进行安装
编绎成功之后rootfs下面生成三个文件夹,bin,sbin,usr还有一个指向busybox的软链接linuxrc;
7、在rootfs下创建相关目录
mkdir boot dev etc home lib mnt proc root sys tmp var opt
8、下面开始建立及复制文件系统所需的文件
1)在/rootfs/dev/目录下建立 console和null节点文件
在提示符后输入 sudo mknod -m 666 console c 5 1
sudo mknod -m 666 null c 1 3
2)在/rootfs/etc目录下创建fstab和inittab文件
fstab文件内容如下:
none /proc proc defaults 0 0
none /dev/pts devpts mode=0622 0 0
tmpfs /dev/shm tmpfs defaults 0 0
inittab文件内容如下:
#[inittab]
::sysinit:/etc/init.d/rcS
::askfirst:-/bin/sh
::restart: /sbin/init
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a -r
::shutdown:/sbin/swapoff -a
创建完成后,再提示符下输入:chmod +x fstab inittab
3)在/rootfs/etc/init.d目录下建立rcS文件
在etc目录下创建init.d目录,在该目录下创建rcS文件,其内容如下:
#! /bin/sh
export PATH=/sbin:/bin:/usr/sbin:/usr/bin
echo "running /etc/init.d/rcS"
echo " mount -t proc proc /proc"
mount -t proc proc /proc
echo " mount -t sysfs /sys /sys"
mount -t sysfs /sys /sys
# echo " mount -t tmpfs /tmpfs /dev "
#/mount -t tmpfs /tmpfs /dev
#echo "mount ramfs filesystem to /var"
#/mount -t ramfs none /var
#echo "starting udevd..."
#/udevd --daemon
#/udevstart
#ln -s /dev/rtc0 /dev/rtc
#/mount -t yaffs2 /dev/mtdblock1 /home/
#hostname SBC6020
#ifconfig lo 127.0.0.1 netmask 255.0.0.0
#ifconfig eth1 192.192.192.200 netmask 255.255.255.0
#ifconfig eth0 hw ether 00:11:22:33:44:55
#ifconfig eth0 192.168.0.1 netmask 255.255.255.0
#/opt/apache/bin/apachectl start
#exec /etc/init.d/rcS.local
最后在提示符下输入:
Chmod +x rcS
4)复制lib库文件
将交叉编绎工具有下的lib文件拷贝到rootfs下的lib目录下。
Cp /lib/* /home/PrjDev/rootfs/lib/ -df
至此,文件系统制作完成,如果想移植opencv等库,只需要将交叉编绎工具编绎好的库文件也拷贝进来就行了。