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/login ###需要登陆
::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/mount -n -t devpts none /dev/pts -o mode=0622
/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