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

本章では、Armadillo-IoT G3の内蔵ストレージ(eMMC及びQSPIフラッシュメモリ)に書き込まれているイメージファイルを書き換える手順について説明します。

本章で使用するブートローダーイメージファイルなどは、評価セット付属の DVD に収録されています。最新版のファイルは、"Armadillo サイト"でダウンロードすることができます。新機能の追加や不具合の修正などが行われているため、DVD に収録されているものよりも新しいバージョンがリリースされているかを確認して、最新バージョンを利用することを推奨します。

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

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

[警告]

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

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

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

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

ファイルファイル名
インストールディスクイメージinstall_disk_sd_[version].img

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

  1. 512 MB以上のSDカードを用意してください。

  2. ATDE に SD カードを接続します。詳しくは「取り外し可能デバイスの使用」を参照してください。

  3. SD カードがマウントされている場合、アンマウントします。

    [PC ~]$ 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)
    [PC ~]$ sudo umount /dev/sdb1
  4. SD カードにインストールディスクイメージを書き込みます。

    [PC ~]$ sudo dd if=install_disk_sd_[version].img of=/dev/sdb bs=4M
    94+1 レコード入力
    94+1 レコード出力
    397410304 バイト (397 MB) コピーされました、 45.8441 秒、 8.7 MB/秒

11.1.2. インストールの実行

  1. 電源が切断されていることを確認します。接続されていた場合は、電源を切断してください。

  2. USBシリアル変換アダプタのスライドスイッチを確認します。スライドスイッチが図4.8「スライドスイッチの設定」の 2 側に設定されている事を確認してください。

  3. インストールディスクを使用してSDブートを行います。SDスロット(CON4)にインストールディスクを接続し、JP1をショートに設定してください。

  4. Armadillo に電源を投入します。Armadilloが起動するとインストールが始まり、自動的にeMMCとQSPIが書き換えられます。

    U-Boot 2014.04-at1 (Mar 22 2016 - 16:52:45)
    
    CPU:   Freescale i.MX7D rev1.1 at 792 MHz
    CPU:   Temperature: can't get valid data!
    Reset cause: POR
    I2C:   ready
    DRAM:  512 MiB
    MMC:   FSL_SDHC: 0, FSL_SDHC: 1
    *** Warning - bad CRC, using default environment
    
    In:    serial
    Out:   serial
    Err:   serial
    Found PFUZE300! deviceid 0x30, revid 0x11
    mmc0 is current device
    Board Type: Armadillo-IoT G3(0a000000)
    Revison: 0001
    S/N: 28
    DRAM: 00001d05
    XTAL: 00
    Net:   FEC0
    Normal Boot
    : (省略)
    *+*+* Recovery Start!! *+*+*
  5. 以下のようにメッセージが表示され、自動的に終了するとインストール完了です。

    *+*+* Recovery Completed!! *+*+*
    
    System is going down for system reboot now.
    
    Starting local stop scripts.
    Syncing all filesystems: done
    Unmounting all filesystems: done
    The system is going down NOW!
    Sent SIGTERM to all processes
    Sent SIGKILL to all processes
    Requesting system halt
    reboot: System halted
    

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

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

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

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

名称

ファイル名

ストレージ

デバイスファイル

SPIヘッダー

spi-header-aiotg-g3-[version].bin

QSPIフラッシュメモリ

/dev/mtdblock0

ブートローダーイメージ

loader-armadillo-iotg-g3-[version].bin

/dev/mtdblock0

Linuxカーネルイメージ

uImage-x1-[version]

eMMC

/dev/mmcblk2p1

Device Tree Blob

armadillo_iotg_g3-[version].dtb

/dev/mmcblk2p1

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

debian-jessie-armhf_aiotg3_[version].tar.gz

/dev/mmcblk2p2


11.2.1. SPIヘッダーの書き換え

SPIヘッダーの書き換え方法を次に示します。

[armadillo ~]# dd if=spi-header-aiotg-g3-[version].bin of=/dev/mtdblock0 1
1+0 records in
1+0 records out
512 bytes (512 B) copied, 0.918204 s, 0.6 kB/s

1

MTDのブロックデバイスにSPIヘッダーを書き込みます。

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

ブートローダーイメージの書き換え方法を次に示します。MTDのブロックデバイスに直接イメージファイルを書き込むことで行います。

[armadillo ~]# dd if=loader-armadillo-iotg-g3-[version].bin of=/dev/mtdblock0 bs=1k seek=1 1
282+1 records in
282+1 records out
288816 bytes (289 kB) copied, 5.4582 s, 52.9 kB/s

1

MTDのブロックデバイスの先頭から1KBシークした位置にブートローダーイメージを書き込みます。

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

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

[armadillo ~]# mount -t vfat /dev/mmcblk2p1 /mnt  1
[armadillo ~]# cp uImage-x1-[version] /mnt/uImage  2
[armadillo ~]# umount /mnt  3

1

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

2

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

3

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

11.2.4. DTBの書き換え

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

[armadillo ~]# mount -t vfat /dev/mmcblk2p1 /mnt  1
[armadillo ~]# cp armadillo_iotg_g3-[version].dtb /mnt/armadillo_iotg_g3.dtb  2
[armadillo ~]# umount /mnt  3

1

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

2

DTBを/mnt/ディレクトリにコピーします。

3

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

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

eMMC上のルートファイルシステムを書き換える手順を次に示します。

手順11.1 eMMC上のルートファイルシステムを書き換える

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

  2. Debian GNU/Linuxルートファイルシステムアーカイブを準備しておきます。

    [armadillo ~]# ls
    debian-jessie-armhf_aiotg-g3_[version].tar.gz
  3. ルートファイルシステムをeMMCの第2パーティションに再構築します。

    [armadillo ~]# mount -t ext3 /dev/mmcblk2p2 /mnt  1
    [armadillo ~]# rm -rf /mnt/*  2
    [armadillo ~]# tar zxf debian-jessie-armhf_aiotg-g3_[version].tar.gz -C /mnt  3
    [armadillo ~]# umount /mnt  4

    1

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

    2

    /mnt/以下のファイルを全て削除します。

    3

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

    4

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