この記事では、Jetson NanoのSecure Bootの設定の方法について説明します。
Fuse
Jetson NanoはSecure Bootを有効にするfuseが存在します。fuseは、「bitの0を1に書き換えでき、bitの1を0に書き換えできない」、という特徴があります。電源を切っても書き換えた値は記憶されます。またJetson NanoのfuseにはLock機能が存在し、Lockを1に書き換えるとLock対象のfuseは書き換えできなくなります。詳細は https://docs.nvidia.com/jetson/archives/l4t-archived/l4t-3261/index.html#page/Tegra%20Linux%20Driver%20Package%20Development%20Guide/bootloader_secure_boot.html を参照してください。
Jetson NanoでSecure Bootに関連するfuseは以下の通りです。

Enabling Secure Boot
Secure Bootを有効にするには、Jetson NanoをRecovery Modeに入れ、fuse書き込みコマンドを実行します。Recovery Modeに入れる方法はこちらの記事を参照してください。fuse書き込みツールは https://developer.nvidia.com/embedded/l4t/r32_release_v7.2/t210/secureboot_r32.7.2_aarch64.tbz2 からダウンロードし、Linux_for_Tegra ディレクトリに展開しください。
これ以降の操作は Linux_for_Tegra ディレクトリで実行します。
Secure Bootに必要なRSA秘密鍵を作成します。Jetson Nanoは2048bitのRSA鍵が必要です。
openssl genrsa -out jetson_rsa_private.pem 2048
Code language: Bash (bash)
fuseの書き込みを行います。
sudo ./odmfuse.sh -i 0x21 -c PKC -k jetson_rsa_priv.pem -p --disable-jtag
Code language: Bash (bash)
-c PKC: Public Key Cryptographyを指定
-p: odm_production_mode fuseに1に書き込み。odm_production_modeはLockの機能を持ち、1を書き込むとpublic_key_hashは書き込み不可になります。
-k jetson_rsa_priv.pem: jetson_rsa_priv.pemのsha256値をpublic_key_hash fuseに書き込み
–disable-jtag: Secure Bootの観点からJTAGは無効化に設定します。
以上の操作によりJetson NanoはSecure Bootが有効になります。
最後にSecure Bootを有効にしたイメージの書き込みを行います。
sudo ./flash.sh -x 0x21 -u jetson_rsa_priv.pem jetson-nano-devkit mmcblk0p1
以上です。