今天学习嵌入式cramfs文件系统的制作。
操作环境,ubuntu11.04。工具:busybox1.13.0、cross-arm-linux-4.2.2-eabi交叉编译器。
一、安装busybox1.13.0
在这一阶段真的是把我给害苦了,因为不是很清楚busybox1.13.0的配置原理,所以上面的很多选项都是尝试的做的。好了直接说一下安装步骤。
1、下载。2.解压。3、创建路径mkdir/rootfs
4、先对对busybox下Makefile文件的做一些修改。
#vi Makefile
1)搜索命令/ARCH ?=
将这一行的内容改为ARCH =arm,注意我就是在这里出现的错误,不知道为什么我的只有将这个问号去掉才能编译成功,而网上很多帖子是不用去掉这个问号的。
2)搜索命令/CROSS_COMPILE ?=
将这一行改写成CROSS_COMPILE=/usr/local/arm/usr/bin/arm-linux-
这里/usr/local/arm/usr/bin/arm-linux- 是我自己的交叉编译器的路径,你要将它改写成你自己的编译器路径。
5、对dusybox 的一些配置(重要)
make menucong执行命令后会出现(上图)
6、进入:Busybox Setting----->
build option-->
进入,注意第一行,和最后一行,第一行代表了你的文件系统是否要共享libs库函数,这一条需要选上,到最后就可以不用认为的添加libs库文件了。
最后一行代表你的交叉编译器路径,我的是/usr/local/arm/4.2.2-eabi/usr/bin/arm-linux-。你按自己的路径正确填写。
退出进入图二,选第四行,选择installation option
第三行选择你要将busybox安装在那个路径下,我这里选择的是/rootfs。这里有一点我也现在还是不是很清楚,在最后几步里,cramfs文件系统也要从这个目录产生。自己在了解一下是不是可以将这两者分开在两个目录下。
7、这样就可以执行命令make了
#make
#make install
8、进入/rootfs下查看是否生成了bin 、sbin和linuxc的文件,如果已经生成了,就证明你已经成功了一半了
9、对/rootfs下的文件进行一些处理
# mkdir boot dev etc home lib mnt proc root sys tmp varusr
执行上面的命令,创建一些基本的文件目录
10、建立及复制文件系统所需要的文件
1)、在/rootfs/dev/目录下建立console和null节点文件(要有root权限)
执行命令
/rootfs/dev# mknod -m 666 console c 5 1
/rootfs/dev# mknod -m 666 null c 1 3
12、在/rootfs/etc/目录下建立fstab和inittab文件
进入/rootfs/etc/目录,创建 fstab 文件,其内容如下:
none /proc proc defaults 0 0
none /dev/pts devpts mode=0622 0 0
tmpfs /dev/shm tmpfs defaults 0 0
进入/rootfs/etc/目录,创建 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
最后在提示符下输入:
/rootfs/etc# chmod +x fstab inittab
13、在/rootfs/etc/init.d/目录下建立rcS文件
进入/rootfs/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
最后在提示符下输入:
/rootfs/etc/init.d# chmod +x rcS
14、到这里基本上已经完成了,然后在执行最后一步命令生成cramfs文件系统
#mkcramfs rootfs demo.cramfs
如果你没有安装mkcramfs的脚本文件的话,系统会提示你的,使用apt-get install下载相应的脚本就行了
下一篇博客:配置TFTP及NFS。