イメージファイルの書き換え方法

本章では、Armadillo-IoT ゲートウェイ A6の内蔵ストレージ(eMMC)に書き込まれているイメージファイルを書き換える手順について説明します。

本章で使用するブートローダーイメージファイルなどは、"Armadillo サイト"でダウンロードすることができます。新機能の追加や不具合の修正などが行われているため、最新バージョンを利用することを推奨します。

12.1. インストールディスクを使用する

インストールディスクを使用すると、内蔵ストレージ上のすべてのイメージをまとめて書き換えることができます。 Armadilloがソフトウェアの問題により起動しなくなった場合の復旧方法としてもご使用頂けます。

[警告]

内蔵ストレージに保存されている、すべてのイメージファイルが上書きされるため、既に保存されているデータやアプリケーションなどは削除されます。

特定のイメージのみ書き換えたい場合には「特定のイメージファイルだけを書き換える」を参照してください。

インストールディスクはATDEで作成します。インストールディスクの作成に使用するファイルを次に示します。

表12.1 インストールディスク作成に使用するファイル

ファイルファイル名

インストールディスクイメージ

install-disk-sd-buster-aiota6-[version].img


12.1.1. インストールディスクの作成

  1. 512 MB 以上の microSD カードまたはUSB メモリを用意してください。
  2. ATDE に microSD カードまたは USB メモリを接続します。詳しくは「取り外し可能デバイスの使用」を参照してください。
  3. microSD カードまたは USB メモリがマウントされている場合、アンマウントします。

    [ATDE ~]$ mount
    (省略)
    /dev/sdb1 on /media/atmark/B18A-3218 type vfat (rw,nosuid,nodev,relatime,uid=1000,gid=1000,fmask=0022,dmask=0077,codepage=437,iocharset=utf8,shortname=mixed,showexec,utf8,flush,errors=remount-ro,uhelper=udisks2)
    [ATDE ~]$ sudo umount /dev/sdb1
  4. microSDカードまたは USB メモリにインストールディスクイメージを書き込みます。

    [ATDE ~]$ sudo dd if=install-disk-sd-buster-aiota6-[version].img of=/dev/sdb bs=4M conv=fsync
    127+1 レコード入力
    127+1 レコード出力
    536870400 バイト (537 MB) コピーされました、 65.6377 秒、 8.2 MB/秒

12.1.2. インストールの実行(microSD カード)

  1. Armadilloの電源が切断されていることを確認します。接続されていた場合は、電源を切断してください。
  2. インストールディスクを microSD ユニットに装着します。装着方法は「microSDカードの装着」を参照してください。
  3. サブユニット SW1(ユーザースイッチ)のスライドスイッチが「スライドスイッチの設定について」の microSD 側に設定されている事を確認してください。
  4. Armadillo に電源を投入すると microSD カードからブートローダーが起動し、次に示すログが表示され、インストールが始まり、自動的に eMMC が書き換えられます。

    U-Boot 2018.03-at8 installer+ (Mar 05 2021 - 18:01:07 +0900)
    
    CPU:   Freescale i.MX6ULL rev1.1 at 396 MHz
    Reset cause: POR
    I2C:   ready
    DRAM:  512 MiB
    MMC:   FSL_SDHC: 0, FSL_SDHC: 1
    In:    serial
    Out:   serial
    Err:   serial
    PMIC: PFUZE3000 DEV_ID=0x30 REV_ID=0x11
    Net:   FEC
    Hit any key to stop autoboot:  0
    7253576 bytes read in 368 ms (18.8 MiB/s)
    26390 bytes read in 54 ms (476.6 KiB/s)
    ## Booting kernel from Legacy Image at 82000000 ...
       Image Name:   Linux-4.14-at31
       Image Type:   ARM Linux Kernel Image (uncompressed)
       Data Size:    7253512 Bytes = 6.9 MiB
       Load Address: 82000000
       Entry Point:  82000000
       Verifying Checksum ... OK
    ## Flattened Device Tree blob at 83000000
       Booting using the fdt blob at 0x83000000
       Loading Kernel Image ... OK
       Loading Device Tree to 9eefa000, end 9ef03715 ... OK
    
    Starting kernel ...
    : (省略)
    *+*+* Install Start!! *+*+*
  5. 以下のようにメッセージが表示されるとインストール完了です。電源を切断してください。

    *+*+* Install Completed!! *+*+*

