【UBI文件系统制作】-(2)Busybox制作根文件系统

接上一篇文章:【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
    1
    (备注:该rootfs是我通过busybox 已经生成好的根文件系统,这次在其基础上进行修改,并在其基础上使用busybox再生成一遍根文件系统)

    (3) 编译busybox

        1)修改Makefile配置

    将下载的busybox源码拷贝到ubuntu系统中,解压缩。
    2
    进入busybox目录,修改Makefile文件,在文件头处加入内容如下:

ARCH ?= arm
CROSS_COMPILE ?= /home/heat/heat_test/host/bin/arm-buildroot-linux-gnueabihf-

3
    交叉编译链为: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
4
    • 3、去掉Coreutils—>sync选项;
5
    • 4、去掉Linux System Utilities—>nsenter选项;
6
    保存,退出

    3)编译源码

    输入make,进行编译;编译成功后,会给出以下提示:
    7
    编译通过之后,输入make install命令进行安装,busybox会自动将rootfs根文件系统安装到之前设置的目录下。如下:
8
    Busybox主要生成了 bin/ sbin/ linuxrc 文件到rootfs文件夹下。
9
    4)拷贝和修改必要的文件

    上述的make install命令完成后,在rootfs目录下仅仅只是创建一个根文件系统的框架,很多系统运行所必须的文件尚未建立成功,必须手动复制进去。
    (本次提供的rootfs已经拷贝和修改了如下参数,可以暂时不用修改了,下面的步骤4.1-4.2介绍了如何构建etc目录和lib目录)。

    4.1)构建etc目录

    主要是拷贝一些文件到etc/目录下,并进行一些修改。
    1、将 busybox/examples/bootfloopy/etc/* 拷贝到 /rootfs/etc/ 目录下,然后修改其中的inittab文件;
10
11
12
13
14
    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文件系统镜像。
15
16
下面详细介绍UBI格式的文件系统镜像制作过程。

UBI格式的文件系统镜像制作过程在接下来的文章进行介绍。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

heat.huang

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

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

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

打赏作者

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

抵扣说明:

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

余额充值