一、移植Busybox
所谓制作根文件系统,就是创建各种目录,并且在里面创建各种文件。对于创建一个最下根文件系统,只需要在/dev目录下创建必要的设备节点、在/etc目录下创建一些配置文件就可以了,如果Busybox使用动态链接库,那还要在/lib目录下包含库文件。Busybox支持uClibc库和glibc库,对Linux2.2.x之后的内涵支持良好。Busybox的源码可以从http://www.busybox.net/downloads/下载,我下载的是busybox-1.7.5.tar.bz2.
(1)解压busybox
$tar -jxvf busybox-1.7.5.tar.bz2
(2)配置busybox
$make menuconfig Busybox Settings ---> Build Options ---> [ ] Build BusyBox as a static binary (no shared libs) (是否编译成静态库,在这里我没选,使用动态库) Busybox Library Tuning ---> [*] Tab completion (tab缩进功能) [*] Username completion [*] Fancy shell prompts (这两项在创建/etc/profile文件时要用,这样可以命令行有提示符显示) |
这样库就加好了!
三、构建etc目录
etc目录下的内容取决于要运行的程序,init进程根据/etc/inittab文件来创建其它进程,比如调用脚本文件配置IP地址、
挂接其它文件系统,最后启动shell等。
在这里我们只要在etc目录下创建3个文件:etc/inittab、etc/init.d/rcS、etc/fstab、etc/profile。
$mkdir etc
$vim etc/inittab
(1)创建etc/inittab文件
内容如下:
::sysinit:/etc/init.d/rcS s3c2410_serial0::askfirst:-/bin/sh ::restart:/sbin/init ::ctrlaltdel:/sbin/reboot ::shutdown:umount -a -r |
$cd etc
$mkdir init.d
$vim init.d/rcS
(2)创建etc/init.d/rcS文件
内容如下:
mount -a mkdir /dev/pts mount -t devpts devpts /dev/pts echo /sbin/mdev > /proc/sys/kernel/hotplug mdev -s |
给rcS加上可执行权限
$sudo chmod +x rcS
$cd ../
$vim fstab
(3)创建etc/fstab文件
内容如下:
#device mount-point type options dump fsck order proc /proc proc defaults 0 0 sysfs /sys sysfs defaults 0 0 tmpfs /temp tmpfs defaults 0 0 tmpfs /dev tmpfs defaults 0 0 |
$vim profile
(4)创建etc/profile文件 (前面配置busybox提到,用于命令行提示符号)
内容如下:
#!/bin/sh export HOSTNAME=caoyi export USER=root export HOME=root export PS1="[$USER@$HOSTNAME \W]\#" PATH=/bin:/sbin:/usr/bin:/usr/sbin LD_LIBRARY_PATH=/lib:/usr/lib:$LD_LIBRARY_PATH export PATH LD_LIBRARY_PATH |