一、创建根文件系统
1、创建目录
#mkdir rootfs
#cd rootfs
#mkdir bin dev etc lib proc sbin sys usr mnt tmp var
#mkdir usr/bin usr/sbin usr/lib lib/modules
2、创建设备文件
#cd rootfs/dev
#mknod–m 666 console c 5 1
#mknod–m 666 null c 1 3
如果有必要也可以创建其他的设备节点,此处为了记录创建根文件系统的过程仅创建这两个必备的设备节点。
3、加入配置文件
#mkdir init.d
#cd init.d
#mkdir rcS
#vim rcS //此文件为开机后运行的第一个脚本(init进程启动后)
#!/bin/sh
/bin/mount -a
/bin/mount -ttmpfs mdev /dev
/bin/echo/sbin/mdev > /proc/sys/kernel/hotplug
mdev -s
#vim etc/fstab //此文件在 执行mount –a使被调用,记录着开机自动挂载的文件系统和挂载点挂载方式等信息
proc /proc proc defaults 0 0
sysfs /sys sysfs defaults 0 0
#vim etc/inittab //此文件保存init进程的信息
::sysinit:/etc/init.d/rcS
::respawn:-/bin/sh
::ctrlaltdel:/bin/umount-a –r
#vim etc/profile
# /etc/profile:system-wide .profile file for the Bourne shells
echo
echo -n"Processing /etc/profile... "
# no-op
echo"Done"
echo
4、添加内核模块
进入内核目录
#make modules (笔者已经在Makefile中修改了ARCH 和 CROSS_COMPILE变量的值所以此处不再用参数传递这两个变量的值)
#make modules_install INSTALL_MOD_PATH=/rootfs (rootfs的路径)
5、编译busybox
解压并进入busybox的根目录
#make menuconfig
Busybox Settings -> Build Options -> [*]Build BusyBox as a static binary 选中
Cross Compiler prefix 填写交叉编译工具,笔者已经修改了环境变量因此只填arm-linux- 就可以了
Busybox Settings -> Installation Options -> [*]Don`t use/usr 选中
Busybox installation prefix 填写rootfs路径
#make
#make install
二、挂载根文件系统到内核中
1、进入rootfs
2、ln –s ./bin/busybox init 创建busybox软连接为init 供内核启动后调用
3、进入内核目录
#make menuconfig
Generalsetup -> [*]Initial RAM filesystem and RAM disk support 选中
Initramfssource file(s) 填写rootfs 的路径
4、重新编译内核
#make zImage
5、打开开发板电源,在串口终端中按下键盘任何键进入U-boot
6、#setenv bootargsnoinitrd console=ttuSAC2,115200 (笔者的开发板使用的是串口二,可以根据自己的情况设置)
#saveenv
7、下载启动内核
#tftp c0008000 zImage
#bootm c0008000
等内核启动后发现出现”#”命令行提示符,输入ls 命令发现出现了在本机上创建的根文件系统