用Busybox创建nfs文件系统
1、解压busybox-1.19.4.tar.bz2
修改Makefilez中的ARCH和CROSS_COMPILE与本机的路径一致:
CROSS_COMPILE ?= /opt/crosstool/bin/arm-s3c2410-linux-gnu-
...
ARCH ?= arm
2、编译busybox。先make menuconfig,修改以下:
Busybox Settings --->
Build Options --->
Build BusyBox as a static binary (no shared libs)
//直接编译成静态库,省事点
(/opt/crosstool/bin/arm-s3c2410-linux-gnu-) Cross Compilerprefix
//这里和Makefile里保持一致,应该写一处就行了
Installation Options --->
Don't use /usr
//不用本机的目录
Shells --->
Choose your default shell (ash) --->
//这里选择shell为ash,应该是默认选中的
--- ash
//把ash这档的选项全部选上
保存退出,直接make,make install。
3、用shell脚本创建根文件系统的目录结构,并在想要建立根文件系统的地方运行此脚本。我是用root用户登陆的,直接创建了设备节点。
[root@Sure root-s3c2410]# vim makedir.sh
#!/bin/sh
echo "makeing rootdir"
mkdir rootfs
cd rootfs
echo "makeing dir: bin dev etc lib proc sbin sys usr"
mkdir bin dev etc lib proc sbin sys usr #8 dirs
mkdir usr/bin usr/lib usr/sbin lib/modules
#Don't use mknod, unless you run this Script as
mknod -m 600 dev/console c 5 1
mknod -m 666 dev/null c 1 3
echo "making dir: mnt tmp var"
mkdir mnt tmp var
chmod 1777 tmp
mkdir mnt/etc mnt/jiffs2 mnt/yaffs mnt/data mnt/temp
mkdir var/lib var/lock var/log var/run var/tmp
chmod 1777 var/tmp
echo "making dir: home root boot"
mkdir home root boot
echo "done"
执行这个sh:
[root@Sure root-s3c2410]# sh makedir.sh
创建出一个主文件夹rootfs,里面有一批文件:
[root@Sure rootfs]# ls
bin boot dev etc home lib mnt proc root sbin sys tmp usr var
4、把busybox源码目录下的etc的内容拷贝到这里的etc下
[root@Sure rootfs]# cd etc/
[root@Sure etc]# cp -a/home/jacky/busybox-1.11.1/examples/bootfloppy/etc/* ./
5、修改拷贝过来的profile文件
[root@Sure etc]# vim profile
# /etc/profile: system-wide .profile file for the Bourneshells
echo "Processing /etc/profile"
# no-op
# Set search library path
echo " Set search library path"
export LD_LIBRARY_PATH=/lib:/usr/lib
# Set user path
echo " Set user path"
PATH=/bin:/sbin:/usr/bin:/usr/sbin
export PATH
# Set PS1
echo " Set PS1"
HOSTNAME=`/bin/hostname`
# 此处让shell提示符显示host名称的。是`,不是’,要注意
# 会在进入根系统后显示Jacky
export PS1="\\e[32m[$USER@$HOSTNAME \\w\\a]\\$\\e[00;37m "
# 此处\\e[32m是让后面的“[$USER@$HOSTNAME \\w\\a]”显示为绿色
# \\e[00是关闭效果
# \\e[05是闪烁
# 37m是让后面的显示为白色
# 多个命令可以;号隔开
echo "All done!"
echo
6、修改初始化文件inittab和fstab
[root@Sure etc]# vim inittab
::sysinit:/etc/init.d/rcS
::respawn:-/bin/sh
::restart:/sbin/init
tty2::askfirst:-/bin/sh
::ctrlaltdel:/bin/umount -a -r
::shutdown:/bin/umount -a -r
::shutdown:/sbin/swapoff –a
[root@Sure etc]# vim fstab
proc /proc proc defaults 0 0
none /tmp ramfs defaults 0 0
mdev /dev ramfs defaults 0 0
sysfs /sys sysfs defaults 0 0
7、修改初始化的脚本文件init.d/rcS
[root@Sure etc]# vim init.d/rcS
#! /bin/sh
echo "Processing etc/init.d/rc.S"
#hostname ${HOSTNAME}
echo " Mount all"
/bin/mount -a
echo " Start mdev...."
/bin/echo /sbin/mdev > proc/sys/kernel/hotplug
mdev -s
echo "****************************************************"
echo " RootFS by NFS, s3c2410"
echo " Created by Jacky Xu @ 2008.7.13"
echo " Enjoy it!!!"
echo "****************************************************"
echo
8、创建一个空的mdev.conf文件,在挂载根文件系统时会用到的
[root@Sure etc]# touch mdev.conf
9、从本机拷贝passwd、shadow、group文件。
[root@Sure etc]# cp /etc/passwd .
[root@Sure etc]# cp /etc/shadow .
[root@Sure etc]# cp /etc/group .
修改passwd文件,把第一行和最后一行的bash修改成ash。
10、把busybox默认安装目录中的文件全部复制到这里的rootfs中。会发现多了linuxrc ->bin/busybox文件,这是挂载文件系统需要执行的。
[root@Sure etc]# cd ..
[root@Sure rootfs]# cp -Rfv /home/jacky/busybox-1.11.1/_install/./
OK,以上用busybox创建了一个基本的文件系统。