1、什么是busybox
BusyBox 是一个集成了三百多个最常用Linux命令和工具的软件。BusyBox 包含了一些简单的工具,例如ls、cat和echo等等,还包含了一些更大、更复杂的工具,例grep、find、mount以及telnet。
2、编译busybox
2.1、拷贝busybox
idle@linux:~$ mkdir study
idle@linux:~$ cd study/
idle@linux:~/study$ cp /share_win/busybox-1.33.0.tar.bz2 ./
idle@linux:~/study$ ls
busybox-1.33.0.tar.bz2
2.2、解压busybox
sudo apt install libncurses-dev -y
tar jxvf busybox-1.33.0.tar.bz2
mkdir -p busybox-build
cd busybox-1.33.0
make O=../busybox-build defconfig
2.3、生成编译 .config 文件
cd ../busybox-build
这里需要设置静态编译,编译出的二进制可以独立运行,不依赖其他库。
make menuconfig
在"Setting"(回车进入子菜单)-->选择"Build static binary (no shared libs)"(空格键选择)。选中后,选择界面下方 Exit 退出,最后会提示保存,选择 Yes,保存 .config。
2.4、编译安装生成 initrd
# make 和 make install 执行成功后会在 busybox-build 目录下生成 _install 目录
make
make install
# 在 busybox-build 同级目录下创建 rootfs 目录
mkdir rootfs
cd rootfs
#不要忽略最后的一个点.
cp -ar ../busybox-build/_install/* .
# 创建软连接 init 指向 bin/busybox,内核启动到最后会执行 init 进程
ln -sf bin/busybox init
mkdir -p {sys,proc,dev,etc/init.d}
# 启动脚本,相当于 rc.local
touch etc/init.d/rcS
chmod 755 etc/init.d/rcS
# etc/init.d/rcS内容见下方
vi etc/init.d/rcS
touch etc/fstab
# etc/fstab内容见下方
vi etc/fstab
# 这里的 pigz 可以多线程压缩,需要安装 pigz,或者使用 gzip 替代。
sudo apt install pigz
find . -print0 | cpio --null -ov --format=newc | pigz -9 > ../initrd-busybox.img
rcS 文件内容如下,来自 tinycorelinux/Core-scripts:
#!/bin/sh
# RC Script for Tiny Core Linux
# (c) Robert Shingledecker 2004-2012
# Mount /proc.
[ -f /proc/cmdline ] || /bin/mount /proc
# Remount rootfs rw.
/bin/mount -o remount,rw /
# Mount system devices from /etc/fstab.
/bin/mount -a
clear
fstab 文件内容如下:
sysfs /sys sysfs rw,nosuid,nodev,noexec,relatime 0 0
proc /proc proc rw,nosuid,nodev,noexec,relatime 0 0
udev /dev devtmpfs rw,nosuid,noexec,relatime,mode=755 0 0
上述命令执行成功后,会在 busybox-build 同级目录下生成 initrd-busybox.img,即 initrd。