[Armadillo:03253] Re: SDカードから起動したい

nakai email@hidden
2008年 8月 12日 (火) 13:36:09 JST


nakaiです。

hermitではMMC/SDドライバが入っていないため、
Kernelを該当デバイスからロードすることはできません。
# USBも同様

hdaは、IDEドライバを実装しているからブート可能になってます。

MMC/SDでは、ルートファイルシステムのみ構築可能です。


Makoto Endo さんは書きました:
> 遠藤と申します。
> 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 mailing list
> email@hidden
> http://lists.atmark-techno.com/mailman/listinfo/armadillo



armadillo メーリングリストの案内