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