本节将构建一个最小根文件系统 /myroot:
1、仿照虚拟机上的/dev/console、/dev/null创建设备节点
创建目录:
mkdir /myroot
进入目录:
cd /myroot
查看设备节点:
ls /dev/console /dev/null -l
创建设备节点:
mkdir dev
cd devsudo
mknod console c 5 1sudo
mknod null c 1 3
2、配置编译busybox(参考busybox源码中的文件INSTALL)
将busybox源码上传到虚拟机,解压:
tar xjf busybox-1.7.0.tar.bz2
设置交叉编译工具链:
vi Makefile
修改内容:
CROSS_COMPILE ?= arm-linux-
保存退出
配置:
make menuconfig
配置Tab键补全命令:
Busybox Settings-->
Busybox Library Tuning-->
[*] Tab completion
保存退出
编译:
make
安装:
make install COMFIG_PREFIX=”/myroot”
3、创建、填充配置文件/etc/inittab
mkdir etc
vi etc/inittab
填充内容:
console::askfirst:-bin/sh
4、安装一些必要的库(这里只安装C库,并且假定C库位于/gcc-3.4.5-glibc-2.3.6/arm-linux/lib/)
mkdir lib
cp /gcc-3.4.5-glibc-2.3.6/arm-linux/lib/*.so* /myroot -d
5、制作映像文件
Yaffs2格式:
安装工具mkyaffs2image
tar xjf yaffs_source_util_larger_small_page_nand.tar.bz2
cd Development_util_ok/yaffs2/utils/
make
sudo cp mkyaffs2image /usr/local/bin
sudo chmod +x /usr/local/bin/mkyaffs2image
cd -
使用mkyaffs2image制作yaffs2映像文件:
mkyaffs2image /myroot /myroot.yaffs2
jffs2格式:安装工具mkfs.jffs
tar xzf zlib-1.2.3.tar.gz
cd zlib-1.2.3
./configure --shared --prefix=/usr/
make
sudo make install
cd -
tar xjf mtd-utils-05.07.23.tar.bz2
cd mtd-utils-05.07.23/util
make
sudo make install
使用mkfs.jffs制jffs2映像文件:
myfs.jffs -n -s 2048 -e 128KiB -d /myroot -o /myroot.jffs2
-n:不在每个擦除块加上擦除标志
-s:一页的大小(这里是2048)
-e:一块的大小(这里是128KB)
-d:目录
-o:输出
如果系统挂载文件系统时所提示的格式与使用的文件系统格式不一致,可以在uboot命令行参数bootargs中加上一个选项:rootfstype=jffs2或者=yaffs2
至此一个最小根文件系统已经制作完成,为了继续完善它,可以继续以下操作:
6、
为了使用ps命令查看进程,需要挂接虚拟文件系统:
方法一:
在etc/inittab中添加一行:
::sysinit:/etc/init.d/rcS
创建rcS文件:
mkdir /myroot/etc/init.d
vi /myroot/etc/init.d
添加一行:
mount -t proc none /proc
保存退出
赋予可执行属性:
chmod +x /myroot/etc/init.d/rcS
方法二:
在etc/inittab中添加一行:
::sysinit:/etc/init.d/rcS
创建rcS文件:
mkdir /myroot/etc/init.d
vi /myroot/etc/init.d
添加一行:
mount -a
保存退出
赋予可执行属性:
chmod +x /myroot/etc/init.d/rcS
创建/myroot/etc/fstab文件
/myroot/etc/fstab
添加两行:
#device mount-point type option dump fsck order
proc /proc proc defaults 0 0
保存退出
7、使用mdev自动创建/dev目录下的设备节点(假定前面按照方法二操作):
在/myroot/etc/fstab文件中添加两行:
sysfs /sys sysfs defaults 0 0
tmpfs /dev tmpfs defaults 0 0
在/myroot/etc/inid.d/rcS中添加四行:
mkdir /dev/pts
mount -t devpts devpts /dev/pts
echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s