5.4.4. 系统镜像

对于有镜像的分区,需要创建一个对应的镜像来烧录到该分区上, 该镜像的名字需要和 image_cfg.json 中的分区的名字一致,比如 user 分区, 本文介绍如何在编译时安装部分程序和数据到该分区的文件系统中,并且生成对应的文件系统镜像。

5.4.4.1. 镜像配置

SDK 目前支持用户最多生成三个不同的自定义文件系统镜像,需要在配置界面进行配置。

make menuconfig

根据需要勾选:

Filesystem images  --->
   [*] UserFS 1  --->
   [ ] UserFS 2  --->
   [ ] UserFS 3  --->

--- UserFS 1
    (user) Name                                      \\ 文件系统镜像名字,可修改,如 user
    FS Type (UBIFS)  --->                            \\ 文件系统,支持Ext4、UBIFS、JFFS2、SQUASHFS,建议选择UFBIFS
    (0x1000000) ubifs size(Should be aligned to MB)  \\ Image的大小,需要和分区保持一致,单位为Byte
    ubifs runtime compression (no compression)  ---> \\ UBIFS 内部压缩算法
    Compression method (no compression)  --->        \\ Image 压缩方法

        ()    Additional mkfs.ubifs options
        ()    Overlay directory

注意

使用 JFFS2 文件系统时,需要 make kernel-menuconfig 失能 CONFIG_MTD_SPI_NOR_USE_4K_SECTORS 配置

参数详细解释:

  • 文件系统镜像名字: Name

    这里默认是 userfs1 ,可根据实际情况修改,如 user

  • 文件系统类型: FS Type

    • 如果是 EMMC, 则请选择 EXT4

    • 如果是 NAND,则请选择 UBIFS

    • 如果是 NOR,则可以选择 UBIFS、JFFS2、SQUASHFS

  • Image 大小: ubifs size

    • Image 的大小要小于等于分区的大小,不能超过

    • 单位为 Byte, 默认 0x1 000 000 为 1M, 0x10 000 000 则为 16MB

    • 设置时需要对齐为 MB

  • 压缩算法

    • 压缩算法的引进将减少 Image 的 Size,但读写速度变慢

    • UBIFS 内部压缩算法 和 Image 两中压缩算法设计

    • 建议不进行压缩设置

5.4.4.2. 文件的安装

此处勾选了 UserFS 1 之后,编译时,SDK 会自动创建一个文件安装目录:

output/userfs/fs1.<fs_name>/

比如 fs_name = "User",则路径为:

output/userfs/fs1.User/

如果在编译 SDK 的组件包过程中,需要安装文件到该路面,可通过 Makefile 变量:

$(TARGET_USERFS1_DIR)

可得到该安装目录的路径。

小技巧

UserFS 2, UserFS 3 也是同样的配置。

5.4.4.3. UserFS Overlay

UserFS 同样支持 Overlay 的操作。Overlay 的目录在 RootFS 中的 Overlay directory 中配置。如果需要配置多个 Overlay 目录,则在不同的目录之间, 使用空格进行分开。

../../../_images/userfs_overlay.png

图 5.23 UserFS Overlay 示例