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。 | ext4 |
TDX_TEZI_DATA_PARTITION_LABEL | 用于格式化和掛載數據分區的標簽 | DATA |
TDX_TEZI_DATA_PARTITION_AUTOMOUNT | 設置為 1 以在啟動時自動掛載數據分區,或設為0禁用自動掛載; | 如果使用了 tdx-encrypted 類為 -1,否則為 1 |
TDX_TEZI_DATA_PARTITION_MOUNTPOINT | 數據分區應掛載的目錄 | /data |
TDX_TEZI_DATA_PARTITION_MOUNT_FLAGS | 用于掛載數據分區的標志。有關可用掛載標志的更多信息, | 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 實用功能,我們將在后續文章介紹。
*博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。