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

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

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

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

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

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

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

7.1.1. ファイルの配置

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

[ティップ]

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

7.1.2. ブートオプション

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

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

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

図7.1 tftpboot コマンド


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

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

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

図7.2 tftpboot コマンド例


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

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

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

ここでは、microSD にカーネルとユーザーランド両方のイメージを配置する手順を説明します。

パーティションは以下のようにします。

表7.1 microSD システムパーティション例

パーティションファイルシステムサイズ説明
/dev/mmcblk0p1ext232MB起動パーティション、カーネルイメージを配置します
/dev/mmcblk0p2ext3残りルートファイルシステムを配置します

7.2.1. パーティション分割

最初に、microSD を2つのパーティションに分けます。

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

[armadillo ~]# fdisk /dev/mmcblk0
The number of cylinders for this disk is set to 31104.
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
Selected partition 1

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

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

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

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

[armadillo ~]#

図7.3 パーティション分割手順


[ティップ]

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

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

次に、図7.4「ファイルシステム作成手順」のようにして、各パーティションにファイルシステムを作成します。起動パーティションは EXT2 ファイルシステムに、ルートファイルシステムパーティションは EXT3 ファイルシステムにします。

[ティップ]

起動パーティション(カーネルイメージを配置するパーティション)に EXT2 ファイルシステムを作成する場合は、mke2fs のオプションとして、必ず「-O none」を指定する必要があります。

[armadillo ~]# mke2fs -O none /dev/mmcblk0p1
mke2fs 1.25 (20-Sep-2001)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
7840 inodes, 31288 blocks
1564 blocks (4%) reserved for the super user
First data block=1
4 block groups
8192 blocks per group, 8192 fragments per group
1960 inodes per group
Superblock backups stored on blocks:
        8193, 16385, 24577

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

This filesystem will be automatically checked every 39 mounts or
180.00 days, whichever comes first.  Use tune2fs -c or -i to override.
[armadillo ~]# mke2fs -j /dev/mmcblk0p2
mke2fs 1.25 (20-Sep-2001)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
120576 inodes, 241008 blocks
12050 blocks (4%) reserved for the super user
First data block=0
8 block groups
32768 blocks per group, 32768 fragments per group
15072 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 27 mounts or
180.00 days, whichever comes first.  Use tune2fs -c or -i to override.

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


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

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

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

表7.2 カーネルイメージのダウンロード先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 -t ext2 /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

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


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

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

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

7.2.4.1. Debian GNU/Linuxを構築する

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

[警告]

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

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

表7.3 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/mmcblk0p2 /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

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


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

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

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

表7.4 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/mmcblk0p2 /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

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


7.2.5. カーネルパラメータの設定

microSD に配置したカーネルから起動するためには、Hermit-At を使用してカーネルパラメータを設定する必要があります。

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

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

hermit> setbootdevice mmcblk0p1

図7.8 起動デバイスの指定


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

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

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


7.3. 設定を元に戻す

ブートデバイスを初期状態のフラッシュメモリに戻す場合には、図7.10「起動デバイスにフラッシュメモリを指定する」のコマンドを入力してください。

hermit> setbootdevice flash

図7.10 起動デバイスにフラッシュメモリを指定する


また、setenv で設定した起動オプションを初期状態の設定に戻すには、clearenv コマンドを実行してください。

hermit> clearenv

図7.11 clearenv で起動オプションを初期状態に戻す




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

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

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