3.3.1. セキュアブートの有効化および rootfs の暗号化を行う SWU イメージの作成
secureboot.sh の build を実行します。
この時に使用できるオプション引数は以下の通りです。
表3.4 build の引数
オプション引数 | 説明 |
---|
--image | 使用する Linux カーネルイメージを指定できます。絶対パスで指定してください。secureboot.conf 内の LINUX_IMAGE 変数で指定することもできます。 |
--initrd | 署名および rootfs の暗号化時に使用する initrd を指定できます。絶対パスで指定してください。secureboot.conf 内の LINUX_INITRD 変数で指定することもできます。 |
--dtb | 使用する dtb ファイルを指定できます。絶対パスで指定してください。secureboot.conf 内の LINUX_DTB 変数で指定することもできます。 |
--dtbo | 使用する dtbo ファイルを指定できます。絶対パスで指定してください。secureboot.conf 内の LINUX_DTB_OVERLAYS_PREAPPLY 変数で指定することもできます。 |
--modules | 使用する modules ディレクトリを指定できます。絶対パスで指定してください。secureboot.conf 内の LINUX_MODULES 変数で指定することもできます。 |
例えば、Armadillo-IoT ゲートウェイ A9E の場合、at-dtweb(Device Tree をカスタマイズするツール)を利用して dtbo ファイルを作成できます。
その dtbo ファイルを使用する場合は以下のように指定してください。
ここでは、作成した dtbo ファイル( armadillo-iotg-a9e-at-dtweb.dtbo )をホームディレクトリに配置したとします。
![[注記]](images/note.png) | |
---|
at-dtweb についての説明は製品マニュアルをご参照ください。 |
もしくは、secureboot_a900/secureboot.conf でも使用する dtbo ファイルを指定できます。
例えば、以下のように設定します。
secureboot.conf で dtbo ファイルを指定した場合は、imx-boot-[VERSION] ディレクトリで以下のように build を実行してください。
[ATDE ~/imx-boot-[VERSION]]$ ./secureboot.sh build
Logging build outputs to /home/atmark/secureboot_a900/tmp/build.log
::(省略)
Welcome to NXP firmware-imx-8.11.bin
You need to read and accept the EULA before you can continue.
::(省略)
Do you accept the EULA you just read? (y/N) y
::(省略)
Created /home/atmark/secureboot_a900/out/imx-boot_armadillo-900.signed
Signing linux image...
Created /home/atmark/secureboot_a900/out/Image.signed
Building initrd for mmc (first time is slow)
Signing linux image (mmc)...
Created /home/atmark/secureboot_a900/out/Image.signed-mmc
Building 1_write_srk_install_kernel.swu...
Enter pass phrase for /home/atmark/mkswu/swupdate.key:
Building 2_secureboot_close.swu...
Enter pass phrase for /home/atmark/mkswu/swupdate.key:
Building 3_disk_encryption.swu...
Enter pass phrase for /home/atmark/mkswu/swupdate.key:
Please install SWU images in the following order:
- /home/atmark/secureboot_a900/swu/1_write_srk_install_kernel.swu
- /home/atmark/secureboot_a900/swu/2_secureboot_close.swu
- /home/atmark/secureboot_a900/swu/3_disk_encryption.swu
|
NXP の EULA の承諾を求められる場合は、下矢印キーを押し続けてください。
|
|
下矢印キーが入力された場合は消した後、y を入力してください。
|
|
SWU イメージを3つ作成するので、パスワードの入力を3回求められます。
|
|
SWU イメージが3つ作成されます。
|
ビルド後に以下の SWU イメージが作られていることをご確認ください。
これらの SWU イメージを Armadillo にインストールすることでセキュアブートの有効化および Armadillo Base OS が保存されている rootfs パーティションの暗号化を実現できます。
![[重要項目]](images/important.png) | |
---|
secureboot.sh build を実行して生成された鍵(cst/keys)は今後も利用するものです。
壊れにくい、セキュアなストレージにコピーしておくことをお勧めします。 |
参考までに上記の3つの SWU イメージが生成されるまでの流れを以降に示します。
secureboot.sh build によって作成された SWU イメージは以下になります。
表3.5 生成された SWU イメージ
SWU イメージ名 | 説明 |
---|
1_write_srk_install_kernel.swu | 署名されたブートローダーおよび Linux カーネルイメージのインストール、SRKのハッシュの書き込みを行います。 |
2_secureboot_close.swu | セキュアブートの close 処理を行います。 |
3_disk_encryption.swu | ルートファイルシステム(rootfs)を暗号化します。暗号化に対応した Linux カーネルイメージもインストールします。 |
生成された SWU イメージを以下の順に Armadillo にインストールしてください。
-
1_write_srk_install_kernel.swu
-
2_secureboot_close.swu
-
3_disk_encryption.swu
SWU イメージのインストール方法については製品マニュアルをご参照ください。
3.3.2.1. 1_write_srk_install_kernel.swu のインストール
1_write_srk_install_kernel.swu を Armadillo にインストールすることで以下の設定が行われます。
-
署名されたブートローダーおよび Linux カーネルイメージのインストール
-
eFuse への SRK ハッシュの書き込み
-
ブートローダーにおいて CFG_ENV_FLAGS_LIST_STATIC で指定された環境変数以外の変更の禁止
-
ブートローダーのプロンプトの使用の禁止
1_write_srk_install_kernel.swu をインストールしただけでは、まだセキュアブートは有効になりません。
1_write_srk_install_kernel.swu が Armadillo に正常にインストールされた場合、SRK のハッシュが書き込まれていることを以下のコマンドで確認できます。
|
SRK のハッシュは書き込まれていますが、セキュアブートはまだ有効ではないことを示しています。
|
3.3.2.2. 2_secureboot_close.swu のインストール
2_secureboot_close.swu を Armadillo にインストールすることで、close 処理が行われてセキュアブートが有効になります。
SRK ハッシュが書き込まれていない、もしくは /boot/Image が存在する場合はこの SWU イメージはインストール時にエラーになります。
以下、2_secureboot_close.swu が Armadillo に正常にインストールされた場合の起動ログを以下に示します。
|
セキュアブートが有効である場合に表示されます。
|
|
カーネルが起動することをご確認ください。
|
以下のコマンドでもセキュアブートが有効であることを確認できます。
3.3.2.3. 3_disk_encryption.swu のインストール
3_disk_encryption.swu を Armadillo にインストールすることで、Armadillo Base OS が保存されている rootfs パーティションが暗号化されます。
![[重要項目]](images/important.png) | |
---|
他のパーティション(log やコンテナやアプリケーションが保存されている appfs)は SWU によって暗号化できませんので、そちらも暗号化したい場合は 4章量産編 の手順が完了した後にインストールして有効化してください。 |
以下、3_disk_encryption.swu が Armadillo に正常にインストールされた場合の確認方法を以下に示します。
|
root にログインします。
|
|
lsblk コマンドを実行します。
|
|
/live/rootfs に crypt の表記があり、rootfs が暗号化されていることを確認できます。
|