1 创建目录
# mkdir rootfs /* rootfs为创建的根文件系统目录,名字可任意 */ # cd rootfs # mkdir bin dev etc lib proc sbin sys usr mnt tmp var # mkdir usr/bin usr/lib usr/sbin lib/modules
【说明】在/lib/目录下存放的是 ARM 平台支持的库,库在交叉编译器那里。
2 创建设备文件
# cd rootfs/dev # mknod -m 666 console c 5 1 # mknod -m 666 null c 1 3
3 加入配置文件
(1)在 /etc/ 目录下添加文件 inittab:
# 系统启动后最先被执行rcS脚本,只执行一次,init进程等待它结束后才继续执行其他操作
::sysinit:/etc/init.d/rcS
# 在启动once进程后执行,init进程一旦发现/bin/sh程序死掉,则重新启动
::respawn:-/bin/sh
# 如果BusyBox中配置了CONFIG_FEATURE_USE_INITTAB,并且init进程接收SIGHUP信号时,先重新读取/解析/etc/inittab文件,再执行/sbin/init程序
::restart:/sbin/init
# 表示进程/sbin/reboot在按下Ctrl+Alt+Del组合键时运行
::ctrlaltdel:/sbin/reboot
(2)在 /etc /目录下添加文件 fstab:
#device mount-point type options dump fsck order proc /proc proc defaults 0 0 tmpfs /tmp tmpfs defaults 0 0 sysfs /sys sysfs defaults 0 0 tmpfs /dev tmpfs defaults 0 0 # device:要挂载的设备 # mount-point:挂载点 # type:文件系统类型 # option:挂载参数
这里我们挂载的文件系统有三个 proc、sysfs 和 tmpfs,在内核中 proc 和 sysfs 默认都支持,而 tmpfs 是没有支持的,我们需要添加 tmpfs 的支持(内核配置):
File systems ---> Pseudo filesystems ---> [*] Virtual memory file system support (former shm fs) [*] Tmpfs POSIX Access Control Lists
配置完后,重新编译内核。
(3)在 /etc/ 下创建 init.d 目录,并在 init.d 下创建 rcS 文件:
#!/bin/sh #This is the first script called by init process # 挂载/etc/fstab指定的文件系统 /bin/mount -a mkdir /dev/pts mount -t devpts devpts /dev/pts # 告诉内核mdev程序的路径,当系统有热插拔设备时,内核会调用mdev程序新建或删除 echo /sbin/mdev>/proc/sys/kernel/hotplug # 启动mdev程序,扫描系统识别的设备,并且新建文件节点 mdev -s
为 rcS 添加执行权限:
# chmod +x init.d/rcS
(4)在 /etc/ 目录下添加 profile 文件:
#!/bin/sh # 导出环境变量,HOSTNAME,USER,HOME export HOSTNAME=farsight export USER=root export HOME=root #export PS1="\[\[email protected]\h \W\]\$ " # 命令提示符 export PS1="[[email protected]$HOSTNAME \W]\# " # 设置PATH环境变量 PATH=/bin:/sbin:/usr/bin:/usr/sbin # 设置动态库的搜索路径 LD_LIBRARY_PATH=/lib:/usr/lib:$LD_LIBRARY_PATH # 导出环境变量,PATH,LD_LIBRARY_PATH export PATH LD_LIBRARY_PATH
4 添加内核模块
# cd ../linux /* 进入Linux源代码 */ # make modules ARCH=arm CROSS_COMPILE=arm-linux- /* 编译Linux内核模块 */ # make modules_install ARCH=arm INSTALL_MOD_PATH=../rootfs /* 把内核模块复制到根文件目录中 */
5 编译/安装busybox
Busybox 提供文件系统一些小命令和小工具。busybox 的官网下载:http://www.busybox.net/
找到 busybox 安装包并解压,执行:
# make menuconfig
进入配置菜单,进行如下配置: