一。建立根文件系统目录与文件
1. 创建目录
#mkdir rootfs
#cd rootfs
#mkdir bin dev etc lib proc sbin sys usr mnt tmp var
#mkdir usr/bin usr/lib usr/sbin lib/modules
2. 创建设备文件
#cd rootfs/dev
#mknod -m 666 console c 5 1
#mknod -m 666 null c 1 3
3. 加入配置文件
#tar etc.tar.gz
#mv etc/* …/root/etc/ -rf
4. 添加内核模块
#cd …/linux
#make modules ARCH=arm CROSS_COMPILE=arm-linux-
#make modules_install ARCH=arm INSTALL_MOD_PATH=…/rootfs
5. 编译busybox
1.配置busybox
#make menuconfig
Busybox Settings àbuild Options->
*选中“Build busybox as a static binary”, 静态链接
*Cross Compiler prefix (arm-linux-)
Installation Options->
*选中“Don‘t use /usr”, 选中该项可以避免busybox 被安装到宿主系统的/usr目录下,破坏宿主系统
*Busybox Installation Prefix (/xxx/rootfs)
该选项表明编译后的busybox的安装位置
2. 编译、安装busybox
#make
#make install
二。挂载根文件系统到内核
1. 挂载方式简介
(1). 文件系统类型
根据存储设备的硬件特性、系统需求,不同的文件系统类型有不同的应用场合。
在嵌入式Linux应用中,主要的存储设备为RAM 和FLASH,
常用的基于存储设备的文件系统类型包括:jffs2, yaffs2, ubifs, ramdisk等
(2). 系统类型
#基于nandflash的文件系统 yaffs2 ,UbiFS(可读可写)
#基于norflash的文件系统 Jffs2
#基于内存的文件系统 rmdisk , Initramfs
#基于网络的文件系统 NFS
2. initranfs挂载
1. #cd …/rootfs/#ln –s ./bin/busybox init
2. 配置Linux内核,支持initramfs
3. 编译
4. 设置环境变量
setenv bootargsnoinitrd console=ttySAC0,115200
3. NFS挂载
setenv bootargs noinitrd
console=ttySAC0,115200 init=/init
root=/dev/nfs rw
nfsroot=192.168.1.3:/home/s5-ARM/Part4/rootfs,proto=tcp,nfsvers=
3ip=192.168.1.6:192.168.1.3:192.168.1.1:255.255.255.0::eth0:off