第10章 リカバリ手順

本章では、Armadillo-800 EVAに搭載された内蔵ストレージ(eMMC)の内容を工場出荷状態に戻す(リカバリする)方法を示します。本章に示す手順を実行するためには、容量が1GByte以上のSDカードを必要とします。

10.1. パーティション構成

Armadillo-800 EVAの内蔵ストレージのパーティション構成を示します。Armadillo-800 EVAの内蔵ストレージは、PC同様にいくつかのパーティションに分割されています。そのため複数のOSをインストールできるようになっています。

工場出荷状態の内蔵ストレージのパーティション構成を表10.1「内蔵ストレージのパーティション構成」に示します。

表10.1 内蔵ストレージのパーティション構成

デバイスファイル名サイズパーティションタイプ
/dev/mmcblk0p1512MByte0b (Win95 FAT32)
/dev/mmcblk0p2約5GByte83 (Linux)
/dev/mmcblk0p31GByte83 (Linux)
/dev/mmcblk0p41GByte83 (Linux)

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

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

デバイスファイル名サイズ
/dev/mmcblk0boot0約512kByte
/dev/mmcblk0boot1約512kByte

表10.1「内蔵ストレージのパーティション構成」および表10.2「eMMCのブートパーティション」に示す通り、内蔵ストレージを6つの領域に分けて使用しています。それぞれの工場出荷状態での用途を表10.3「内蔵ストレージ各領域の用途」に示します。

表10.3 内蔵ストレージ各領域の用途

パーティション用途

パーティション1

(/dev/mmcblk0p1)

主にAndroidのSDカード領域に使用します。VFATにフォーマットされています。

パーティション2

(/dev/mmcblk0p2)

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

パーティション3

(/dev/mmcblk0p3)

予約領域[a]です。ext3にフォーマットされています。

パーティション4

(/dev/mmcblk0p4)

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

ブートパーティション1

(/dev/mmcblk0boot0)

ブートローダーイメージが格納されています。

ブートパーティション2

(/dev/mmcblk0boot1)

ブートローダーが使用するパラメーターを保存しています。

[a] 今後のアップデートで該当パーティション用のシステムイメージを公開する予定です。


10.2. eMMC全体をリカバリする

eMMC全体をリカバリする方法を示します。

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

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

[ティップ]

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

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

表10.4「リカバリディスクの作成に必要なファイル」に示す、リカバリディスクの作成に必要なファイルを取得します。これらのファイルはアットマークテクノ ユーザーズサイト(https://users.atmark-techno.com)または、付属DVD-ROMから取得可能です。

[ティップ]

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

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

ファイル説明
recovery-image_a800eva_[version].tar.gz eMMCに書き込むためのイメージファイルなどが格納されています
recovery-system_a800eva_[version].tar.gz リカバリを実行するプログラムなどが格納されています

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

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

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

[PC ~]# fdisk /dev/sdb  1
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): o  2
Building a new DOS disklabel with disk identifier 0x65314ac5.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): n  3
Command action
e   extended
p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-1790, default 1):    4
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-1790, default 1790): +512M  5

Command (m for help): n  6
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (243-1790, default 243):    7
Using default value 243
Last cylinder, +cylinders or +size{K,M,G} (243-1790, default 1790):    8
Using default value 1790

Command (m for help): t  9
Partition number (1-4): 1
Hex code (type L to list codes): b
Changed system type of partition 1 to b (W95 FAT32)


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

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

1

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

2

新しくDOSパーティションテーブルを作成します。

3

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

4

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

5

最終シリンダは、512MByte分を指定します。

6

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

7

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

8

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

9

プライマリパーティション1のパーティションタイプをWin95 FAT32(0x0b)に変更します。

10

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

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


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