12.1.3. インストールの実行(USB メモリ)

  1. Armadilloの電源が切断されていることを確認します。接続されていた場合は、電源を切断してください。
  2. インストールディスクを書き込んだ USB メモリを、 Armadillo の USB インタフェースに差し込んでください。
  3. SW1(ユーザースイッチ)を押しながら Armadillo に電源を投入すると、次に示すログが表示されます。

    U-Boot 2018.03-at8 installer+ (Feb 17 2020 - 19:19:21 +0900)
    
    CPU:   Freescale i.MX6ULL rev1.0 at 396 MHz
    Reset cause: POR
    I2C:   ready
    DRAM:  512 MiB
    MMC:   FSL_SDHC: 0, FSL_SDHC: 1
    In:    serial
    Out:   serial
    Err:   serial
    PMIC: PFUZE3000 DEV_ID=0x30 REV_ID=0x11
    Net:   FEC
    =>
  4. 次のように"run usbboot"コマンドを実行するとUSB メモリから起動しインストールが始まり、自動的にeMMCが書き換えられます。

    =>run usbboot
    starting USB...
    USB0:   USB EHCI 1.00
    scanning bus 0 for devices... 1 USB Device(s) found
    USB1:   USB EHCI 1.00
    scanning bus 1 for devices... 2 USB Device(s) found
           scanning usb for storage devices... 1 Storage Device(s) found
    7253576 bytes read in 316 ms (21.9 MiB/s)
    26390 bytes read in 130 ms (198.2 KiB/s)
    stopping USB..
    ## Booting kernel from Legacy Image at 82000000 ...
       Image Name:   Linux-4.14-at31
       Image Type:   ARM Linux Kernel Image (uncompressed)
       Data Size:    7253512 Bytes = 6.9 MiB
       Load Address: 82000000
       Entry Point:  82000000
       Verifying Checksum ... OK
    ## Flattened Device Tree blob at 83000000
       Booting using the fdt blob at 0x83000000
       Loading Kernel Image ... OK
       Loading Device Tree to 9eef9000, end 9ef02715 ... OK
    
    Starting kernel ...
    : (省略)
    *+*+* Install Start!! *+*+*
  5. 以下のようにメッセージが表示されるとインストール完了です。電源を切断してください。

    *+*+* Install Completed!! *+*+*

12.1.4. LED点灯パターンによるインストールの進捗表示

LED点灯パターンによって、インストールの進捗状況を確認することができます。

インストールの進捗とLED点灯パターンの関係を次に示します。

表12.2 インストールの進捗とLED点灯パターン

進捗 ユーザーLED赤 ユーザーLED緑

実行中

消灯

点滅

正常終了

点灯

点灯

異常終了

点滅

消灯


12.2. 特定のイメージファイルだけを書き換える

Armadillo-IoT ゲートウェイ A6が起動した状態であれば、特定のイメージファイルだけを書き換えることができます。

イメージファイルと書き込み先の対応を次に示します。

表12.3 イメージファイルと書き込み先の対応

名称ファイル名ストレージデバイスファイル

ブートローダーイメージ

u-boot-a600-console-uart3-v2018.03-at[version].imx

eMMC

/dev/mmcblk0

Linuxカーネルイメージ

uImage-a600-v4.14-at[version]

/dev/mmcblk0p2

Device Tree Blob

armadillo-iotg-a6-v4.14-at[version].dtb

/dev/mmcblk0p2

Debian GNU/Linuxルートファイルシステム

debian-buster-armhf-aiota6-[version].tar.gz

/dev/mmcblk0p2


12.2.1. ブートローダーイメージの書き換え

ブートローダーイメージの書き換え方法を次に示します。

[armadillo ~]# dd if=u-boot-a600-console-uart3-v2018.03-at[version].imx of=/dev/mmcblk0 bs=1k seek=1 conv=fsync 1
275+0 records in
275+0 records out
281600 bytes (282 kB, 275 KiB) copied, 0.0310393 s, 9.1 MB/s

1

MTDのブロックデバイスの先頭からブートローダーイメージを書き込みます。

[警告]

製品アップデートでリリースされた最新のブートローダーイメージに書き換えを行った場合は図10.6「全ての環境変数をデフォルト値に戻す」を参照して環境変数をデフォルト値に戻してください。

