[Armadillo:03252] SDカードから起動したい
Makoto Endo
email@hidden
2008年 8月 12日 (火) 12:10:23 JST
遠藤と申します。
Armadillo-500を使用してます。
SDカードからLinuxを起動したいため、以下の手順で
SDカードのシステムを構築したのですが、Linuxカー
ネルがFlash(フラッシュメモリ)からロードされて
しまいます。
ブートローダがカーネルイメージを見つける
ことができずにFlashからロードしているのでしょうか?
ご教授お願いいたします。
*手順については、以下のHPを参考にさせて頂きました。
http://armadillo.atmark-techno.com/articles/sd-a500-embedded-course-ch7-1
*使用しているSDカードは以下の物です
SanDisk: ExtremeIII 2GB
*手順
1.fdiskコマンドでSDカードに以下のパーティションを作成。
Device Boot Start End Blocks Id System
/dev/mmcblk0p1 1 978 31288 83 Linux
/dev/mmcblk0p2 979 61264 1929152 83 Linux
2.ファイルシステムの作成
以下の設定で作成します。
パーティション | サイズ | ファイル| システム用途
---------------+--------+---------+-------------
1 32M ext2 カーネルイメージ用
2 1.9G ext3 ルートファイルシステム用
---------------+--------+---------+-------------
2.1 カーネルイメージ用ファイルシステムの作成
#mke2fs -O none /dev/mmcblk0p1
2.2 ルートファイルシステム用ファイルシステムの作成
#mke2fs -j /dev/mmcblk0p2
3.ルートファイルシステムの構築
#mount /dev/mmcblk0p2 /mnt
#mkdir /mnt/work
(/mnt/work にユーザランドイメージを転送)
#gzip -dc romfs.img.gz > romfs.img
# mkdir romfs
# mount -t ext2 -o loop romfs.img romfs
# (cd romfs; tar cf - *) | (cd /mnt; tar xf -)
# sync
# umount romfs
# cd
# umount /mnt
4.カーネルイメージの配置
#mount /dev/mmcblk0p1 /mnt
#mkdir /mnt/boot
(/mnt/work にカーネルイメージを転送)
# cd /mnt/boot
# mv linux.bin.gz Image.gz
# cd
# umount /mnt
5.起動と設定
5.1 hermitのリコンパイル
hermitの"setbootdevice"コマンドで、mmcblk0p1を指定できるように、
以下のようにソースを変更しコンパイル。その後hermitで"bootloader"に
書き込む。
//hermit-at-1.1.9/src/target/armadillo5x0/board.c
------------------------------------------------------------
static int
setbootdevice_cmdfunc(int argc, char **argv)
{
/* initialize parameter: bootdevice, using default flash */
if (!check_param("@bootdevice")) {
char *c_argv[2] = {argv[0], "flash"};
sethermit_param(2, c_argv, "@bootdevice");
}
if (argc > 1)
if (strcmp(argv[1], "flash") != 0 &&
strcmp(argv[1], "hda1") != 0 &&
strcmp(argv[1], "hda2") != 0 &&
strcmp(argv[1], "hda3") != 0 &&
strcmp(argv[1], "hda4") != 0 &&
strcmp(argv[1], "hda") != 0 &&
strcmp(argv[1], "mmcblk0p1") != 0 )
return -H_EINVAL;
return sethermit_param(argc, argv, "@bootdevice");
}
----------------------------------------------------------------
5.2 オプション設定
hermit> setbootdevice mmcblk0p1
hermit> setenv console=ttymxc0 noinitrd root=/dev/mmcblk0p2 rootdelay=2
以上です。
armadillo メーリングリストの案内