1. 下载源码
从 http://www.busybox.net/downloads/下载 busybox-1.21.1 源码。
2. 解压
# pwd
/opt/work
# tar xvjf busybox-1.21.1.tar.bz2
3. 修改根目录下 Makefile
# cd busybox-1.21.1
164 行:
修改前:CROSS_COMPILE ?=
修改后:CROSS_COMPILE ?= arm-linux-
190 行:
修改前:ARCH ?= $(SUBARCH)
修改后:ARCH ?= arm
4. 配置
# pwd
/opt/work/busybox-1.21.1
# make menuconfig
使用静态编译:
Busybox Settings
Build Options
--->
--->
[*] Build BusyBox as a static binary (no shared libs)
5. 编译
# pwd
/opt/work/busybox-1.21.1
# make
# mkdir install_dir
# make install CONFIG_PREFIX=./install_dir/
之后可以看到,在 install_dir 有了 bin linuxrc
6. 生成根文件系统目录
sbin usr。
# pwd
/opt/work
# touch create_rootfs_bash
create_rootfs_bash 内容如下:
#!/bin/sh
echo "---create rootfs directions start---"
mkdir -p rootfs
cd rootfs
echo "---create root,dev,---"
mkdir -p root dev etc boot tmp var sys proc lib mnt home
mkdir -p etc/init.d etc/rc.d etc/sysconfig
mkdir -p usr/sbin usr/bin usr/lib usr/modules
echo "make node in dev/console dev/null"
mknod -m 600 dev/console c 5 1
mknod -m 600 dev/null c 1 3
mkdir -p mnt/etc mnt/jffs2 mnt/yaffs mnt/data mnt/temp
mkdir -p var/lib var/lock var/run var/tmp
chmod 1777 tmp
chmod 1777 var/tmp
echo "done"
# chmod +x create_rootfs_bash
# ./create_rootfs_bash
可以看到,生成了/opt/work/rootfs 目录,并生成了相应的子目录。
7. 将编译 busybox 生成的文件及目录复制到根文件系统目录下
# pwd
/opt/work/busybox-1.21.1/install_dir
# cp -R ./* /opt/work/rootfs
8. 创建 etc 下的文件
8.1 创建/etc/inittab
# pwd
/opt/work/rootfs
# cd etc
# touch inittab
# chmod +x inittab
Inittab 内容如下:
#etc/inittab
::sysinit:/etc/init.d/rcS
ttySAC0::askfirst:-/bin/sh
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a –r
8.2 创建/etc/init.d/rcS 文件
# pwd
/opt/work/rootfs/etc/init.d
# touch rcS
# chmod +x rcS
rcS 内容如下:
#!/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
runlevel=S
prevlevel=N
umask 022
export PATH runlevel prevlevel
#echo "----------munt all----------------"
mount -a
mdev -s
/bin/hostname -F /etc/sysconfig/HOSTNAME
8.3 创建/etc/fstab 文件
# pwd
/opt/work/rootfs/etc
# touch fstab
# chmod +x fstab
fstab 内容如下:
#device mount-point type option dump fsck order
proc /proc proc defaults 0 0
none /tmp ramfs defaults 0 0
sysfs /sys sysfs defaults 0 0
mdev /dev ramfs defaults 0 0
8.4 创建/etc/profile 文件
# pwd
/opt/work/rootfs/etc
# touch profile
# chmod +x profile
profile 文件内容如下:
#Ash profile
#vim:syntax=sh
#No core file by defaults
#ulimit -S -c 0>/dev/null 2>&1
USER="id -un"
LOGNAME=$USER
PS1='[\u:$PWD@\h]#'
PATH=$PATH
HOSTNAME='/bin/hostname'
export USER LOGNAME PS1 PATH
8.5 拷贝主机的 passwd、shadow、group 文件到根文件系统/etc 文件
# pwd
/opt/work/rootfs/etc
# cp /etc/passwd ./
# cp /etc/shadow ./
# cp /etc/group ./
8.6 创建/etc/sysconfig/HOSTNAME 文件
# pwd
/opt/work/rootfs/etc/sysconfig
# touch HOSTNAME
HOSTNAME 内容如下:
MINI2440