[PC ~]# fdisk -l /dev/sdb
Disk /dev/sdb: 3983 MB, 3983540224 bytes
106 heads, 41 sectors/track, 1790 cylinders
Units = cylinders of 4346 * 512 = 2225152 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x65314ac5

        Device Boot      Start         End      Blocks   Id  System
/dev/sdb1                    1         242      525845+   b  W95 FAT32
/dev/sdb2                  243        1790     3363804   83  Linux

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


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

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

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

[ティップ]

ファイルシステムの構築にdosfstoolsを使用します。作業用PCにインストールされていない場合は、次のようにインストールを行ってください。

[PC ~]# apt-get update
[PC ~]# apt-get install dosfstools

[PC ~]# mkfs.vfat /dev/sdb1  1
mkfs.vfat 3.0.9 (31 Jan 2010)
[PC ~]# mkfs.ext3 /dev/sdb2  2
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
210496 inodes, 840951 blocks
42047 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=864026624
26 block groups
32768 blocks per group, 32768 fragments per group
8096 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200

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

This filesystem will be automatically checked every 27 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
[PC ~]#

1

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

2

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

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


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

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

作業用PCにSDカードを接続したまま、図10.4「ファイル展開手順」のようにファイルを展開します。以下のコマンド例では、「リカバリディスクの作成に必要なファイルの取得」で取得したファイルはカレントディレクトリ以下にあることを想定しています。

[PC ~]# ls
recovery-image_a800eva_[version].tar.gz  recovery-system_a800eva_[version].tar.gz
[PC ~]# mount -t vfat /dev/sdb1 /mnt
[PC ~]# cd /mnt
[PC /mnt]# tar zxf ~/recovery-image_a800eva_[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_a800eva_[version].tar.gz
[PC /mnt]# cd
[PC ~]# umount /mnt
[PC ~]#

図10.4 ファイル展開手順


10.2.2. リカバリを実行する

[警告]

以下に示す手順を実行すると、Armadillo-800 EVAに搭載されたeMMCの全ての内容が工場出荷状態になります。一部のパーティションのみを工場出荷状態に戻したい場合は、「eMMCの特定ルートファイルシステムをリカバリする」または、「eMMCのブートローダーをリカバリする」を参照してください。

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

  • ディップスイッチのSW1.2とSW1.7をONに、その他を全てOFFに設定します。

  • SDスロット1(CON7)にリカバリディスクを接続します。

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

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

LED3LED4LED5LED6リカバリ進捗
点滅消灯消灯消灯eMMCのユーザーパーティションをフォーマット中
消灯点滅消灯消灯eMMCのブートパーティションをフォーマット中
点滅点灯点灯点灯eMMCのパーティション1にシステムを構築中
点灯点滅点灯点灯eMMCのパーティション2にシステムを構築中
点灯点灯点滅点灯eMMCのパーティション3にシステムを構築中
点灯点灯点灯点滅eMMCのパーティション4にシステムを構築中
点灯点灯点灯点灯リカバリが正常に完了
点滅点滅点滅点滅リカバリが異常終了

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

10.3. eMMCの特定ルートファイルシステムをリカバリする

eMMCの特定ルートファイルシステムのみをリカバリする方法を紹介します。表10.6「リカバリ対象のルートファイルシステム」をリカバリの対象とします。

表10.6 リカバリ対象のルートファイルシステム

ルートファイルシステムパーティション番号ファイルシステム
Debian GNU/Linux2ext3
Android4ext3

事前に9章SDブートの活用を参照して、Armadillo-800 EVAがSDブートしている必要があります。

10.3.1. Debian GNU/Linuxをリカバリする

eMMCのパーティション2に、Debian GNU/Linuxをリカバリする方法を示します。

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

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

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

ファイル説明
debian-squeeze_a800eva_[version].tar.gzDebian GNU/Linux 6.0のルートファイルシステムアーカイブ
linux-a800eva-[version].binカーネルイメージファイル

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

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

