当前位置: 首页 > ds >正文

Yocto meta-toradex-security layer 创建独立数据分区

By Toradex 胡珊逢

简介

Toradex 为其产品使用的软件系统如 Linux 提供了诸多的安全功能,例如 Secure Boot、分区加密、OP-TEE 等,帮助用户应对安全合规。这些功能可以通过在 Yocto Project 中添加由 Toradex 开发的 meta-toradex-securitylayer 被轻松使用。我们将在接下的几篇文章中介绍如何使用这些功能。本次我们首先介绍如何在使用 Yocto Project 生成安装镜像时创建一个独立的分区,这为后面的分区加密做好准备。

Yocot Project 环境搭建和配置

参考 Build a Reference Image with Yocto Project/OpenEmbedded页面的说明,我们使用最新的 Linux BSP 7 版本。除了使用默认的 repo 外,我们还可以使用国内站点的 repo 工具,便于下载。

$ curl -L https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o repo

$ chmod +x repo

$ export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo'

下载编译 BSP 7 镜像所使用的 mainifest 文件。

$ repo init -u git://git.toradex.cn/toradex-manifest.git -b scarthgap-7.x.y -m tdxref/default.xml
$ repo sync
$ . export

执行完 `repo sync` 命令后,可以在 layers 目录下发现 Yocto Project 使用的 recipes 文件。在 layers 目录下需要添加 meta-toradex-security 以及其依赖的 meta-security layers。

$ cd layers
$ git clone -b scarthgap-7.x.y https://github.com/toradex/meta-toradex-security.git
$ git clone -b scarthgap git://git.yoctoproject.org/meta-security

在 build/conf/bblayers.conf 的末尾增加 meta-toradex-security 和 meta-security。这样在稍后的 bitbake 编译时才能够使用这些 recipes。

${TOPDIR}/../layers/openembedded-core/meta \
${TOPDIR}/../layers/meta-toradex-security \
${TOPDIR}/../layers/meta-security \

在 build/conf/local.conf 的末尾添加下面内容。

INHERIT += "tdx-tezi-data-partition"

在创建和挂载分区时,local.conf 可以使用下面变量改变分区名字、挂载路径、是否自动挂载以及使用其他的挂载参数等,可以根据需要使用。

变量

描述

默认值

TDX_TEZI_DATA_PARTITION_TYPE

数据分区文件系统类型。可用的值为 ext2、ext3、ext4、fat 和 ubifs。
支持的值仅限于 Toradex Easy Installer 所支持的范围

ext4

TDX_TEZI_DATA_PARTITION_LABEL

用于格式化和挂载数据分区的标签

DATA

TDX_TEZI_DATA_PARTITION_AUTOMOUNT

设置为 1 以在启动时自动挂载数据分区,或设为0禁用自动挂载;
当设置为-1时,该分区甚至不会出现在fstab中(需通过其他方式挂载)

如果使用了 tdx-encrypted 类为 -1,否则为 1

TDX_TEZI_DATA_PARTITION_MOUNTPOINT

数据分区应挂载的目录

/data

TDX_TEZI_DATA_PARTITION_MOUNT_FLAGS

用于挂载数据分区的标志。有关可用挂载标志的更多信息,
请参阅 mount 手册页。

rw,nosuid,nodev,noatime, errors=remount-ro

模块情况下将在 /data 目录挂载一个 EXT4 格式的分区,在该分区上可以存放用户的数据。

编译镜像

完成上面的配置后,即可使用 bitbake 命令编译镜像。例如本次测试将编译用于 Verdn AM62 模块的 minimal image。

$ MACHINE=verdin-am62 bitbake tdx-reference-minimal-image

安装镜像

虽然在 Yocto Project 中规划了一个 /data 下的分区,但该分区还是需要在模块上安装镜像时,由 Toradex Easy Installer 在模块的 eMMC 上创建。在生成镜像的安装文件 image.json 可以看到如下内容。在 RFS 系统分区后会创建一个 DATA 分区。

{
  "partition_size_nominal": "512",
  "partition_type": "83",
  "want_maximised": true,
  "content": {
      "label": "DATA",
      "filesystem_type": "ext4",
      "mkfs_options": "-E nodiscard",
      "filename": ""
  }
}

检查分区情况

安装完毕重启进入系统后,使用 mount 命令可以看到 /dev/mmcblk0p3 被挂载到了 /data 目录下。

/dev/mmcblk0p3 on /data type ext4 (rw,nosuid,nodev,noatime,errors=remount-ro) [DATA]

在 /etc/fstab 中,将 LABEL 为 DATA 的分区在启动时自动挂载。LABEL 名字是前面表格中 TDX_TEZI_DATA_PARTITION_LABEL 参数的默认值。

root@verdin-am62-15415684:/data# cat /etc/fstab 
...
LABEL=DATA  /data  auto  rw,nosuid,nodev,noatime,errors=remount-ro,auto  0  0

在 image.json 中,RFS 和 DATA 分区都设置了 "want_maximised": true,所以这两个分区会平分 eMMC 上剩余的空间,这里基本约为 3GB。

root@verdin-am62-15415684:/data# df -h
Filesystem                Size      Used Available Use% Mounted on
/dev/root                 3.4G    207.0M      3.0G   6% /
...
/dev/mmcblk0p3            3.4G     28.0K      3.2G   0% /data

总结

通过 meta-toradex-security,用户可以在编译镜像时轻松规划分区,并在运行时将其自动挂载。更多来自 meta-toradex-security 实用功能,我们将在后续文章介绍。

http://www.xdnf.cn/news/1734.html

相关文章:

  • HTML邮件背景图兼容 Outlook
  • 避免事件“穿透”——Vue 中事件冒泡的理解与解决方案
  • AD16如何设置布线规则
  • JAVA聚焦OutOfMemoryError 异常
  • Spring Cloud Gateway配置双向SSL认证(完整指南)
  • 商显行业革新者:RK3588的8K显示技术如何打造沉浸式商业体验
  • JW01三合一传感器详解(STM32)
  • nextjs国际化
  • 【Rust结构体】Rust结构体详解:从基础到高级应用
  • Linux环境下安装PostgreSQL详细步骤
  • Tailwind CSS 初学者入门指南:项目集成,主要变更内容!
  • LLM学习笔记4——本地部署Docker、vLLM和Qwen2.5-32B-Instruct实现OpenManus的使用
  • JDK(java)安装及配置 --- app笔记
  • Matlab 基于共面螺旋管或共面亥姆霍兹谐振器的超薄低频吸声板
  • Sharding-JDBC 系列专题 - 第九篇:高可用性与集群管理
  • 【JavaScript】`Object` 对象静态方法详解
  • 怎样记忆Precision、Recall?
  • [特殊字符][特殊字符] HarmonyOS相关实现原理聊聊![特殊字符][特殊字符]
  • 【玩转全栈】—— 无敌前端究极动态组件库--Inspira UI
  • 乡村治理数字化平台:信息技术赋能乡村振兴的深度探索
  • 数据结构-选择排序(Python)
  • QT创建软件登录界面(14)
  • JavaScript 的“世界模型”:深入理解对象 (Objects)
  • 理解欧拉公式
  • 弄清C语言中的链表
  • 济南国网数字化培训班学习笔记-第二组-1节-输电线路工程
  • DRF凭什么更高效?Django原生API与DRF框架开发对比解析
  • 如何创建和使用 Hive 视图
  • 【低配置电脑预训练minimind的实践】
  • 【网络安全】社会工程学策略