第9章 SDブートの活用

本章では、SDカードから直接起動(以降「SDブート」と表記します)する手順を示します。SDブートを活用すると、SDカードを取り替えることでシステムイメージを変更することができます。 本章に示す手順を実行するためには、容量が1GByte 以上のSD カードを必要とします。以下では、例としてDebian GNU/Linux 6.0(コードネーム squeeze)をSDブートする手順を示しますが、他のOSをSDブートすることも可能です。

9.1. ブートディスクの作成

作業用PCで、SDブートを行うためのSDカードを作成します。このSDカードをブートディスクと呼びます。本章で作成するブートディスクの構成については表9.1「ブートディスクの構成」を参照してください。

表9.1 ブートディスクの構成

パーティション番号ファイルシステム配置するファイル
1VFATブートローダーイメージファイル
2ext3ルートファイルシステムおよびカーネルイメージファイル

[警告]

ブートローダーイメージファイルをブートディスクに配置する場合、次の制約があります。

  • ブートディスクのパーティション1に配置すること

  • ルートディレクトリ直下に配置すること

  • ファイル名が"sdboot.bin"であること

  • パーティションIDが、0xb(Win95 FAT32)であること

  • ファイルシステムがFAT32または FAT16(32MByte以上)であること

本章に示す手順を実行した場合、問題になることはありませんが、独自のブートディスクを作成する場合は注意してください。

[警告]

SDブートは、CON7(SDインターフェース1)にのみ対応しています。CON8でSDブートすることはできません。

[ティップ]

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

9.1.1. ブートディスクの作成に必要なファイルの取得

表9.2「ブートディスクの作成に必要なファイル」に示す、ブートディスクの作成に必要なファイルを取得します。これらのファイルはArmadilloサイト(http://armadillo.atmark-techno.com)または、付属DVD-ROMから取得可能です。

表9.2 ブートディスクの作成に必要なファイル

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

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

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

作業用PCにSDカードを接続して図9.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): +128M  5

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

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

6

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

7

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

8

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

9

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

10

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

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


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

[PC ~]# fdisk -l /dev/sdb
Disk /dev/mmcblk1: 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: 0x61e03ae6

        Device Boot      Start         End      Blocks   Id  System
/dev/sdb1                    1          61      132532+   b  W95 FAT32
/dev/sdb2                   62        1790     3757117   83  Linux

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


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

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

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

[ティップ]

ファイルシステムの構築にmkfs.vfatコマンド(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
235248 inodes, 939279 blocks
46963 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=964689920
29 block groups
32768 blocks per group, 32768 fragments per group
8112 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736

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

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

1

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

2

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

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


9.1.4. システムイメージの展開

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

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

[PC ~]# ls
debian-squeeze_a800eva_[version].tar.gz  loader-armadillo800eva-mmcsd-v[version].bin
linux-a800eva-[version].bin
[PC ~]# mount -t vfat /dev/sdb1 /mnt
[PC ~]# cp ~/loader-armadillo800eva-mmcsd-v[version].bin /mnt/sdboot.bin  1
[PC ~]# umount /mnt
[PC ~]# mount -t ext3 /dev/sdb2 /mnt
[PC ~]# tar zxf ~/debian-squeeze_a800eva_[version].tar.gz -C /mnt  2
[PC ~]# cp ~/linux-a800eva-[version].bin /mnt/boot/Image.bin  3
[PC ~]# umount /mnt
[PC ~]#

1

ブートローダーイメージをブートディスクのパーティション1 にコピーします。ファイル名は"sdboot.bin"にリネームする必要があります。

2

Debian GNU/Linux 6.0 ルートファイルシステムアーカイブをブートディスクのパーティション2 に展開します。

3

カーネルイメージファイルをブートディスクのパーティション2 の"/boot/"以下にコピーします。ファイル名は、"Image.bin"または"linux.bin"にリネームする必要があります。

図9.4 システムイメージ展開手順


9.1.5. 設定ファイルの編集

「システムイメージの展開」で展開したDebian GNU/Linux 6.0 ルートファイルシステムは、eMMC パーティション2 をルートファイルシステムとして使用するように設定されています。図9.5「fstabの編集」に示すように、"/dev/mmcblk0p2"を"/dev/mmcblk1p2"に修正します。

[PC ~]# mount -t ext3 /dev/sdb2 /mnt
[PC ~]# vi /mnt/etc/fstab
# <file system> <mount> <type>  <options>                       <dump>  <pass>
proc            /proc   proc    defaults                        0       0
/dev/mmcblk1p2  /       ext3    defaults,errors=remount-ro      0       1
[PC ~]# umount /mnt
[PC ~]#

図9.5 fstabの編集


9.2. ブートディスクから起動する

「ブートディスクの作成」で作成したブートディスクから起動します。Armadillo-800 EVA に電源を投入する前に以下の準備を行います。

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

  • ブートディスクのブートローダーから起動するためにディップスイッチの起動デバイス設定をSDHI0(SW1.2をON、SW1.3をOFF)に設定します。

  • ブートローダーを保守モードで起動するためにディップスイッチの起動モード設定を(SW1.1)をONに設定します。

準備の完了後、電源を投入すると保守モードで起動します。図9.6「ブートディスクからの起動」を参照して、ブートディスクのカーネルおよびルートファイルシステムを使用するよう設定後、bootコマンドで起動してください。

hermit> setbootdevice mmcblk1p2
hermit> setenv console=ttySC1,115200 noinitrd rootwait root=/dev/mmcblk1p2
hermit> boot

図9.6 ブートディスクからの起動