第8章 カーネル/ユーザーランドの配置

Armadillo-400 シリーズでは、標準ではカーネルおよびユーザーランドイメージはフラッシュメモリに配置されており、ブートローダーによってカーネルのブート前に RAM 上に展開されます。

Armadillo-400 シリーズでは、フラッシュメモリ以外の場所にもカーネルおよびユーザーランドを配置することができます。

本章では、イメージの配置方法と、イメージの配置場所を変えたときに必要となるブートオプションの設定方法について説明します。

8.1. TFTP サーバーに配置する

Hermit-At ブートローダーは、TFTP サーバー上に配置されたカーネルまたはユーザーランドのイメージを取得し RAM 上に展開したあと起動する、tftpboot 機能を有しています。

tftpboot 機能を使用すると、フラッシュメモリにイメージを書くことなく起動できるため、開発の初期段階などイメージの更新が頻繁に行われる際に、効率よく作業することができます。

8.1.1. ファイルの配置

TFTP サーバーのルートディレクトリに、カーネルイメージとユーザーランドイメージを配置してください。

[ティップ]

ATDE v3.0 以降では、標準状態で TFTP サーバー (atftpd) が動作しています。/var/lib/tftpboot ディレクトリにファイルを置くことで、TFTP によるアクセスが可能になります。

8.1.2. ブートオプション

ターゲットとなる Armadillo のジャンパを適切に設定し、保守モードで起動してください。

作業用 PC のシリアル通信ソフトウェアを使用して、コマンド[19]を入力します。

hermit> setbootdevice tftp [Armadillo IP adress] [tftp server IP adress]
        --kernel=kernel_image_file_name --userland=userland_image_file_name

図8.1 tftpboot コマンド


カーネルとユーザーランドのイメージは、どちらか一方だけ、もしくは両方指定できます。

TFTP サーバーの IP アドレスが 192.168.10.1、Armadillo の IP アドレスが 192.168.10.10で、カーネルイメージのファイル名が linux.bin.gz、ユーザーランドのイメージのファイル名が romfs.img.gz の場合、以下のようになります[20]

hermit> setbootdevice tftp 192.168.10.10 192.168.10.1
        --kernel=linux.bin.gz --userland=romfs.img.gz

図8.2 tftpboot コマンド例


setbootdevice コマンドでブートデバイスを TFTP サーバーに設定した場合、設定は保存され、起動時に毎回カーネルもしくはユーザーランドイメージを TFTP サーバーから取得するようになります。

8.2. ストレージに配置する

Armadillo-400 シリーズでは、カーネルイメージは microSD に、ユーザーランドのルートファイルシステムは microSD または USB メモリにも配置することができます。

ここでは、例として microSD にカーネルイメージとルートファイルシステム両方を配置する手順を説明します。

まず、microSD に1つのパーティションを作成し、EXT3 ファイルシステムでフォーマットします。そこにルートファイルシステムを構築し、/boot/ ディレクトリにカーネルイメージを配置します。どのデバイスからカーネルイメージをロードするかは、Hermit-At のブートオプションで指定します。また、ルートファイルシステムがどこにあるかは、カーネルパラメーターで指定します。

[警告]

ここで紹介する手順を適用するには、Hermit-At ブートローダー v2.0.3 以降が必要です。Hermit-At ブートローダー v2.0.2 以前では、EXT3 でフォーマットされた起動パーティションを認識できないため、この手順は適用できません。

Hermit-At ブートローダー v2.0.2 以前を使用しなければならない場合は、「Armadillo-400 シリーズ ソフトウェアマニュアル v1.2.0」の記述を参照してください。

8.2.1. パーティション作成

最初に、microSD に1つのプライマリパーティションを作成します。

microSD をスロットに挿入し[21]図8.3「パーティション作成手順」のようにしてパーティションを構成してください。

[armadillo ~]# fdisk /dev/mmcblk0
The number of cylinders for this disk is set to 124277.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
   (e.g., DOS FDISK, OS/2 FDISK)

Command (m for help): d                                                     1
Selected partition 1

Command (m for help): n                                                     2
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-124277, default 1):                                       3
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-124277, default 124277):      4
Using default value 124277

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

