busybox是一个轻量级的嵌入式操作系统,可根据源码对其进行定制及编译。

busybox移植

下载最新busybox

 wget https://busybox.net/downloads/busybox-1.31.1.tar.bz2

配置编译器前缀

make menuconfig

Setting->cross compile prefix 配置为arm-linux-gnueabi-

编译和安装

make && make install

安装完成后在其顶层目录生成_install目录。将其拷贝为rootfs目录。

cp _install ../rootfs

创建其他目录

在rootfs中创建其它需要的目录

mkdir mkdir mnt tmp var  sys proc etc lib dev  sbin root home

创建console和null

mknod  -m 666 dev/console c 5 1
mknod -m 666 dev/null c 1 3

添加及修改配置文件

将busybox的examples/bootfloppy/etc中的所有文件拷贝到rootfs/etc中。

cp busybox-1.31.1/examples/bootfloppy/etc/* rootfs/etc -arf

修改rootfs/etc/fstab内容为:

proc          /proc           proc       defaults              0  0
tmpfs /tmp tmpfs defaults 0 0
sysfs /sys sysfs defaults 0 0

修改rootfs/etc/profile内容为:

PS1='[\u@\h \W]\# '
HOSTNAME=`/bin/hostname`
export USER LOGNAME PS1
PATH=/bin:/sbin:/usr/bin:/usr/sbin
LD_LIBRARY_PATH=/lib:/usr/lib:$LD_LIBRARY_PATH
export PATH LD_LIBRARY_PATH

修改rootfs/etc/inittab内容为:

::sysinit:/etc/init.d/rcS
#::respawn:-/bin/sh ###不需要登陆
::respawn:-/bin/login ###需要登陆
#console::askfirst:-/bin/sh
#tty2::askfirst:-/bin/sh
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a -r

修改rootfs/etc/init.d/rcS内容为:

/bin/mount -n -t ramfs ramfs /var

/bin/mkdir -p /var/tmp
/bin/mkdir -p /var/modules
/bin/mkdir -p /var/run
/bin/mkdir -p /var/log
/bin/mount -a
/bin/hostname -F /etc/hostname

/bin/mount -t devtmpfs none /dev
/bin/mkdir -p /dev/pts
/bin/mkdir -p /dev/shm
#/bin/mknod /dev/pts/0 c 136 0
/bin/mount -n -t devpts none /dev/pts -o mode=0622
#echo /sbin/mdev > /proc/sys/kernel/hotplug
#/sbin/mdev -s

/sbin/ifconfig lo 127.0.0.1 netmask 255.0.0.0
/sbin/ifconfig eth0 up

创建rootfs/etc/hostname文件

touch rootfs/etc/hostname
echo busybox > rootfs/etc/hostname

创建rootfs/passwd文件

touch rootfs/etc/passwd
echo root::0:0:root:/root:/bin/ash > rootfs/etc/passwd
echo bin:*:1:1:bin:/bin: >> rootfs/etc/passwd
echo daemon:*:2:2:daemon:/sbin: >> rootfs/etc/passwd
echo nobody:*:1:99:99:Nobody:/: >> rootfs/etc/passwd

添加动态库

将所使用的编译器自带的动态库拷贝到rootfs/lib目录中。

cp /usr/arm-linux-gnueabi/lib/* rootfs/lib/ -arf

如果在busybox配置中选择了Settings->build Options ->Build busybox as a static binary,那么此处不需要拷贝动态库文件,但是要添加自己的程序到新做的文件系统中,则需要静态编译或者同事添加动态库。

文件系统目标目录文件为rootfs