コンテナ内のアプリケーションのアップデートはセットアップとは関係なく、
とくに特別な対応なしで通常どおりの方法でアップデートが可能です。
製品マニュアルを参考にしてください。
署名済みブートローダーや Linux カーネルを更新する場合は以下の手順に従ってください。
以下のURLにおける「ブートローダー ソース(u-boot等)」から最新のブートローダーを取得してください。
ブートローダーのソースコードのアーカイブを展開します。
以降、このアーカイブをホームディレクトリに展開した想定で説明します。
|
アーカイブを展開します。[VERSION] はバージョンによって変化します。
|
secureboot_x2/imx-boot のシンボリックリンク元を最新のものにつけかえます。
|
シンボリックリンクを削除します。
|
|
imx-boot-[VERSION] をシンボリックリンク元として secureboot_x2/imx-boot のシンボリックリンクを作成します。
|
最新のブートローダーに署名を行います。
|
最新のブートローダー対して署名したファイルが作成されます。
|
最新の署名済みブートローダーをインストールするための SWU イメージを作成します。
|
mkswu ディレクトリに移動します。
|
|
使用する desc ファイル(boot.desc)を mkswu ディレクトリにコピーします。
|
|
swdesc_boot の引数を最新の署名済みブートローダーのファイルパスに置き換えてください。
|
|
SWU イメージを作成するためのパスワードの入力を求められます。
|
|
boot.swu がカレントディレクトリに作成されます。
|
|
boot.swu の中身を表示します。[VERSION] が最新であることをご確認ください。
|
作成した boot.swu を Armadillo にインストールすることでブートローダーをアップデートできます。
5.2. 署名済み Linux カーネルの更新方法
署名済み Linux カーネルを更新するために、secureboot.sh linux コマンドを使用します。
--linux-update 引数を指定することで最新の Linux カーネルイメージをダウンロードできます。
at-dtweb でカスタマイズした dtbo ファイルを Linux カーネルイメージに組み込みたい場合は、secureboot.sh linux コマンド実行時に --dtbo でその dtbo ファイルのパスを指定してください。
ストレージの暗号化を行っている場合は --initrd-type mmc を指定してください。
|
最新の Linux カーネルの apk の apk パッケージを取得します。
|
|
署名済みの暗号化対応の Linux カーネルイメージが作成されます。
|
SWU イメージを作成するための desc ファイルを作成します。
|
mkswu ディレクトリに移動します。
|
|
作成した署名済み Linux カーネルイメージを SWU イメージに組み込むための desc ファイル(encrypted_rootfs_linux_update.desc)を mkswu ディレクトリにコピーします。
|
|
encrypted_rootfs_linux_update.desc の中身を表示します。
|
|
[LATEST_VERSION] は更新する際の最新のバージョンに書き換えてください。
|
|
作成した署名済み Linux カーネルイメージのパスを swdesc_boot_linux の引数に指定してください。
|
SWU イメージを作成します。
|
SWU イメージを作成するためのパスワードの入力を求められます。
|
|
encrypted_rootfs_linux_update.swu がカレントディレクトリに作成されます。
|
|
encrypted_rootfs_linux_update.swu の中身を表示します。[LATEST_VERSION] が最新であることをご確認ください。
|
作成した encrypted_rootfs_linux_update.swu を Armadillo にインストールすることで Linux カーネルイメージをアップデートできます。
何らかのインシデント対応による鍵更新、また、鍵の定期更新などが必要な場合、その時点で利用している鍵を無効化して、別の鍵に切り替えることが可能です。
5.3.1. SRK の無効化 (revocation)
ここでは SRK1 (index 0) から SRK2 (index 1) に変更する例を説明します。
secureboot.conf の revocation のロックを解除する設定を有効にします
デフォルトでは eFuse の revoke レジスタはロックされているので書き込みできません。
ロックは HAB の設定で解除することができます。
常にロックを解除すると攻撃者に悪用される可能性があるので通常はロックされるべきです。
secureboot_x2/secureboot.conf を開いて、CST_UNLOCK_SRK=y のコメントを
外してください。
secureboot.conf の詳細については 「secureboot.conf の設定方法」 を参照してください。
署名済みイメージを書き込む
環境に合わせて、署名済みか、暗号化+署名済みのイメージを作成して、
イメージを書き込んでください。
-
再起動
Unlock を確認する
再起動時の uboot-imx のプロンプトを立ち上げてレジスタ値を確認します。
以下のコマンドを実行してください。
bit1 (SRK_REVOKE_LOCK) が 0 ならば Unlock 状態です。
|
7dbc の bit 1 が 0 なので unlock 状態
|
SRK を無効化する
ビットフィールドはビットは 0 はじまりで、鍵の番号は 1 はじまり (1,2,3,4) になります。
bit0 が SRK1、bit1 が SRK2、bit2 が SRK3、bit3 が SRK4 です。
![[注意]](images/caution.png) | |
---|
以下のコマンドはあくまで例なので、そのまま実行しないで下さい。 |
SRK1 を無効化する場合は以下のコマンドを実行してください。最終引数が無効化する鍵の設定値です。
ここでは SRK1 (index 0) から SRK2 (index 1) に変更する例を説明します。
SRK の変更
secureboot.conf の CST_SOURCE_INDEX を 0 から 1 に変更してください。
secureboot.conf の詳細については 「secureboot.conf の設定方法」 を参照してください。
再署名する
環境に合わせて、署名済みか、暗号化+署名済みのイメージを作成して、
イメージを書き込んでください。