Calling ioctl() to re-read partition table.
 mmcblk0: p1
 mmcblk0: p1
Syncing disks.

[armadillo ~]#

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


1

まずは、既存のパーティションを削除します。複数のパーティションがある場合は、全て削除してください。

2

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

3

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

4

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

5

変更をmicroSDに書き込みます。

[ティップ]

使用する microSD カードによって仕様が異なるため、表示されるシリンダ数は手順通りとはならない場合があります。

8.2.2. ファイルシステムの作成

次に、図8.4「ファイルシステム作成手順」のようにして、EXT3 ファイルシステムでフォーマットします。

[armadillo ~]# mke2fs -j /dev/mmcblk0p1
mke2fs 1.25 (20-Sep-2001)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
497984 inodes, 994220 blocks
49711 blocks (5%) reserved for the super user
First data block=0
31 block groups
32768 blocks per group, 32768 fragments per group
16064 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736

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

This filesystem will be automatically checked every 35 mounts or
180.00 days, whichever comes first.  Use tune2fs -c or -i to override.

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


8.2.3. カーネルイメージの配置

microSD から起動する場合は、起動パーティションの /boot ディレクトリにカーネルイメージを配置する必要があります。対応しているカーネルイメージは、非圧縮カーネルイメージ(Image, linux.bin)または、圧縮イメージ(Image.gz, linux.bin.gz)のどちらかになります。

ここで説明する例では、カーネルイメージの取得に wget コマンドを使用します。wget コマンドで指定する URL は製品によって異なりますので、以下の表を参照し適宜読み替えてください。

表8.1 カーネルイメージのダウンロード先URL

製品URL
Armadillo-420http://download.atmark-techno.com/armadillo-420/image/linux-a400-[version].bin.gz
Armadillo-440http://download.atmark-techno.com/armadillo-440/image/linux-a400-[version].bin.gz

以下に Armadillo-440 での配置例を示します。

[armadillo ~]# mount /dev/mmcblk0p1 /mnt/
[armadillo ~]# mkdir /mnt/boot
[armadillo ~]# cd /mnt/boot
[armadillo /mnt/boot]# wget http://download.atmark-techno.com/armadillo-440/image/linux-a400-[version].bin.gz
[armadillo /mnt/boot]# mv linux-a440-[version].bin.gz /mnt/boot/linux.bin.gz
[armadillo /mnt/boot]# cd
[armadillo ~]# umount /mnt

図8.5 カーネルイメージの配置


8.2.4. ルートファイルシステムの構築

ここでは、microSD にルートファイルシステムを構築する手順について説明します。

ルートファイルシステムは、Debian/GNU Linux もしくは Atmark-Dist で作成したルートファイルシステムを使用できます。

8.2.4.1. Debian GNU/Linuxを構築する

Debian GNU/Linux を構築する場合、付属 DVD の debian ディレクトリ以下のアーカイブを使用するか、弊社ダウンロードサイトからアーカイブを取得します。これは、純粋な Debian GNU/Linuxでインストールされるファイルを分割してアーカイブ化したものとなります。これらをファイルシステム上に展開することでルートファイルシステムを構築することができます。

[警告]

ルートファイルシステムに Debian GNU/Linux を構築する場合は、パーティションの空き容量が約 1GB 以上必要です。

ここで説明する例では、debian アーカイブの取得に wget コマンドを使用します。wget コマンドで指定する URL は製品によって異なりますので、以下の表を参照し適宜読み替えてください。

表8.2 Debian アーカイブのダウンロード先 URL

製品URL
Armadillo-420/440 共通http://download.atmark-techno.com/armadillo-4x0/debian/debian-lenny-armel-#.tgz[a]
http://download.atmark-techno.com/armadillo-4x0/debian/debian-lenny-armel-a4x0.tgz

[a] 注:#の部分は1~5まで


