Armadillo-440をmicroSDカード上のカーネル、ユーザーランドで起動する方法です。
なお、Armadillo-440は、2つのカーネルバージョン(Linux-2.6.26、Linux-3.14)があります。
Armadillo-440のカーネルバージョンは、起動直後のコンソールのログで確認できます。
Linux-2.6.26の例)起動直後のログが「Hermit-At v2」で始まる
Hermit-At v2.5.0 (armadillo4x0) compiled at 06:49:08, Jul 10 2018
Linux-3.14の例)起動直後のログが「Hermit-At v3」で始まる
Hermit-At v3.11.0 (armadillo4x0) compiled at 08:31:07, Mar 30 2018
ここでは、Linux-2.6.26版で説明します。
Linux-3.14版は、
Armadillo-440:microSDカード上のカーネル、ユーザーランドで起動する(Linux-3.14版)を参照ください。
下記の手順にあたり、microSDカードとUSBメモリを用意しておきます。
USBメモリ(起動ディスクを作るためのファイルを置く。FAT32でフォーマットされたものを使用)
microSDカード(カーネル、ユーザーランドが書き込まれる起動ディスク)
1. USBメモリにカーネル、ユーザーランドのイメージファイルを置く
USBメモリに下記の2つのイメージファイルを保存しておきます。
カーネル
ユーザーランド
ここでは例として、Armadillo-440 製品ソフトウェア・マニュアル(Linux 2.6.26対応・旧版)より
ダウンロード可能(2023.12時点の最新版)な下記の標準ソフトのイメージファイルをUSBメモリに保存しておきます。
カーネル:linux-a400-1.20.bin.gz
ユーザーランド:romfs-a440-1.13.img.gz
下記の説明内では、上記のイメージファイル名で記述します。
異なるイメージファイル名を使用する場合は、使用するイメージファイル名に読み替えてください。
2. Armadillo-440の起動
Armadillo-440に、手順1で作成したUSBメモリと、microSDカードを接続して起動します。
起動後、USBメモリをマウントし、手順1のファイルが見えることを確認します。
[root@armadillo440-0 (ttymxc1) ~]# mkdir usb [root@armadillo440-0 (ttymxc1) ~]# mount -t vfat /dev/sda1 usb [root@armadillo440-0 (ttymxc1) ~]# ls -1 usb linux-a400-1.20.bin.gz* romfs-a440-1.13.img.gz*
3. microSDカードのフォーマット
3-1. microSDカードのパーティションの設定
// fdiskコマンドをSDカード(/dev/mmcblk0)に対して実行します。 [root@armadillo440-0 (ttymxc1) ~]# fdisk /dev/mmcblk0 The number of cylinders for this disk is set to 236544. 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) // 以下、fdisk内での設定になります。 Command (m for help): d // dを入力(パーティションの削除。複数ある場合はすべて削除。) Selected partition 1 Command (m for help): n // nを入力 Command action e extended p primary partition (1-4) p // pを入力 Partition number (1-4): 1 // 1を入力 First cylinder (1-236544, default 1): // そのまま Using default value 1 Last cylinder or +size or +sizeM or +sizeK (1-236544, default 236544): // そのまま Using default value 236544 Command (m for help): w // wを入力 The partition table has been altered! Calling ioctl() to re-read partition table. mmcblk0: p1 mmcblk0: p1 Syncing disks. // 以上で、fdisk内での設定が完了し、標準入力のプロンプトに戻ります。 [root@armadillo440-0 (ttymxc1) ~]#
3-2. microSDカードのフォーマット
[root@armadillo440-0 (ttymxc1) ~]# mke2fs -j /dev/mmcblk0p1 [root@armadillo440-0 (ttymxc1) ~]# tune2fs -i 0 /dev/mmcblk0p1
上記3-1,3-2の手順の詳細は
Armadillo実践開発ガイド第2部「4.1.1. パーティションの作成とフォーマット」を参考。
4. カーネル、ユーザーランドをmicroSDカードに書き込む
手順2でマウントしたUSBメモリ内のイメージファイルを使って、microSDカード(/dev/mmcblk0p1)に
カーネル、ユーザーランドを書き込みます。
4-1. カーネルの書き込み
USBメモリ内のカーネルイメージ(本例では:linux-a400-1.20.bin.gz)をmicroSDカード(/dev/mmcblk0p1)に書き込みます。
[root@armadillo440-0 (ttymxc1) ~]# mkdir sd [root@armadillo440-0 (ttymxc1) ~]# mount -t ext3 /dev/mmcblk0p1 sd kjournald starting. Commit interval 5 seconds EXT3 FS on mmcblk0p1, internal journal EXT3-fs: mounted filesystem with ordered data mode. [root@armadillo440-0 (ttymxc1) ~]# mkdir -p sd/boot [root@armadillo440-0 (ttymxc1) ~]# cp usb/linux-a400-1.20.bin.gz sd/boot/linux.bin.gz
4-2. ユーザーランドの書き込み
USBメモリ内のカーネルイメージ(本例では:romfs-a440-1.13.img.gz)をmicroSDカード(/dev/mmcblk0p1)に書き込みます。
[root@armadillo440-0 (ttymxc1) ~]# mkdir usb/romfs [root@armadillo440-0 (ttymxc1) ~]# gzip -c -d usb/romfs-a440-1.13.img.gz > usb/romfs.img [root@armadillo440-0 (ttymxc1) ~]# mount -o loop usb/romfs.img usb/romfs ext3: No journal on filesystem on loop0 [root@armadillo440-0 (ttymxc1) ~]# cp -a usb/romfs/* sd [root@armadillo440-0 (ttymxc1) ~]# umount usb/romfs [root@armadillo440-0 (ttymxc1) ~]# rmdir usb/romfs
usbメモリに追加した中間ファイル(romfs.img)を削除して、アンマウントします。
[root@armadillo440-0 (ttymxc1) ~]# rm -f usb/romfs.img [root@armadillo440-0 (ttymxc1) ~]# umount usb [root@armadillo440-0 (ttymxc1) ~]# rmdir usb
4-3. ユーザーランドのfstabファイルの変更
ユーザーランドのfstabファイルの内容を変更します。
変更前のfstabファイルは、下記のようになっています。
[root@armadillo440-0 (ttymxc1) ~]# cat sd/etc/fstab /dev/ram0 / ext2 defaults 0 1 proc /proc proc defaults 0 0 usbfs /proc/bus/usb usbfs defaults 0 0 sysfs /sys sysfs defaults 0 0
上記(変更前)の1行目のram0をmmcblk0p1に、ext2をext3にします。
viエディタでfstabファイルを編集、もしくは、下記コマンドで変更します。
[root@armadillo440-0 (ttymxc1) ~]# sed -i -e 's/ram0/mmcblk0p1/' sd/etc/fstab [root@armadillo440-0 (ttymxc1) ~]# sed -i -e 's/ext2/ext3/' sd/etc/fstab
変更後のfstabファイルは、下記のようになります。
[root@armadillo440-0 (ttymxc1) ~]# cat sd/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
microSDカードをアンマウントします。
[root@armadillo440-0 (ttymxc1) ~]# umount sd [root@armadillo440-0 (ttymxc1) ~]# rmdir sd
以上で、カーネル、ユーザーランドが起動するmicroSDカードの作成は終了です。
Armadillo-440をmicroSDカードのカーネル、ユーザーランドで起動するには、
保守モード(※)で起動して、ブートローダーを設定します。
※)保守モードでの起動方法(SW1を押下したまま起動。または、JP1:オープン、JP2:ショートで起動。)
Armadillo-400 シリーズ
ソフトウェアマニュアル「3.8. ブートモード」
ブートローダーで、下記のように設定します。
hermit> setenv console=ttymxc1 root=/dev/mmcblk0p1 noinitrd rootwait hermit> setbootdevice mmcblk0p1
以降、Armadill-440は、microSDカードのカーネル、ユーザーランドで起動します。
補足1)microSDカードのカーネル、ユーザーランドで起動した場合、終了の際はpoweroffコマンドを実行します。
(microSDカード上のファイルシステムを正常に終了するためにシャットダウンします。)
[root@armadillo440-0 (ttymxc1) ~]# poweroff
補足2)ROMのカーネル、ユーザーランドでの起動に戻すには、保守モードで起動して下記のように設定します。
hermit> clearenv hermit> setbootdevice flash