构建最小根文件系统busybox

构建最小根文件系统busybox

一、配置busybox

make distclean
make clean
make defconfig
make menuconfig

二、编译并安装busybox

make -j4
make install

三、创建其它必须的目录

mkdir dev etc proc sys

四、busybox依赖的动态库

检查依赖的动态库路径

cd _install
ldd bin/busybox

bin/busybox依赖的动态库如下:
linux-vdso.so.1 (0x00007ffded6d8000)
libm.so.6 => /usr/lib/libm.so.6 (0x00007f1539c99000)
libresolv.so.2 => /usr/lib/libresolv.so.2 (0x00007f1539c7f000)
libc.so.6 => /usr/lib/libc.so.6 (0x00007f1539ab3000)
/lib64/ld-linux-x86-64.so.2 => /usr/lib64/ld-linux-x86-64.so.2

在usr路径下创建lib32 lib64分别拷贝依赖的动态库

mkdir usr/lib32 usr/lib64
ln -s usr/lib32 usr/lib
cd usr/lib
cp -d 拷贝链接
cp -d /usr/lib/libm.so.6 .
cp -d /usr/lib/libresolv.so.2 .
cp -d /usr/lib/libc.so.6 .

cd usr/lib64
cp -d /usr/lib64/ld-linux-x86-64.so.2 .

拷贝链接对应的动态库
ls -l查看动态库链接对应的文件
上述4个链接对应硬件如下
libc.so.6 -> libc-2.33.so
libm.so.6 -> libm-2.33.so
libresolv.so.2 -> libresolv-2.33.so
ld-linux-x86-64.so.2 -> ld-2.33.so

cd usr/lib
cp /usr/lib/libc-2.33.so .
cp /usr/lib/libm-2.33.so .
cp /usr/lib/libresolv-2.33.so .
cd usr/lib64
cp /usr/lib64/ld-2.33.so .
ln -s usr/lib32 usr/lib

busybox根创建文件链接

ln -s usr/lib lib32
ln -s usr/lib lib64
ln -s bin/busybox init

五、创建设备文件

mkdir dev && cd dev
mknod console c 5 1
mknod null c 1 3
mknod tty c 5 0
mknod tty1 c 4 1
mknod tty2 c 4 2
mknod tty3 c 4 3
mknod tty4 c 4 4

六、配置文件

mkdir etc
cp -r ../busybox-1.33.1/examples/bootfloppy/etc/*  etc/
cd etc/

修改inittab

::sysinit:/etc/init.d/rcS
::respawn:-/bin/sh
::respawn:-/bin/login
tty2::askfirst:-/bin/sh
::ctrlaltdel:/bin/umount -a -r

自动生成/dev下的设备文件
先挂载内核的proc和sysfs虚拟文件系统

mkdir sys

修改 etc/fstab

proc	/proc	proc    defaults	0	0
sysfs	/sys	sysfs	defaults	0	0
mdev	/dev	ramfs	defaults	0	0

或者

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

修改etc/init.d/rc.S文件

/bin/mount -a
/sbin/mdev -s //启动mdev在/dev下自动创建设备文件节点

udhcpc设置自动获取IP
修改etc/init.d/rc.S文件

/bin/mount -a
/sbin/mdev -s //启动mdev在/dev下自动创建设备文件节点
ip link set dev eth0 up
ip link set dev lo up
/sbin/udhcpc	//获取动态ip后需手动设置ip

设置ip网关

ip addr add 192.168.1.10/24 dev eth0
ip route add default via 192.168.1.1

七、制作initramfs根文件系统

https://blog.csdn.net/greatyoulv/article/details/117169886
https://blog.csdn.net/greatyoulv/article/details/117169531

错误记录:
解决使用mdev时“cannot create /proc/sys/kernel/hotplug :nonexistent directory”错误
确保编译内核时编译如下选项:
CONFIG_PROC_FS=y
CONFIG_PROC_SYSCTL=y
CONFIG_HOTPLUG=y
CONFIG_NET=y
如果CONFIG_HOTPLUG和CONFIG_NET不选或没全选上的话,/proc/sys/kernel下将不会创建 hotplug文件.(参见kernel/sysctl.c)

新版内核
-> Device Drivers
-> Generic Driver Options
(/proc/sys/kernel/hotplug) path to uevent helper

参考链接:

https://itas109.blog.csdn.net/article/details/107737843
https://blog.csdn.net/itas109/article/details/107737843
https://blog.csdn.net/a1598025967/article/details/107501533
https://blog.51cto.com/hiyang/1767266
https://tldp.org/HOWTO/Bootdisk-HOWTO/buildroot.html
https://tldp.org/HOWTO/From-PowerUp-To-Bash-Prompt-HOWTO.html
https://blog.csdn.net/weixin_42462651/article/details/104985541
https://blog.csdn.net/rfidunion/article/details/54632500
https://blog.csdn.net/whatday/article/details/86787385
https://blog.csdn.net/mcu_tian/article/details/51556398
https://blog.csdn.net/qq_36393978/article/details/110946281
https://blog.csdn.net/mirkerson/article/details/8426993
https://www.busybox.net/FAQ.html#build_system
https://blog.csdn.net/lixiangminghate/article/details/56323098
https://blog.51cto.com/linuxcgi/1965284
https://blog.csdn.net/m0_38096844/article/details/97786761
https://blog.csdn.net/happy_stars_2016/article/details/52620577
https://blog.csdn.net/suiyuan19840208/article/details/7237541
https://blog.csdn.net/cnsword/article/details/7447670
https://blog.csdn.net/chouzhou9701/article/details/105407459
https://zhuanlan.zhihu.com/p/59590848

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值