Yocto meta-toradex-security layer 創(chuàng )建獨立數據分區
By Toradex 胡珊逢
簡(jiǎn)介
Toradex 為其產(chǎn)品使用的軟件系統如 Linux 提供了諸多的安全功能,例如 Secure Boot、分區加密、OP-TEE 等,幫助用戶(hù)應對安全合規。這些功能可以通過(guò)在 Yocto Project 中添加由 Toradex 開(kāi)發(fā)的 meta-toradex-securitylayer 被輕松使用。我們將在接下的幾篇文章中介紹如何使用這些功能。本次我們首先介紹如何在使用 Yocto Project 生成安裝鏡像時(shí)創(chuàng )建一個(gè)獨立的分區,這為后面的分區加密做好準備。
Yocot Project 環(huán)境搭建和配置
參考 Build a Reference Image with Yocto Project/OpenEmbedded頁(yè)面的說(shuō)明,我們使用最新的 Linux BSP 7 版本。除了使用默認的 repo 外,我們還可以使用國內站點(diǎn)的 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 目錄下發(fā)現 Yocto Project 使用的 recipes 文件。在 layers 目錄下需要添加 meta-toradex-security 以及其依賴(lài)的 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 編譯時(shí)才能夠使用這些 recipes。
${TOPDIR}/../layers/openembedded-core/meta \
${TOPDIR}/../layers/meta-toradex-security \
${TOPDIR}/../layers/meta-security \
在 build/conf/local.conf 的末尾添加下面內容。
INHERIT += "tdx-tezi-data-partition"
在創(chuàng )建和掛載分區時(shí),local.conf 可以使用下面變量改變分區名字、掛載路徑、是否自動(dòng)掛載以及使用其他的掛載參數等,可以根據需要使用。
變量 | 描述 | 默認值 |
TDX_TEZI_DATA_PARTITION_TYPE | 數據分區文件系統類(lèi)型??捎玫闹禐?/span> ext2、ext3、ext4、fat 和 ubifs。 | ext4 |
TDX_TEZI_DATA_PARTITION_LABEL | 用于格式化和掛載數據分區的標簽 | DATA |
TDX_TEZI_DATA_PARTITION_AUTOMOUNT | 設置為 1 以在啟動(dòng)時(shí)自動(dòng)掛載數據分區,或設為0禁用自動(dòng)掛載; | 如果使用了 tdx-encrypted 類(lèi)為 -1,否則為 1 |
TDX_TEZI_DATA_PARTITION_MOUNTPOINT | 數據分區應掛載的目錄 | /data |
TDX_TEZI_DATA_PARTITION_MOUNT_FLAGS | 用于掛載數據分區的標志。有關(guān)可用掛載標志的更多信息, | rw,nosuid,nodev,noatime, errors=remount-ro |
模塊情況下將在 /data 目錄掛載一個(gè) EXT4 格式的分區,在該分區上可以存放用戶(hù)的數據。
編譯鏡像
完成上面的配置后,即可使用 bitbake 命令編譯鏡像。例如本次測試將編譯用于 Verdn AM62 模塊的 minimal image。
$ MACHINE=verdin-am62 bitbake tdx-reference-minimal-image
安裝鏡像
雖然在 Yocto Project 中規劃了一個(gè) /data 下的分區,但該分區還是需要在模塊上安裝鏡像時(shí),由 Toradex Easy Installer 在模塊的 eMMC 上創(chuàng )建。在生成鏡像的安裝文件 image.json 可以看到如下內容。在 RFS 系統分區后會(huì )創(chuàng )建一個(gè) DATA 分區。
{
"partition_size_nominal": "512",
"partition_type": "83",
"want_maximised": true,
"content": {
"label": "DATA",
"filesystem_type": "ext4",
"mkfs_options": "-E nodiscard",
"filename": ""
}
}
檢查分區情況
安裝完畢重啟進(jìn)入系統后,使用 mount 命令可以看到 /dev/mmcblk0p3 被掛載到了 /data 目錄下。
/dev/mmcblk0p3 on /data type ext4 (rw,nosuid,nodev,noatime,errors=remount-ro) [DATA]
在 /etc/fstab 中,將 LABEL 為 DATA 的分區在啟動(dòng)時(shí)自動(dòng)掛載。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,所以這兩個(gè)分區會(huì )平分 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
總結
通過(guò) meta-toradex-security,用戶(hù)可以在編譯鏡像時(shí)輕松規劃分區,并在運行時(shí)將其自動(dòng)掛載。更多來(lái)自 meta-toradex-security 實(shí)用功能,我們將在后續文章介紹。
*博客內容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀(guān)點(diǎn),如有侵權請聯(lián)系工作人員刪除。