[armadillo ~]# ls
debian-squeeze_a800eva_[version].tar.gz  linux-a800eva-[version].bin
[armadillo ~]# mkfs.ext3 /dev/mmcblk0p2  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/mmcblk0p2 /mnt  2
[armadillo ~]# tar zxf ~/debian-squeeze_a800eva_[version].tar.gz -C /mnt  3
[armadillo ~]# cp ~/linux-a800eva-[version].bin /mnt/boot/Image.bin  4
[armadillo ~]# umount /mnt
[armadillo ~]# 

1

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

2

マウントします。

3

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

4

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

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


10.3.2. Androidをリカバリする

eMMCのパーティション4に、Androidをリカバリする方法を示します。

10.3.2.1. Androidのリカバリに必要なファイルの取得

表10.8「Androidのリカバリに必要なファイル」に示す、Androidのリカバリに必要なファイルを取得します。Androidのルートファイルシステムアーカイブはアットマークテクノ ユーザーズサイト(https://users.atmark-techno.com)または付属DVD-ROMから、カーネルイメージファイルはArmadilloサイト(http://armadillo.atmark-techno.com)または、付属DVD-ROMから取得可能です。

[ティップ]

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

表10.8 Androidのリカバリに必要なファイル

ファイル説明
android-2.3.7_a800eva_[version].tar.gzAndroid 2.3.7のルートファイルシステムアーカイブ
linux-a800eva-[version].binカーネルイメージファイル

10.3.2.2. Androidのリカバリを実行する

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

[armadillo ~]# ls
android-2.3.7_a800eva_[version].tar.gz  linux-a800eva-[version].bin
[armadillo ~]# mkfs.ext3 /dev/mmcblk0p4  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
61056 inodes, 244152 blocks
12207 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=251658240
8 block groups
32768 blocks per group, 32768 fragments per group
7632 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376

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

This filesystem will be automatically checked every 23 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
[armadillo ~]# mount -t ext3 /dev/mmcblk0p4 /mnt  2
[armadillo ~]# tar zxf ~/android-2.3.7_a800eva_[version].tar.gz -C /mnt  3
[armadillo ~]# mkdir /mnt/boot
[armadillo ~]# cp ~/linux-a800eva-[version].bin /mnt/boot/Image.bin  4
[armadillo ~]# umount /mnt
[armadillo ~]# 

1

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

2

マウントします。

3

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

4

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

図10.6 Androidのリカバリ手順


10.4. eMMCのブートローダーをリカバリする

eMMCのブートパーティション0に、ブートローダーをリカバリする方法を示します。事前に9章SDブートの活用を参照して、Armadillo-800 EVAがSDブートしている必要があります。

10.4.1. ブートローダーのリカバリに必要なファイルの取得

表10.9「ブートローダーのリカバリに必要なファイル」に示す、ブートローダーのリカバリに必要なファイルを取得します。これらのファイルはArmadilloサイト(http://armadillo.atmark-techno.com)または、付属DVD-ROMから取得可能です。

表10.9 ブートローダーのリカバリに必要なファイル

ファイル説明
loader-armadillo800eva-mmcsd-v[version].binブートローダーイメージファイル

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

図10.7「ブートローダーのリカバリ手順」のようにブートローダーのリカバリを実行します。「ブートローダーのリカバリに必要なファイルの取得」で取得したファイルはカレントディレクトリ以下にあることを想定しています。

[armadillo ~]# ls
loader-armadillo800eva-mmcsd-v[version].bin
[armadillo ~]# echo 0 > /sys/block/mmcblk0boot0/force_ro  1
[armadillo ~]# cat ~/loader-armadillo800eva-mmcsd-v[version].bin > /dev/mmcblk0boot0  2
[armadillo ~]# sync
[armadillo ~]# 

1

ブートパーティションのソフトライトプロテクトを解除します。

2

ブートローダーイメージを書き込みます。

図10.7 ブートローダーのリカバリ手順