busybox构建根文件系统

busybox源码下载

https://busybox.net/downloads/

修改Makefile

修改顶层Makefile

vi Makefile
CROSS_COMPILE ?= /usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-
ARCH ?= arm

配置busybox

make defconfig
make menuconfig

Settings  ---> 
	[*]   vi-style line editing commands
	[*] Support Unicode
	[*]   Check $LC_ALL, $LC_CTYPE and $LANG environment variables
Linux Module Utilities  ---> 
	[ ] Simplified modutils 

编译 busybox

make install CONFIG_PREFIX=/rootfs/
# CONFIG_PREFIX 指定编译结果存放的目录

在这里插入图片描述

向根文件系统添加 lib 库

向 rootfs 的“/lib”目录添加库文件

mkdir /rootfs/lib
# 拷贝交叉编译器的动态库到/roofs/lib/
cp /xxx/arm-linux-gnueabihf/libc/lib *so* *.a /rootfs/lib/ -d
rm /xxx/arm-linux-gnueabihf/libc/lib/ld-linux-armhf.so.3
cp /xxx/arm-linux-gnueabihf/libc/lib/ld-linux-armhf.so.3 /rootfs/lib/

向 rootfs 的“usr/lib”目录添加库文件

mkdir /rootfs/usr/lib
cp /xxx/arm-linux-gnueabihf/libc/usr/lib/*so* *.a /rootfs/usr/lib/ -d

创建其他文件夹

cd /rootfs/
mkdir etc dev proc mnt sys tmp root

向rootfs中添加etc/fstab文件

fstab 在 Linux 开机以后自动配置哪些需要自动挂载的分区

vi etc/fstab
#<file system> <mount point> <type> <options> <dump> <pass> 
proc 			/proc 		 proc 	defaults  0 	 0 
tmpfs 			/tmp 		 tmpfs 	defaults  0 	 0 
sysfs 			/sys 		 sysfs 	defaults  0 	 0
格式:<file system> <mount point> <type> <options> <dump> <pass>

<file system>:		要挂载的特殊的设备,也可以是块设备,比如/dev/sda 等等。
<mount point>:		挂载点。
<type>:			文件系统类型,比如 ext2、ext3、proc、romfs、tmpfs 等等。
<options>:			挂载选项,在 Ubuntu 中输入“man mount”命令可以查看具体的选项。一般使用 defaults,
					也就是默认选项,defaults 包含了 rw、suid、 dev、 exec、 auto、 nouser 和 async。
<dump>:			为 1 的话表示允许备份,为 0 不备份,一般不备份,因此设置为 0<pass>:			磁盘检查设置,为 0 表示不检查。根目录‘/’设置为 1,其他的都不能设置为 1,
					其他的分区从 2 开始。一般不在 fstab 中挂载根目录,因此这里一般设置为 0

向rootfs中添加etc/inittab文件

 #etc/inittab
::sysinit:/etc/init.d/rcS
console::askfirst:-/bin/sh
::restart:/sbin/init
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a -r 7 ::shutdown:/sbin/swapoff -a
动作				描述
sysinit 			在系统初始化的时候 process 才会执行一次。
respawn 			当 process 终止以后马上启动一个新的。
askfirst			和 respawn 类似,在运行 process 之前在控制台上显示“Please press Enter to activate 
					this console.”。只要用户按下“Enter”键以后才会执行 process。
wait 				告诉 init,要等待相应的进程执行完以后才能继续执行。
once 				仅执行一次,而且不会等待 process 执行完成。
restart 			当init 重启的时候才会执行 procee。
ctrlaltdel 			当按下 ctrl+alt+del 组合键才会执行 process。
shutdown 			关机的时候执行 process。

创建启动文件rcS

cd /rootfs
mkdir /etc/init.d -p && vi rcS

#!/bin/sh
 
PATH=/sbin:/bin:/usr/sbin:/usr/bin:$PATH
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/lib:/usr/lib
export PATH LD_LIBRARY_PATH
mount -a 8 mkdir /dev/pts
mount -t devpts devpts /dev/pts
echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s


chmod 777 rcS

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

u.意思

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值