第11章 リカバリ手順

本章では、Armadillo-EVA 1500に搭載された内蔵ストレージ(eMMCおよびSPIフラッシュメモリ)の内容を工場出荷状態に戻す(リカバリする)方法を示します。本章に示す手順を実行するためには、容量が2GByte以上のSDカードが必要です。

11.1. パーティション構成

Armadillo-EVA 1500の内蔵ストレージのパーティション構成を示します。eMMCのパーティションについては「eMMCのパーティション構成」を、SPIフラッシュメモリのパーティションについては「SPI フラッシュメモリのパーティション構成」を参照してください。

11.1.1. eMMCのパーティション構成

工場出荷状態のeMMCのパーティション構成を次に示します。

表11.1 eMMCのパーティション構成

デバイスファイル名サイズパーティションタイプ
/dev/mmcblk0p1約5GByte83 (Linux)
/dev/mmcblk0p22GByte83 (Linux)

JEDEC規格の eMMC 4.3以降では、eMMCデバイスに最大2つのブートパーティションを持つことが出来ます。Armadillo-EVA 1500に搭載しているeMMCには、2つのブートパーティションが用意されています。

表11.2 eMMCのブートパーティション

デバイスファイル名サイズ
/dev/mmcblk0boot04MByte
/dev/mmcblk0boot14MByte

表11.1「eMMCのパーティション構成」および表11.2「eMMCのブートパーティション」に示す通り、eMMCを4つの領域に分けて使用しています。それぞれの工場出荷状態での用途を表11.3「eMMC 各領域の用途」に示します。 Armadillo-EVA 1500のプロセッサである R8A77430HA01BG は eMMC からの起動をサポートしないため、ブートパーティションは使用していません。

表11.3 eMMC 各領域の用途

パーティション用途

パーティション1

(/dev/mmcblk0p1)

Debian GNU/Linuxがインストールされています。/boot/直下にはカーネルイメージが格納されています。ext3にフォーマットされています。

パーティション2

(/dev/mmcblk0p2)

使用していません。ストレージ用途としてなど、自由に使用することができます。ext3にフォーマットされています。

ブートパーティション1

(/dev/mmcblk0boot0)

使用していません。

ブートパーティション2

(/dev/mmcblk0boot1)

使用していません。

11.1.2. SPI フラッシュメモリのパーティション構成

SPIフラッシュメモリはeMMCとは異なり、自身でパーティションテーブルを保持していません。SPIフラッシュメモリを使用するソフトウェア(IPL、Hermit-At および Linux カーネル)がそれぞれが同じパーティションテーブルを保持することにより、一意的に扱うことができるようになっています。

工場出荷状態のSPI フラッシュメモリのパーティション構成を次に示します。

表11.4 SPI フラッシュメモリのパーティション構成

パーティション名アドレスサイズ
ipl

0x00000000

|

0x0000FFFF

64kByte
bootloader

0x00010000

|

0x0008FFFF

512kByte
fdt

0x00090000

|

0x000CFFFF

256kByte
firmware

0x000D0000

|

0x007FFFFF

7.1875MByte

表11.4「SPI フラッシュメモリのパーティション構成」に示す通り、SPIフラッシュメモリを4つの領域に分けて使用しています。それぞれの工場出荷状態での用途を次に示します。

表11.5 SPIフラッシュメモリ 各領域の用途

パーティション名用途

ipl

IPL ブートローダーイメージがインストールされています。

bootloader

Hermit-At ブートローダーイメージがインストールされています。

fdt

Device Tree Blobがインストールされています。Linuxカーネルに渡すためのArmadillo-EVA 1500のデバイス情報を持っています。

firmware

有償ミドルウェアなどのファームウェアがインストールされています[a]

[a] 2014年7月現在では、ファームウェアを使用することはできません。


11.2. 内蔵ストレージ全体をリカバリする

eMMCとSPI フラッシュメモリをリカバリする方法を示します。

11.2.1. リカバリディスクの作成

作業用PCで、リカバリを行うためのSDカードを作成します。このSDカードをリカバリディスクと呼びます。

[ティップ]

リカバリディスク作成時のコマンドは、ATDEで実行した場合の例です。Linuxが起動しているArmadillo-EVA 1500でも同様の手順でリカバリディスクを作成することができますがデバイスファイル名など一部異なるため、適宜読み替えてください。

11.2.1.1. リカバリディスクの作成に必要なファイルの取得

表11.6「リカバリディスクの作成に必要なファイル」に示す、リカバリディスクの作成に必要なファイルを取得します。