新しくリリースされた最新のブートローダーイメージは、環境変数のデフォルト値が更新されることがあります。書き替え前のブートローダーによって生成された環境変数で、最新のブートローダーを動作させると不具合が起こる可能性があります。

12.2.2. Linuxカーネルイメージの書き換え

Linuxカーネルイメージの書き換え方法を次に示します。

[armadillo ~]# mount /dev/mmcblk0p2 /mnt  1
[armadillo ~]# cp uImage-a600-v4.14-at[version] /mnt/boot/uImage  2
[armadillo ~]# umount /mnt  3

1

eMMCの第2パーティションを/mnt/ディレクトリにマウントします。

2

Linuxカーネルイメージを/mnt/boot/ディレクトリにコピーします。

3

/mnt/ディレクトリにマウントしたeMMCの第2パーティションをアンマウントします。

12.2.3. DTBの書き換え

DTBの書き換え方法を次に示します。

[armadillo ~]# mount /dev/mmcblk0p2 /mnt  1
[armadillo ~]# cp armadillo-iotg-a6-v4.14-at[version].dtb /mnt/boot/a640.dtb  2
[armadillo ~]# umount /mnt  3

1

eMMCの第2パーティションを/mnt/ディレクトリにマウントします。

2

DTBをa640.dtbにリネームして/mnt/boot/ディレクトリにコピーします。

3

/mnt/ディレクトリにマウントしたeMMCの第2パーティションをアンマウントします。

12.2.4. ルートファイルシステムの書き換え

eMMC上のルートファイルシステムを書き換えるには、SDブートまたはUSBブートを行う必要があります。ブートディスクの作成方法やSD/USBブートの実行方法ついては16章SDブートの活用 15章USBブートの活用を参照してください。

SD/USBブートしたArmadilloで、eMMC上のルートファイルシステムを書き換える手順を次に示します。

  1. Debian GNU/LinuxルートファイルシステムアーカイブをArmadilloにコピーします。例としてUSBメモリを利用する方法を記載します。

    ATDEにあるDebian GNU/LinuxルートファイルシステムアーカイブをUSBメモリの第1パーティションにコピーするには次のコマンドを実行します。

    [ATDE ~]$ sudo umount /dev/sdb1  1
    [ATDE ~]$ sudo mount /dev/sdb1 /media  2
    [ATDE ~]$ sudo cp debian-buster-armhf-aiota6-[version].tar.gz /media  3
    [ATDE ~]$ sudo umount /media  4

    1

    USBメモリ接続時に自動でUSBメモリの第1パーティションがマウントされることがあるため、一旦アンマウントします。

    2

    USBメモリの第1パーティションを/media/ディレクトリにマウントします。

    3

    ルートファイルシステムアーカイブを/media/ディレクトリ以下にコピーします。

    4

    /media/ディレクトリにマウントしたUSBメモリの第1パーティションをアンマウントします。

    USBメモリの第1パーティションにあるDebian GNU/LinuxルートファイルシステムアーカイブをArmadilloにコピーするには次のコマンドを実行します。

    [armadillo ~]# mount /dev/sda1 /media  1
    [armadillo ~]# cp /media/debian-buster-armhf-aiota6-[version].tar.gz .  2
    [armadillo ~]# umount /media  3

    1

    USBメモリの第1パーティションを/media/ディレクトリにマウントします。

    2

    ルートファイルシステムアーカイブをカレントディレクトリ以下にコピーします。

    3

    /media/ディレクトリにマウントしたUSBメモリの第1パーティションをアンマウントします。

  2. ルートファイルシステムをeMMCの第2パーティションに再構築します。

    [armadillo ~]# mount -t ext4 /dev/mmcblk0p2 /mnt  1
    [armadillo ~]# cd /mnt
    [armadillo /mnt]# ls | grep -v -E 'boot|lost\+found' | xargs rm -rf  2
    [armadillo /mnt]# cd -
    [armadillo ~]# tar zxf debian-buster-armhf-aiota6-[version].tar.gz -C /mnt  3
    [armadillo ~]# umount /mnt  4

    1

    eMMCの第2パーティションを/mnt/ディレクトリにマウントします。

    2

    eMMCの第2パーティションのboot、lost+foundディレクトリ以外のファイル・ディレクトリを削除します。

    3

    ルートファイルシステムアーカイブを/mnt/ディレクトリに展開します。

    4

    /mnt/ディレクトリにマウントしたeMMCの第2パーティションをアンマウントします。