[armadillo ~]# mount /dev/mmcblk0p1 /mnt/
[armadillo ~]# mkdir tmp
[armadillo ~]# mount -t ramfs ramfs tmp
[armadillo ~]# cd tmp
[armadillo ~/tmp]# for N in 1 2 3 4 5 a4x0; do
> wget http://download.atmark-techno.com/armadillo-4x0/debian/debian-lenny-armel-${N}.tgz;
> gzip -cd debian-lenny-armel-${N}.tgz | (cd /mnt; tar xf -);
> sync;
> rm -f debian-lenny-armel-${N}.tgz;
> done
[armadillo ~/tmp]# cd
[armadillo ~]# umount tmp
[armadillo ~]# rmdir tmp
[armadillo ~]# umount /mnt

図8.6 Debian アーカイブによるルートファイルシステムの構築例


8.2.4.2. Atmark-Dist イメージから構築する

Atmark-Dist で作成されるルートファイルシステムと同じルートファイルシステムを microSD 上に構築する方法を説明します。Debian を構築する場合に比べ、容量の少ない microSD へシステムを構築することができます。

ここで説明する例では、Atmark-Dist で作成されるルートファイルシステムの initrd イメージの取得に wget コマンドを使用します。wget コマンドで指定する URL は製品によって異なりますので、以下の表を参照し適宜読み替えてください。

表8.3 Atmark-Dist イメージのダウンロード先URL

製品URL
Armadillo-420http://download.atmark-techno.com/armadillo-420/image/romfs-a420-[version].img.gz
Armadillo-440http://download.atmark-techno.com/armadillo-440/image/romfs-a440-[version].img.gz

[armadillo ~]# mount /dev/mmcblk0p1 /mnt/
[armadillo ~]# mkdir tmp
[armadillo ~]# mkdir romfs
[armadillo ~]# mount -t ramfs ramfs tmp
[armadillo ~]# wget http://download.atmark-techno.com/armadillo-440/image/romfs-a440-[version].img.gz -P tmp
[armadillo ~]# gzip -d tmp/romfs-a440-[version].img.gz
[armadillo ~]# mount -o loop tmp/romfs-a440-[version].img romfs/
[armadillo ~]# (cd romfs/; tar cf - *) | (cd /mnt; tar xf -)
[armadillo ~]# sync
[armadillo ~]# umount romfs
[armadillo ~]# rmdir romfs
[armadillo ~]# umount tmp
[armadillo ~]# rmdir tmp
[armadillo ~]# umount /mnt

図8.7 Atmark-Dist イメージによるルートファイルシステムの構築例


Atmark-Dist イメージは/etc/fstabの設定がフラッシュメモリ用になっているため、microSD用に変更する必要があります。

[armadillo ~]# mount /dev/mmcblk0p1 /mnt/
[armadillo ~]# vi /mnt/etc/fstab
/dev/mmcblk0p1          /               ext3    defaults                0 1
proc                    /proc           proc    defaults                0 0
usbfs                   /proc/bus/usb   usbfs   defaults                0 0
sysfs                   /sys            sysfs   defaults                0 0
[armadillo ~]# umount /mnt

図8.8 fstabの変更例


8.2.5. ブートデバイスとカーネルパラメーターの設定

カーネルイメージをロードする場所は、Hermit-At のブートデバイス設定で指定します。また、ユーザーランドの場所は、カーネルパラメーターで指定します。

ジャンパにより起動モードを保守モードに設定し、再起動してください。

microSD のパーティション1に配置したカーネルイメージで起動するためには、図8.9「ブートデバイスの指定」を実行してください。

hermit> setbootdevice mmcblk0p1

図8.9 ブートデバイスの指定


ルートファイルシステムを microSD のパーティション1にする場合は、図8.10「ルートファイルシステム指定例」を実行してください。

hermit> setenv console=ttymxc1 root=/dev/mmcblk0p1 noinitrd rootwait

図8.10 ルートファイルシステム指定例


ブートデバイスとカーネルパラメーターの設定を元に戻す方法については、「ブートローダーのパラメータを出荷状態に戻す」を参照してください。



[19] 書面の都合上折り返して表記しています。実際にはコマンドは 1 行で入力します。

[20] 書面の都合上折り返して表記しています。実際にはコマンドは 1 行で入力します。

[21] Armadillo-400 シリーズの microSD スロットは、ロック式になっています。microSD カードの着脱方法に関しては「Armadillo-400 シリーズ ハードウェアマニュアル」をご参照ください。