1.官网下载工具
制作工具:busybox
https://busybox.net/downloads/
2.制作根文件系统
2.1准备工作
a.把压缩包放在FSP1M目录下,并解压
2.2正式开始
2.2.1配置交叉编译工具链
1. 打开Makefile文件
2. 修改ARCH ?=$(SUBARCH) ==>> ARCH ?= arm
3.修改CROSS_COMPILE ?=
2.2.2配置其他(menuconfig)
1.打开图形化界面 :make menuconfig
2.修改配置
Settings --->
[*] Build static binary (no shared libs)
(arm-linux-gnueabihf-) Cross compiler prefix ==>>设置使用的交叉编译工具链
[*] vi-style line editing commands ==>> 设置vi风格
(./rootfs) Destination path for 'make install' ==>>设置生成的文件名
Linux Module Utilities --->
[ ] Simplified modutils ==>> 支持模块化方式进行编译
2.2.3 编译和安装
busybox-1.35.0下输入:time make -j4 all ==>>编译
busybox-1.35.0下输入:make install ==>>安装
2.2.4成功现象
生成 rootfs文件
2.3 后续添加文件
2.3.1 添加rcS脚本文件
1.创建文件:在~/nfs/rootfs目录下 ==>> 创建etc/init.d文件
2.添加内容:打开init.d(init.d就是rcS脚本文件) ===>> 添加下列内容
#!/bin/sh
#This is the first script called by init process
/bin/mount -a
mkdir /dev/pts
mount -t devpts devpts /dev/pts
echo /sbin/mdev>/proc/sys/kernel/hotplug
mdev -s
echo 4 3 1 7 > /proc/sys/kernel/printk
2.3.2添加fstab脚本文件
1.创建文件:在~/nfs/rootfs/etc目录下,创建fstab文件==>>touch fstab
2.添加内容:打开fstab,添加内容 ==>>vi fstab
#device mount-point type options dump fsck orde
proc /proc proc defaults 0 0
tmpfs /tmp tmpfs defaults 0 0
sysfs /sys sysfs defaults 0 0
tmpfs /dev tmpfs defaults 0 0
2.3.3添加 proc tmp sys dev文件
1.创建文件:在~/nfs/rootfs目录下,创建proc、tmp、sys、dev文件
mkdir proc tmp sys dev
2.3.4添加前导符
1、添加inittab文件
1.创建文件:在~/nfs/rootfs/etc目录下,创建inittab文件==>>touch inittab
2.添加内容:打开inittab,添加内容 ==>>vi inittab
::sysinit:/etc/init.d/rcS
::askfirst:-/bin/sh
::restart:/sbin/init
::ctrlaltdel:/sbin/reboot
2、添加profile文件
1.创建文件:在~/nfs/rootfs/etc目录下,创建profile文件==>>touch profile
2.添加内容:打开profile,添加内容 ==>>vi profile
export HOSTNAME=fsmp1a
export USER=root
export HOME=root
#export PS1="\[\u@\h \W\ ]\$ "
#cd root
export PS1="[$USER@$HOSTNAME \w]\# "
PATH=/bin:/sbin:/usr/bin:/usr/sbin:$PATH
LD_LIBRARY_PATH=/lib:/usr/lib:$LD_LIBRARY_PATH
export PATH LD_LIBRARY_PATH
成功现象:
2.3.5添加lib文件(移植库)
1.创建文件:在~/nfs/rootfs目录下,创建lib文件==>>touch lib
2.查找可执行文件所需要的库:arm-linux-gnueabihf-readelf -d a.out ==>>结果是:libc.so.6
3.拷贝库资源:
a.在ubuntu中查找所需要的库资源 ===>>
在gcc-7.5.0文件中: find -name libc.so.6
结果为 ./arm-linux-gnueabihf/libc/lib/libc.so.6
b.将./arm-linux-gnueabihf/libc/lib/libc.so.路径下的文件拷贝到 ~/nfs/rootfs/lib