BusyBox

主页:BusyBox

这个题目挂了很久了,一直想写一点但是又觉得没什么好写的。因为从原理来说,busybox真的不难,没有太多特别的东西,就是一个进程完成了之前很多进程干的活。这样减少了空间暂用。

看了下编译出来1.1M,确实挺感人的。

用法其实也很简单,把以前的命令作为参数就可以了。

其实后面去看看各个命令的实现,我觉得还是很有趣味的。。

然后比较有趣的一点,是可以用busybox制作构建最小系统。列一下制作过程:

mkdir -p rootfs/{bin,sbin,etc,proc,sys,usr/{bin,sbin}}
cd busybox-<version>
make menuconfig  # 配置 BusyBox
make
make CONFIG_PREFIX=../rootfs install

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

创建初始化脚本inittab

cat > rootfs/etc/inittab << EOF
::sysinit:/etc/init.d/rcS
::askfirst:-/bin/sh
::ctrlaltdel:/bin/umount -a -r
::shutdown:/bin/umount -a -r
EOF

创建启动脚本rcS

mkdir -p rootfs/etc/init.d
cat > rootfs/etc/init.d/rcS << EOF
#!/bin/sh
mount -t proc proc /proc
mount -t sysfs sysfs /sys
echo -e "\nWelcome to BusyBox!"
EOF
chmod +x rootfs/etc/init.d/rcS

打包根文件系统

cd rootfs
find . | cpio -o --format=newc > ../rootfs.cpio
cd ..
gzip rootfs.cpio

制作内核

wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.4.124.tar.xz
tar -xvf linux-5.4.124.tar.xz
cd linux-5.4.124
make defconfig
make menuconfig
#General Setup -> Initial RAM filesystem and RAM disk (initramfs/initrd) support
#General Setup -> Configure standard kernel features (expert users) -> Enable support for printk
#Device Drivers -> Block devices -> RAM block device support

make -j4
make modules -j4

#内核镜像位于arch/x86/boot/bzImage

使用qemu启动

qemu-system-x86_64 -kernel ../bzImage -initrd rootfs.cpio.gz -append "console=ttyS0" -nographic

不幸的是加载fs的时候失败了,空了再研究吧。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值