| | 本章では、Armadillo-IoT ゲートウェイ A6の内蔵ストレージ(eMMC)に書き込まれているイメージファイルを書き換える手順について説明します。 本章で使用するブートローダーイメージファイルなどは、"Armadillo サイト"でダウンロードすることができます。新機能の追加や不具合の修正などが行われているため、最新バージョンを利用することを推奨します。 インストールディスクを使用すると、内蔵ストレージ上のすべてのイメージをまとめて書き換えることができます。 Armadilloがソフトウェアの問題により起動しなくなった場合の復旧方法としてもご使用頂けます。 | |
---|
内蔵ストレージに保存されている、すべてのイメージファイルが上書きされるため、既に保存されているデータやアプリケーションなどは削除されます。 特定のイメージのみ書き換えたい場合には「特定のイメージファイルだけを書き換える」を参照してください。 |
インストールディスクはATDEで作成します。インストールディスクの作成には、 microSD カードまたは USB メモリに書き込むためのインストールディスクイメージが必要です。 表12.1 インストールディスク作成に使用するファイル ファイル | ファイル名 |
---|
インストールディスクイメージ | install-disk-buster-aiota6-[version].img |
インストールディスクイメージは最新版をダウンロードするほか、インストールディスクイメージ作成ツールを使用し、「インストールディスクイメージの作成」の手順で作成することも可能です。 最新版のインストールディスクイメージ及びインストールディスクイメージ作成ツールは、Armadilloサイトでダウンロードを行ってください。 12.1.1. インストールディスクイメージの作成ここでは、インストールディスクイメージ作成ツールを使用し、インストールディスクイメージを作成する方法を示します。
インストールディスクイメージ作成ツールはArmadilloサイトからダウンロードすることが可能です。 インストールディスクイメージはATDEで作成します。以下の手順に従いインストールディスクイメージ作成ツールを実行してください。
インストールディスクイメージ作成ツールを展開します。
[ATDE ~]$ tar xf make-install-disk-image-[version].tar.gz
[ATDE ~]$ cd make-install-disk-image-[version]
[ATDE ~/make-install-disk-image-[version]]$
ツールの使用方法を確認します。
Install Disk Image Build Script v1.2.0
Usage:
sudo ./build.sh BOARD UBOOT KERNEL DTB USERLAND [SD_KERNEL SD_DTB USER_PART_SIZE]
BOARD: a640/a610/aiota6
UBOOT: u-boot image
KERNEL: uImage
DTB: Device Tree Blob image
USERLAND: Debian userland archive
SD_KERNEL: uImage for install disk(optional)
SD_DTB: Device Tree Blob image for install disk(optional)
USER_PART_SIZE: eMMC(/dev/mmcblk0p4) user partition size(optional) 1 - 1400 (MB)
Example:
incase of using default images as:
sudo ./build.sh a640 u-boot-a600-v2018.03-at4.imx uImage-a600-v4.14-at11 armadillo-640-v4.14-at11.dtb debian-stretch-armhf-a600-20190326.tar.gz
incase of using user-customized images as(that images use uSDHC2 via Armadillo-610 CON2 Ext-Interface):
sudo ./build.sh a610 u-boot.imx uImage a610.dtb debian-stretch-armhf-a600-20200214.tar.gz core/uImage core/a610.dtb
ツールで指定する引数と、インストールディスクイメージの作成に必要なファイルの対応を次に示します。 表12.2 イメージファイルと引数の対応 引数 | 説明 | ファイル名称 |
---|
BOARD | aiota6 を指定 | - | UBOOT | ブートローダーイメージ | u-boot-aiotg-a6-v2018.03-at[version].imx | KERNEL | Linuxカーネルイメージ | uImage-aiotg-a6-v4.14-at_[version]_ | DTB | Device Tree Blob | armadillo-iot-a6-v4.14-at_[version]_.dtb | USERLAND | Debian GNU/Linuxルートファイルシステム | debian-buster-armhf-aiota6-[version].tar.gz |
これらのファイルは、Armadillo サイトでダウンロードすることができるほか、11章ビルド手順でビルドしたファイルを使用することも可能です。
使用するイメージを指定し、インストールディスクイメージを作成します。
[ATDE ~/make-install-disk-image-[version]]$ sudo ./build.sh aiota6 u-boot-aiotg-a6-v2018.03-at[version].imx uImage-aiotg-a6-v4.14-at[version] armadillo-iot-a6-v4.14-at[version].dtb debian-buster-armhf-aiota6-[version].tar.gz
0+0 レコード入力
0+0 レコード出力
0 bytes copied, 3.0266e-05 s, 0.0 kB/s
Checking that no-one is using this disk right now ... OK
Disk /dev/loop0: 308 MiB, 322961408 bytes, 630784 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
>>> Created a new DOS disklabel with disk identifier 0x4ce2d8de.
/dev/loop0p1: Created a new partition 1 of type 'W95 FAT32' and of size 2 MiB.
/dev/loop0p2: Created a new partition 2 of type 'Linux' and of size 305 MiB.
/dev/loop0p3: Done.
New situation:
Disklabel type: dos
Disk identifier: 0x4ce2d8de
Device Boot Start End Sectors Size Id Type
/dev/loop0p1 2048 6143 4096 2M b W95 FAT32
/dev/loop0p2 6144 630783 624640 305M 83 Linux
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
mkfs.fat 4.1 (2017-01-24)
mke2fs 1.44.5 (15-Dec-2018)
Discarding device blocks: done
Creating filesystem with 312320 1k blocks and 78312 inodes
Filesystem UUID: 637c4b7a-e443-444e-aec8-0942f49e70a7
Superblock backups stored on blocks:
8193, 24577, 40961, 57345, 73729, 204801, 221185
Allocating group tables: done
Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done
291+0 レコード入力
291+0 レコード出力
297984 bytes (298 kB, 291 KiB) copied, 0.0213832 s, 13.9 MB/s
ツールの実行が終了すると、インストールディスクイメージが作成されていることを確認できます。
[ATDE ~/make-install-disk-image-[version]]$ ls install-disk-sd-*.img
install-disk-sd-aiota6-20220523.img
-
512 MB 以上の microSD カードまたはUSB メモリを用意してください。
-
ATDE に microSD カードまたは USB メモリを接続します。詳しくは「取り外し可能デバイスの使用」を参照してください。
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
microSDカードまたは USB メモリにインストールディスクイメージを書き込みます。
[ATDE ~]$ sudo dd if=install-disk-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.3. インストールの実行(microSD カード)-
Armadilloの電源が切断されていることを確認します。接続されていた場合は、電源を切断してください。
-
インストールディスクを microSD ユニットに装着します。装着方法は「microSDカードの装着」を参照してください。
-
サブユニット SW1(ユーザースイッチ)のスライドスイッチが「スライドスイッチの設定について」の microSD 側に設定されている事を確認してください。
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!! *+*+*
以下のようにメッセージが表示されるとインストール完了です。電源を切断してください。
*+*+* Install Completed!! *+*+*
12.1.4. インストールの実行(USB メモリ)-
Armadilloの電源が切断されていることを確認します。接続されていた場合は、電源を切断してください。
-
インストールディスクを書き込んだ USB メモリを、 Armadillo の USB インタフェースに差し込んでください。
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
=>
次のように"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!! *+*+*
以下のようにメッセージが表示されるとインストール完了です。電源を切断してください。
*+*+* Install Completed!! *+*+*
12.1.5. LED点灯パターンによるインストールの進捗表示LED点灯パターンによって、インストールの進捗状況を確認することができます。 インストールの進捗とLED点灯パターンの関係を次に示します。 表12.3 インストールの進捗とLED点灯パターン 進捗 | ユーザーLED赤 | ユーザーLED緑 |
---|
実行中 | 消灯 | 点滅 | 正常終了 | 点灯 | 点灯 | 異常終了 | 点滅 | 消灯 |
12.2. 特定のイメージファイルだけを書き換えるArmadillo-IoT ゲートウェイ A6が起動した状態であれば、特定のイメージファイルだけを書き換えることができます。 イメージファイルと書き込み先の対応を次に示します。 表12.4 イメージファイルと書き込み先の対応 名称 | ファイル名 | ストレージ | デバイスファイル |
---|
ブートローダーイメージ | u-boot-aiotg-a6-v2018.03-at[version].imx | eMMC | /dev/mmcblk0 | Linuxカーネルイメージ | uImage-aiotg-a6-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 |
ブートローダーイメージの書き換え方法を次に示します。 [armadillo ~]# dd if=u-boot-aiotg-a6-v2018.03-at[version].imx of=/dev/mmcblk0 bs=1k seek=1 conv=fsync
275+0 records in
275+0 records out
281600 bytes (282 kB, 275 KiB) copied, 0.0310393 s, 9.1 MB/s |
MTDのブロックデバイスの先頭からブートローダーイメージを書き込みます。
|
| |
---|
製品アップデートでリリースされた最新のブートローダーイメージに書き換えを行った場合は図10.6「全ての環境変数をデフォルト値に戻す」を参照して環境変数をデフォルト値に戻してください。 新しくリリースされた最新のブートローダーイメージは、環境変数のデフォルト値が更新されることがあります。書き替え前のブートローダーによって生成された環境変数で、最新のブートローダーを動作させると不具合が起こる可能性があります。 |
12.2.2. Linuxカーネルイメージの書き換えLinuxカーネルイメージの書き換え方法を次に示します。 [armadillo ~]# mount /dev/mmcblk0p2 /mnt
[armadillo ~]# cp uImage-aiotg-a6-v4.14-at[version] /mnt/boot/uImage
[armadillo ~]# umount /mnt |
eMMCの第2パーティションを/mnt/ディレクトリにマウントします。
| |
Linuxカーネルイメージを/mnt/boot/ディレクトリにコピーします。
| |
/mnt/ディレクトリにマウントしたeMMCの第2パーティションをアンマウントします。
|
DTBの書き換え方法を次に示します。 [armadillo ~]# mount /dev/mmcblk0p2 /mnt
[armadillo ~]# cp armadillo-iotg-a6-v4.14-at[version].dtb /mnt/boot/a640.dtb
[armadillo ~]# umount /mnt |
eMMCの第2パーティションを/mnt/ディレクトリにマウントします。
| |
DTBをa640.dtbにリネームして/mnt/boot/ディレクトリにコピーします。
| |
/mnt/ディレクトリにマウントしたeMMCの第2パーティションをアンマウントします。
|
eMMC上のルートファイルシステムを書き換えるには、SDブートまたはUSBブートを行う必要があります。ブートディスクの作成方法やSD/USBブートの実行方法ついては16章SDブートの活用 15章USBブートの活用を参照してください。 SD/USBブートしたArmadilloで、eMMC上のルートファイルシステムを書き換える手順を次に示します。
Debian GNU/LinuxルートファイルシステムアーカイブをArmadilloにコピーします。例としてUSBメモリを利用する方法を記載します。
ATDEにあるDebian GNU/LinuxルートファイルシステムアーカイブをUSBメモリの第1パーティションにコピーするには次のコマンドを実行します。 [ATDE ~]$ sudo umount /dev/sdb1
[ATDE ~]$ sudo mount /dev/sdb1 /media
[ATDE ~]$ sudo cp debian-buster-armhf-aiota6-[version].tar.gz /media
[ATDE ~]$ sudo umount /media |
USBメモリ接続時に自動でUSBメモリの第1パーティションがマウントされることがあるため、一旦アンマウントします。
| |
USBメモリの第1パーティションを/media/ディレクトリにマウントします。
| |
ルートファイルシステムアーカイブを/media/ディレクトリ以下にコピーします。
| |
/media/ディレクトリにマウントしたUSBメモリの第1パーティションをアンマウントします。
|
USBメモリの第1パーティションにあるDebian GNU/LinuxルートファイルシステムアーカイブをArmadilloにコピーするには次のコマンドを実行します。 [armadillo ~]# mount /dev/sda1 /media
[armadillo ~]# cp /media/debian-buster-armhf-aiota6-[version].tar.gz .
[armadillo ~]# umount /media |
USBメモリの第1パーティションを/media/ディレクトリにマウントします。
| |
ルートファイルシステムアーカイブをカレントディレクトリ以下にコピーします。
| |
/media/ディレクトリにマウントしたUSBメモリの第1パーティションをアンマウントします。
|
ルートファイルシステムをeMMCの第2パーティションに再構築します。
[armadillo ~]# mount -t ext4 /dev/mmcblk0p2 /mnt
[armadillo ~]# cd /mnt
[armadillo /mnt]# ls | grep -v -E 'boot|lost\+found' | xargs rm -rf
[armadillo /mnt]# cd -
[armadillo ~]# tar zxf debian-buster-armhf-aiota6-[version].tar.gz -C /mnt
[armadillo ~]# umount /mnt |
eMMCの第2パーティションを/mnt/ディレクトリにマウントします。
| |
eMMCの第2パーティションのboot、lost+foundディレクトリ以外のファイル・ディレクトリを削除します。
| |
ルートファイルシステムアーカイブを/mnt/ディレクトリに展開します。
| |
/mnt/ディレクトリにマウントしたeMMCの第2パーティションをアンマウントします。
|
| |
| | | |
| |