ブログ

Armadillo-IoT(G3L/G3)/X1:USBメモリでのアップデート方法

at_kazutaka.bito
2018年7月4日 14時58分

Armadillo-IoT(G3L/G3)/X1で、USBメモリでのアップデート方法です。
(下記の手順では、Armadillo-IoT(G3L)で説明しています。)

注意)node-eyeを使用している場合、ここで紹介するboot.scrを変更する方法は、使用できません。

USBメモリで起動可能にする

予め、
Howto : Armadillo-X1,Armadillo-IoT G3/G3LでUSBストレージ内のLinuxカーネルを起動する方法

 U-Bootコマンドのテキストファイル(boot.txt)作成
 boot.scrの生成
 boot.scrの配置
の手順で、USBメモリのイメージで起動するboot.scrをArmadilloに書き込んでおきます。

アップデート用USBメモリの作成

1.USBメモリにルートファイルシステムを構築

Armadillo-IoT ゲートウェイ G3L製品マニュアル
第15章 SDブートの活用


 15.3. LinuxカーネルイメージとDTBの配置
までの手順で「USBメモリ」(※)にブートディスクを作成します。
※)手順内の"SDカード"等は、USBメモリと読み替える必要はありますが、コマンドは同じです。

2.USBメモリにusbboot_enable(※)を追加

※)手順1のboot.scrは、usbboot_enableファイルを見つけるとUSBブートするため。

手順2.1のUSBメモリをArmadilloに挿入します。
sda: sda1 sda2
という行が含まれるログが見えます。

下記のコマンドを実行します。

root@armadillo:~# mount /dev/sda1 /mnt
root@armadillo:~# touch /mnt/usbboot_enable
root@armadillo:~# sync
root@armadillo:~# umount /mnt

3.アップデート用イメージファイルとスクリプトの追加

ここでは、アップデート用イメージファイルを
 ブートローダ:u-boot.bin
 カーネル:uImage
 DTB:armadillo_iotg_g3l.dtb
 ルートファイルシステム:debian-jessie-armhf.tar.gz
 ブートスクリプト(手順1のもの):boot.scr
とします。

root@armadillo:~# mkdir /images

を実行して、/imagesディレクトリを作成して、上記のアップデート用イメージファイルを/imagesに置きます。

イメージアップデートのスクリプト
/images/install.sh
を下記のような内容で作成します。

/images/install.sh

#!/bin/sh

echo 1 > /sys/class/leds/led3/brightness

# 1. Bootloader
dd if=/images/u-boot.bin of=/dev/mtdblock0
sync

# 2. Kernel
mount -t vfat /dev/mmcblk2p1 /mnt
cp /images/uImage /mnt/uImage
umount /mnt

# 3. DTB
mount -t vfat /dev/mmcblk2p1 /mnt
cp /images/armadillo*.dtb /mnt/
umount /mnt

# 4. Debian
mount -t ext4 /dev/mmcblk2p2 /mnt
rm -rf /mnt/*
tar zxf /images/debian-jessie-armhf.tar.gz -C /mnt
umount /mnt

# 5. boot.scr
mount -t vfat /dev/mmcblk2p1 /mnt
cp /images/boot.scr /mnt/
umount /mnt

echo 0 > /sys/class/leds/led3/brightness
root@armadillo:~# chmod +x /images/install.sh

を実行して、install.shに実行権限を付けます。

4.ブート時にインストールスクリプトが実行されるよう設定

/etc/rc.local
の末尾、exit 0の前に

sh /images/install.sh
poweroff

の2行を追加します。

以上で、アップデートディスクの作成は完了です。

USBメモリをArmadilloに挿入して電源をONにしてください。

/images/install.sh
内の
echo 1 > /sys/class/leds/led3/brightness
により、アップデート開始時にLED3が点灯します。
(LED3が点灯するまで30秒くらいかかります。)

echo 0 > /sys/class/leds/led3/brightness
により、アップデート終了時にLED3が消灯します。
(LED3が消灯するまで30秒くらいかかります。)

LED4も消灯しましたら、Armadilloの電源をOFFにしてください。
(LED4が消灯するまで30秒くらいかかります。)

USBメモリを抜いて、電源をONすると、アップデートされたイメージで起動します。