表11.6 リカバリディスクの作成に必要なファイル

名称ファイル名説明
リカバリシステム本体recovery-system_ae1500_[version].tar.gzリカバリを実行するプログラムなどが格納されています
リカバリシステム用イメージアーカイブrecovery-image_ae1500_[version].tar.gz内蔵ストレージに書き込むためのイメージファイルなどが格納されています
Firmwareパーティション用イメージファイルsquashfs-ae1500-firmware-[version].imgSPIフラッシュメモリのfirmwareパーティションに書き込むためのイメージファイルです

リカバリシステム本体とリカバリシステム用イメージアーカイブは、Armadilloサイトまたは評価セット付属のDVD-ROMから取得可能です。Firmwareパーティション用イメージファイルは、アットマークテクノ ユーザーズサイトから取得可能です。

[ティップ]

アットマークテクノ ユーザーズサイトからファイルを取得するためには、製品本体をご購入の上で「アットマークテクノ ユーザーズサイト」から「購入製品登録」を行う必要があります。

11.2.1.2. パーティションの作成

SDカードに2つのプライマリパーティションを作成します。

作業用PCにSDカードを接続して図11.1「パーティション作成手順」のようにパーティションを作成します。

[PC ~]# fdisk /dev/sdb  1

Command (m for help): n  2
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-4009983, default 2048): 3
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-4009983, default 4009983): +1G  4

Command (m for help): n  5
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): p
Partition number (1-4, default 2): 2
First sector (2099200-4009983, default 2099200):  6
Using default value 2099200
Last sector, +sectors or +size{K,M,G} (2099200-4009983, default 4009983):  7
Using default value 4009983

Command (m for help): w  8
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
[PC ~]#

1

SDカードのパーティショニングを開始します。USBメモリなどを接続している場合は、SDカードのデバイスファイルがsdcやsddなど本実行例と異なる場合があります。

2

新しくプライマリパーティション1を作成します。

3

開始シリンダにはデフォルト値(先頭シリンダ)を使用するので、そのまま改行を入力してください。

4

最終シリンダは 1GByte分を指定します。

5

新しくプライマリパーティション2を作成します。

6

開始シリンダにはデフォルト値(プライマリパーティション1直後のシリンダ)を使用するので、そのまま改行を入力してください。

7

最終シリンダにはデフォルト値(末尾シリンダ)を使用するので、そのまま改行を入力してください。

8

変更をSDカードに書き込みます。

図11.1 パーティション作成手順


パーティションが作成されていることを確認します。図11.2「パーティション確認手順」のように2つのパーティションが作成されていることを確認してください。

[PC ~]# fdisk -l /dev/sdb

Disk /dev/sdb: 2053 MB, 2053111808 bytes
64 heads, 62 sectors/track, 1010 cylinders, total 4009984 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
Disk identifier: 0x00000000

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     2099199     1048576   83  Linux
/dev/sdb2         2099200     4009983      955392   83  Linux

図11.2 パーティション確認手順


11.2.1.3. ファイルシステムの構築

「パーティションの作成」で作成したそれぞれのパーティションにファイルシステムを構築します。

作業用PCにSDカードを接続したまま、図11.3「ファイルシステム作成手順」のようにファイルシステムを作成します。

[PC ~]# mkfs.ext2 /dev/sdb1 1
mke2fs 1.42.5 (29-Jul-2012)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
65536 inodes, 262144 blocks
13107 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=268435456
8 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376

Allocating group tables: done
Writing inode tables: done
Writing superblocks and filesystem accounting information: done

[PC ~]# mkfs.ext3 /dev/sdb2 2
mke2fs 1.42.5 (29-Jul-2012)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
59776 inodes, 238848 blocks
11942 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=247463936
8 block groups
32768 blocks per group, 32768 fragments per group
7472 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376

Allocating group tables: done
Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done
[PC ~]#

1

プライマリパーティション1にext2ファイルシステムを構築します。

2

プライマリパーティション2にext3ファイルシステムを構築します。

図11.3 ファイルシステム作成手順


11.2.1.4. リカバリイメージの展開

「リカバリディスクの作成に必要なファイルの取得」で取得したリカバリシステム用イメージアーカイブとリカバリシステム本体を、「ファイルシステムの構築」でファイルシステムを構築したSDカードに展開します。

作業用PCにSDカードを接続したまま、図11.4「ファイル展開手順」のようにコマンドを実行します。次のコマンド例では、各ファイルがホームディレクトリ以下にあることを想定しています。

