運用編

コンテナ内のアプリケーションのアップデートはセットアップとは関係なく、 とくに特別な対応なしで通常どおりの方法でアップデートが可能です。 製品マニュアルを参考にしてください。

署名済みブートローダーや Linux カーネルを更新する場合は以下の手順に従ってください。

5.1. 署名済みブートローダーの更新方法

以下のURLにおける「ブートローダー ソース(u-boot等)」から最新のブートローダーを取得してください。

ブートローダーのソースコードのアーカイブを展開します。 以降、このアーカイブをホームディレクトリに展開した想定で説明します。

[ATDE ~]$ tar xaf imx-boot-[VERSION].tar.gz 1

図5.1 最新のブートローダーのソースコードを展開する


1

アーカイブを展開します。[VERSION] はバージョンによって変化します。

secureboot_x2/imx-boot のシンボリックリンク元を最新のものにつけかえます。

[ATDE ~]$ rm -rf secureboot_x2/imx-boot 1
[ATDE ~]$ ln -s /home/atmark/imx-boot-[VERSION] /home/atmark/secureboot_x2/imx-boot 2

図5.2 シンボリックリンク元を最新のブートローダーに変更する


1

シンボリックリンクを削除します。

2

imx-boot-[VERSION] をシンボリックリンク元として secureboot_x2/imx-boot のシンボリックリンクを作成します。

最新のブートローダーに署名を行います。

[ATDE ~]$ cd imx-boot-[VERSION]
[ATDE ~/imx-boot-[VERSION]]$ ./secureboot.sh imxboot
Logging build outputs to /home/atmark/secureboot_x2/tmp/imxboot.log

Building imx-boot (boot loader)...
Created /home/atmark/secureboot_x2/out/imx-boot_armadillo_x2.signed 1

図5.3 最新のブートローダーに署名する


1

最新のブートローダー対して署名したファイルが作成されます。

最新の署名済みブートローダーをインストールするための SWU イメージを作成します。

[ATDE ~/imx-boot-[VERSION]]$ cd ~/mkswu 1
[ATDE ~/mkswu]$ cp /usr/share/mkswu/examples/boot.desc . 2
[ATDE ~/mkswu]$ cat boot.desc
swdesc_boot "/home/atmark/secureboot_x2/out/imx-boot_armadillo_x2.signed" 3
[ATDE ~/mkswu]$ mkswu boot.desc
Enter pass phrase for /home/atmark/mkswu/swupdate.key: 4
boot.swu を作成しました。5
[ATDE ~/mkswu]$ mkswu --show boot.swu 6
# boot.swu

# Built with mkswu [mkswu のバージョン]
# signed by "atmark"

swdesc_boot  --version boot [VERSION] /home/atmark/secureboot_x2/out/imx-boot_armadillo_x2.signed

図5.4 最新の署名済みブートローダーを SWU イメージに組み込む


1

mkswu ディレクトリに移動します。

2

使用する desc ファイル(boot.desc)を mkswu ディレクトリにコピーします。

3

swdesc_boot の引数を最新の署名済みブートローダーのファイルパスに置き換えてください。

4

SWU イメージを作成するためのパスワードの入力を求められます。

5

boot.swu がカレントディレクトリに作成されます。

6

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 を指定してください。

[ATDE ~]$ cd imx-boot-[VERSION]
[ATDE ~/imx-boot-[VERSION]]$ ./secureboot.sh linux --linux-update --initrd-type mmc
Logging build outputs to /home/atmark/secureboot_x2/tmp/linux.log

Downloading https://download.atmark-techno.com/armadillo-iot-g4/baseos/linux-at-x2-latest.apk 1
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 16.1M  100 16.1M    0     0  6582k      0  0:00:02  0:00:02 --:--:-- 6579k

Building initrd for mmc (first time is slow)
Signing linux image (mmc)...
Created /home/atmark/secureboot_x2/out/Image.signed-mmc 2

図5.5 最新の Linux カーネルイメージに署名する


1

最新の Linux カーネルの apk の apk パッケージを取得します。

2

署名済みの暗号化対応の Linux カーネルイメージが作成されます。

SWU イメージを作成するための desc ファイルを作成します。

[ATDE ~/imx-boot-[VERSION]]$ cd ~/mkswu 1
[ATDE ~/mkswu]$ cp /usr/share/mkswu/examples/encrypted_rootfs_linux_update.desc . 2
[ATDE ~/mkswu]$ cat encrypted_rootfs_linux_update.desc 3
# This example is intended for users with ENCRYPTED_ROOTFS.
# Ignore it if not using encryped rootfs.

# version must be updated everytime like normal updates
swdesc_option version=[LATEST_VERSION] 4

