1.建立跟文件系统目录和文件
(1)创建目录(根目录及其子目录)
创建rootfs目录:mkdir rootfs
mkdir bin dev etc lib proc sbin sys usr mnt tmp var (注意是在rootfs目录下创建)
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/* /rootfs/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 astatic 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)安装时一定要安装在rootfs目录下
(2)配置是可以去掉一些没用的功能(一般是编辑器一类的)和命令
(3)安装其实是一个拷贝的过程
(4)安装完成后可以在/bin目录下发现有许多命令。
(5)busybox提供linux的系统调用及一些常用嵌入式的小命令和小工具等功能
2.挂载根文件系统
(1)采用initfamfs的文件类型挂载根文件系统
1>要使用initramfs就必须使用软链接,在当前文件夹产生init的快捷方式对应于./bin/busybox
ln -s ./bin/busybox init
2>配置内核要选上 initramfs选项,且紧接着填写根文件系统所在位置。再重新编译内核,下载到开发板。
在General下选中红色框内的选项
3>设置UBOOT环境变量(传给内核的启动参数)
setenv bootargs noinitrd console=ttySAC0,115200
(2)使用NFS挂载根文件系统
1>内核配置
—》取消initramfs
—》进入File System
—》根文件系统onNFS选上
2>编译内核
make uImage ARCH=arm CROSS_COMPILE=arm-linux-
(3)设置UBOOT启动参数
setenv bootargs noinitrd console=ttySAC0,115200 init=/init root=/dev/nfs rw nfsroot=192.168.1.100:/home/shunzhi/kernel/part3/lesson3/rootfs ip=192.168.1.101:192.168.1.100:192.168.1.1:255.255.255.0:mini2440:eth0:off
注意:
(1)该指令不能换行
(2)init=/init root=/dev/nfs(设置自己的nfs服务器安装目录)
(3)nfsroot=192.168.1.100:/home/shunzhi/kernel/part3/lesson3/rootfs (nfs服务器设置自己的服务器ip地址,根文件目录设置自己的的根文件目录)
(4)ip=192.168.1.101:192.168.1.100:192.168.1.1:255.255.255.0:mini2440:eth0:off(设置自己开发板的ip,nfs服务器的地址,网关,子网掩码)