[PC ~]# ls
recovery-image_ae1500_[version].tar.gz  recovery-system_ae1500_[version].tar.gz
[PC ~]# mount -t ext2 /dev/sdb1 /mnt
[PC ~]# cd /mnt
[PC /mnt]# tar zxf ~/recovery-image_ae1500_[version].tar.gz
[PC /mnt]# cd
[PC ~]# umount /mnt

[PC ~]# mount -t ext3 /dev/sdb2 /mnt
[PC ~]# cd /mnt
[PC /mnt]# tar zxf ~/recovery-system_ae1500_[version].tar.gz
[PC /mnt]# cd
[PC ~]# umount /mnt
[PC ~]#

図11.4 ファイル展開手順


11.2.1.5. Firmwareパーティション用イメージファイルの配置

「リカバリディスクの作成に必要なファイルの取得」で取得したFirmwareパーティション用イメージファイルを、「リカバリイメージの展開」でリカバリイメージを展開したSDカードのパーティション1に配置し、設定ファイル(recovery.conf)更新用のシェルスクリプト(update_firmware.sh)を実行します。

作業用PCにSDカードを接続したまま、図11.5「Firmwareイメージファイルの配置」のようにコマンドを実行します。次のコマンド例では、Firmwareパーティション用イメージファイルがホームディレクトリ以下にあることを想定しています。

[PC ~]# ls
squashfs-ae1500-firmware-[version].img
[PC ~]# mount -t ext2 /dev/sdb1 /mnt
[PC ~]# cd /mnt
[PC /mnt]# cp ~/squashfs-ae1500-firmware-[version].img .
[PC /mnt]# ./update_conf_firmware.sh squashfs-ae1500-firmware-[version].img
[PC ~]# umount /mnt
[PC ~]#

図11.5 Firmwareイメージファイルの配置


11.2.2. リカバリを実行する

[警告]

以下に示す手順を実行すると、Armadillo-EVA 1500に搭載された内蔵ストレージ(eMMC および SPI フラッシュメモリ)の全ての内容が工場出荷状態になります。一部のパーティションのみを工場出荷状態に戻したい場合は、「eMMCのDebian GNU/Linux ルートファイルシステムをリカバリする」または、「SPI フラッシュメモリの特定パーティションをリカバリする」を参照してください。

「リカバリディスクの作成」で作成したリカバリディスクを使用して、リカバリを実行します。Armadillo-EVA 1500に電源を投入する前に次に示す準備を行います。

  • 機能選択スイッチのSW1.7、SW2.7およびSW2.8をOFFに、その他を全てONに設定します。

  • SD インターフェース(CON6)にリカバリディスクを接続します。

準備の完了後、SW3を押しながら電源を投入するとリカバリが開始されます。リカバリの進捗具合は、LEDの点灯パターンで確認できます。

表11.7 リカバリ進捗とLEDの対応

LED4LED5LED6LED7リカバリ進捗
点滅消灯消灯消灯eMMCをフォーマット中
点滅点灯点灯点灯SPI フラッシュメモリにシステムを構築中
点灯点滅点灯点灯eMMCのパーティション1にシステムを構築中
点灯点灯点灯点灯リカバリが正常に完了
点滅点滅点滅点滅リカバリが異常終了

全てのLEDが点灯するとリカバリは完了です。全てのLEDが点滅した場合、エラーが発生したことを示しています。手順を見直して再度リカバリを実行してください。リカバリ後、eMMCから起動するには、機能選択スイッチのHermit-At 起動デバイス設定(SW2.7)をONに設定し、SDカードを抜いた後電源を投入してください。

11.3. eMMCのDebian GNU/Linux ルートファイルシステムをリカバリする

eMMCのパーティション1にインストールされているDebian GNU/Linux ルートファイルシステムをリカバリする方法を紹介します。事前に10章SDブートの活用を参照して、Armadillo-EVA 1500がSDブートしている必要があります。

11.3.1. Debian GNU/Linuxのリカバリに必要なファイルの取得