# Image.signed is an a linux image with initrd built using
# imx-boot/secureboot.sh linux
swdesc_boot_linux "/home/atmark/secureboot_x2/out/Image.signed-mmc" 5

図5.6 最新の署名済み Linux カーネルイメージを SWU イメージに組み込む desc ファイルを作成する


1

mkswu ディレクトリに移動します。

2

作成した署名済み Linux カーネルイメージを SWU イメージに組み込むための desc ファイル(encrypted_rootfs_linux_update.desc)を mkswu ディレクトリにコピーします。

3

encrypted_rootfs_linux_update.desc の中身を表示します。

4

[LATEST_VERSION] は更新する際の最新のバージョンに書き換えてください。

5

作成した署名済み Linux カーネルイメージのパスを swdesc_boot_linux の引数に指定してください。

SWU イメージを作成します。

[ATDE ~/mkswu]$ mkswu encrypted_rootfs_linux_update.desc
Enter pass phrase for /home/atmark/mkswu/swupdate.key: 1
encrypted_rootfs_linux_update.swu を作成しました。2
[ATDE ~/mkswu]$ mkswu --show encrypted_rootfs_linux_update.swu 3
# encrypted_rootfs_linux_update.swu

# Built with mkswu [mkswu のバージョン]
# signed by "atmark"

swdesc_boot_linux  --version boot_linux [LATEST_VERSION] /home/atmark/secureboot_x2/out/Image.signed-mmc

図5.7 最新の署名済み Linux カーネルイメージが組み込まれた SWU イメージを作成する


1

SWU イメージを作成するためのパスワードの入力を求められます。

2

encrypted_rootfs_linux_update.swu がカレントディレクトリに作成されます。

3

encrypted_rootfs_linux_update.swu の中身を表示します。[LATEST_VERSION] が最新であることをご確認ください。

作成した encrypted_rootfs_linux_update.swu を Armadillo にインストールすることで Linux カーネルイメージをアップデートできます。

5.3. SRK の無効化と切り替え

何らかのインシデント対応による鍵更新、また、鍵の定期更新などが必要な場合、その時点で利用している鍵を無効化して、別の鍵に切り替えることが可能です。

5.3.1. SRK の無効化 (revocation)

ここでは SRK1 (index 0) から SRK2 (index 1) に変更する例を説明します。

  1. secureboot.conf の revocation のロックを解除する設定を有効にします

    デフォルトでは eFuse の revoke レジスタはロックされているので書き込みできません。 ロックは HAB の設定で解除することができます。 常にロックを解除すると攻撃者に悪用される可能性があるので通常はロックされるべきです。

    secureboot_x2/secureboot.conf を開いて、CST_UNLOCK_SRK=y のコメントを 外してください。 secureboot.conf の詳細については 「secureboot.conf の設定方法」 を参照してください。

    [ATDE ~]$ vi secureboot_x2/secureboot.conf

    図5.8 secureboot.conf の CST_UNLOCK_SRK を編集


  2. 署名済みイメージを書き込む

    環境に合わせて、署名済みか、暗号化+署名済みのイメージを作成して、 イメージを書き込んでください。

  3. 再起動
  4. Unlock を確認する

    再起動時の uboot-imx のプロンプトを立ち上げてレジスタ値を確認します。 以下のコマンドを実行してください。 bit1 (SRK_REVOKE_LOCK) が 0 ならば Unlock 状態です。

    u-boot=> md 0x30350050 1
    30350050: 00007dbc 1

    図5.9 Unlock 状態であることを確認する


    1

    7dbc の bit 1 が 0 なので unlock 状態

  5. SRK を無効化する

    ビットフィールドはビットは 0 はじまりで、鍵の番号は 1 はじまり (1,2,3,4) になります。 bit0 が SRK1、bit1 が SRK2、bit2 が SRK3、bit3 が SRK4 です。

    [注意]

    以下のコマンドはあくまで例なので、そのまま実行しないで下さい。

    SRK1 を無効化する場合は以下のコマンドを実行してください。最終引数が無効化する鍵の設定値です。

    u-boot=> fuse prog 9 3 1

    図5.10 SRK1 を無効化する


5.3.2. SRK の切り替え

ここでは SRK1 (index 0) から SRK2 (index 1) に変更する例を説明します。

  1. SRK の変更

    secureboot.conf の CST_SOURCE_INDEX を 0 から 1 に変更してください。 secureboot.conf の詳細については 「secureboot.conf の設定方法」 を参照してください。

    [ATDE ~]$ vi imx-boot-[VERSION]/secureboot.conf

    図5.11 secureboot.conf の CST_SOURCE_INDEX を編集


  2. 再署名する

    環境に合わせて、署名済みか、暗号化+署名済みのイメージを作成して、 イメージを書き込んでください。