接上一篇文章:【UBI文件系统制作】-(1)UBI文件系统简介https://blog.csdn.net/weixin_40407893/article/details/101214434
3 UBI文件系统制作步骤
3.1 Busybox制作根文件系统
使用busybox编译和生成Linux根文件系统的流程如下。
(1) 准备工作
系统版本和开发环境
- 操作系统:ubuntu 18.04.2(64bit);
- 交叉编译工具链:arm-buildroot-linux-gnueabihf-gcc;
- busybox源码包:busybox-1.26.2
busybox的源码包直接从官网下载(https://busybox.net/downloads/)
安装arm-buildroot工具链,在文件夹内有安装包,直接解压就可以,进入解压后的目录,在/bin目录下可以看到arm-buildroot-linux-gnueabihf- 等工具链;我安装的工具链路径为:/home/heat/heat_test/host/bin/arm-buildroot-linux-gnueabihf-
(2) 创建rootfs目录
在ubuntu系统下创建一个rootfs目录,用于存放busybox生成的根文件系统。
我创建的目录: /home/heat/heat_test/heat_rootfs/rootfs
(备注:该rootfs是我通过busybox 已经生成好的根文件系统,这次在其基础上进行修改,并在其基础上使用busybox再生成一遍根文件系统)
(3) 编译busybox
1)修改Makefile配置
将下载的busybox源码拷贝到ubuntu系统中,解压缩。
进入busybox目录,修改Makefile文件,在文件头处加入内容如下:
ARCH ?= arm
CROSS_COMPILE ?= /home/heat/heat_test/host/bin/arm-buildroot-linux-gnueabihf-
交叉编译链为:arm-buildroot-linux-gnueabihf- ,记得提前安装该工具链。
2)修改配置文件
在busybox目录下输入:make menuconfig
选择Busybox Settings—>
• 1、Build Options—>,选择[*] Build Busybox as a static binary(no shared libs);
• 2、Installtion Options,在busybox instantlltionprefix一栏中,输入你想要创建rootfs的目录。比如我的是:/home/heat/heat_test/heat_rootfs/rootfs
• 3、去掉Coreutils—>sync选项;
• 4、去掉Linux System Utilities—>nsenter选项;
保存,退出
3)编译源码
输入make,进行编译;编译成功后,会给出以下提示:
编译通过之后,输入make install命令进行安装,busybox会自动将rootfs根文件系统安装到之前设置的目录下。如下:
Busybox主要生成了 bin/ sbin/ linuxrc 文件到rootfs文件夹下。
4)拷贝和修改必要的文件
上述的make install命令完成后,在rootfs目录下仅仅只是创建一个根文件系统的框架,很多系统运行所必须的文件尚未建立成功,必须手动复制进去。
(本次提供的rootfs已经拷贝和修改了如下参数,可以暂时不用修改了,下面的步骤4.1-4.2介绍了如何构建etc目录和lib目录)。
4.1)构建etc目录
主要是拷贝一些文件到etc/目录下,并进行一些修改。
1、将 busybox/examples/bootfloopy/etc/* 拷贝到 /rootfs/etc/ 目录下,然后修改其中的inittab文件;
4.2)构建lib目录
将动态链接库拷贝到/home/heat/heat_test/heat_rootfs/rootfs/lib/目录下,动态链接库在/home/heat/heat_test/host/lib 目录(buildboot的安装目录)下。
指令:
cp /home/heat/heat_test/host/lib/*so* /home/heat/heat_test/heat_rootfs/rootfs/lib/ -rdf
5)往根文件系统添加busybox暂不支持的命令
以往文件系统添加sz rz命令为例,rz和sz命令使用zmoderm协议,可用于文件上传和下载。
源码下载地址
https://ohse.de/uwe/software/lrzsz.html
交叉编译:
tar zxvf lrzsz-0.12.20.tar.gz
cd lrzsz-0.12.20/
./configure
make CC= arm-buildroot-linux-gnueabihf-gcc
make后生成的文件在src目录。file查看文件的格式。
将src/lsz, src/lrz添加到文件系统上的 /bin目录,并重命名为sz何rz即可。重新挂载文件系统,板子上电启动后,可以使用rz, sz命令。
以上所有工作完成后,根文件系统rootfs制作就结束了。下面需要使用mkfs.ubifs和ubinize工具制作UBI格式的文件系统镜像;到目录 /home/heat/heat_test/heat_rootfs。执行mk_rootfs.sh,生成ubi文件系统镜像。
下面详细介绍UBI格式的文件系统镜像制作过程。
UBI格式的文件系统镜像制作过程在接下来的文章进行介绍。