表11.8「Debian GNU/Linuxのリカバリに必要なファイル」に示す、Debian GNU/Linuxのリカバリに必要なファイルを取得します。これらファイルはArmadilloサイト(http://armadillo.atmark-techno.com)または、評価セット付属のDVD-ROMから取得可能です。

表11.8 Debian GNU/Linuxのリカバリに必要なファイル

ファイル説明
debian-wheezy-armhf_ae1500_[version].tar.gzDebian GNU/Linux 7のルートファイルシステムアーカイブ
linux-ae1500-[version].binLinuxカーネルイメージファイル

11.3.2. Debian GNU/Linuxのリカバリを実行する

図11.6「Debian GNU/Linuxのリカバリ手順」のようにDebian GNU/Linuxのリカバリを実行します。「Debian GNU/Linuxのリカバリに必要なファイルの取得」で取得したファイルはホームディレクトリ以下にあることを想定しています。

[armadillo ~]# ls
debian-wheezy-armhf_ae1500_[version].tar.gz  linux-ae1500-[version].bin
[armadillo ~]# mkfs.ext3 /dev/mmcblk0p1  1
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
318864 inodes, 1274944 blocks
63747 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=1308622848
39 block groups
32768 blocks per group, 32768 fragments per group
8176 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736

Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 24 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
[armadillo ~]# mount -t ext3 /dev/mmcblk0p1 /mnt  2
[armadillo ~]# tar zxf ~/debian-wheezy-armhf_ae1500_[version].tar.gz -C /mnt  3
[armadillo ~]# cp ~/linux-ae1500-[version].bin /mnt/boot/Image.bin  4
[armadillo ~]# umount /mnt
[armadillo ~]# 

1

ext3ファイルシステムを構築します。

2

マウントします。

3

ルートファイルシステムアーカイブを展開します。

4

カーネルイメージファイルを/mnt/boot/以下にコピーします。ファイル名は"Image.bin"または"linux.bin"にリネームする必要があります。

図11.6 Debian GNU/Linuxのリカバリ手順


11.4. SPI フラッシュメモリの特定パーティションをリカバリする

SPI フラッシュメモリの特定パーティションのみをリカバリする方法を紹介します。事前に10章SDブートの活用を参照して、Armadillo-EVA 1500がSDブートしている必要があります。

11.4.1. SPI フラッシュメモリのリカバリに必要なファイルの取得

SPI フラッシュメモリのリカバリに必要なファイルを表11.9「SPI フラッシュメモリのリカバリに必要なファイル」に示します。「SPI フラッシュメモリのパーティション構成」を参照して、リカバリするパーティション用のファイルを取得してください。

表11.9 SPI フラッシュメモリのリカバリに必要なファイル

パーテシション名ファイル説明
bootloaderloader-armadilloeva1500-[version].binHemrit-Atブートローダーイメージファイル
fdtr8a7791-armadilloeva1500-[version].dtb.gzDevice Tree Blob
firmwaresquashfs-ae1500-firmware-[version].imgFirmware パーティション用イメージファイル

Hemrit-AtブートローダーイメージファイルとDevice Tree Blobは、Armadilloサイトまたは評価セット付属のDVD-ROMから取得可能です。Firmwareパーティション用イメージファイルは、アットマークテクノ ユーザーズサイトから取得可能です。

[ティップ]

アットマークテクノ ユーザーズサイトからファイルを取得するためには、製品本体をご購入の上で「アットマークテクノ ユーザーズサイト」から「購入製品登録」を行う必要があります。

11.4.2. ブートローダーのリカバリを実行する

SPIフラッシュのいくつかのパーティションは、デフォルト状態で書き込みが制限されています。このパーティションへの書き込みを行う場合は、事前に書き込み制限を外す必要があります。

表11.10 パーティションのデフォルト状態での書き込み制限の有無と対応するMTDノード

パーティション書き込み制限MTDクラスディレクトリMTDブロックデバイスファイル

bootloader

あり

/sys/class/mtd/mtd1

/dev/mtdblock1

fdt

なし

/sys/class/mtd/mtd2

/dev/mtdblock2

firmware

あり

/sys/class/mtd/mtd3

/dev/mtdblock3


次の例では、「SPI フラッシュメモリのリカバリに必要なファイルの取得」で取得したHemrit-Atブートローダーイメージファイルをカレントディレクトリに以下に配置し、bootloaderパーティションをリカバリしています。

[armadillo ~]# ls
loader-armadilloeva1500-[version].bin
[armadillo ~]# echo 0 > /sys/class/mtd/mtd1/ro  1
[armadillo ~]# cat loader-armadilloeva1500-[version].bin > /dev/mtdblock1  2
[armadillo ~]# sync
[armadillo ~]# 

1

MTDクラスディレクトリ以下にあるroに0を書き込み、書き込み制限を外します。書き込み制限の無いfdtパーティションをリカバリする場合は実行する必要はありません。

2

MTDブロックデバイスファイルに該当パーティション用のファイルを書き込みます。

図11.7 SPIフラッシュメモリのリカバリ手順