第5章 起動モードとブートローダの機能

この章では、開発ボードの起動モードと採用しているブートローダ「Hermit-At」の起動設定機能について説明します。

起動モードには、オートブートモード、保守モード等、システム起動時に最初に動作するソフトウェアを選択することができます。

Hermit-Atでは、Linuxカーネルを起動させる時の起動オプションの設定、カーネルイメージのロケーションの設定、クロックの設定等、システム起動時の初期設定を行うことができます。

5.1. 起動モードの選択

起動モードの設定は、JP1の設定により決定されます。各起動モードは表5.1「起動モード」のようになります。

表5.1 起動モード

モードJP1説明
オートブートオープン電源投入後、自動的にカーネルを起動させます。
保守ショート各種設定が可能なHermitコマンドプロンプトが起動します。

5.2. Linuxカーネル起動オプションの設定

Linuxカーネル起動オプションを変更することで、コンソールや、ルートファイルシステム等の様々な種類の設定を変更することができます。ここでは、開発ボードに関係のある代表的なオプションについて説明します。

また、これらの設定は、Hermit-Atのsetenv機能を使用します。setenvで設定されたパラメータはフラッシュメモリに保存され再起動後にも設定が反映されます。

設定されたパラメータをクリアするには、clearenvを使用します。

hermit> clearenv

図5.1 Linuxカーネル起動オプションのクリア


[ティップ]Hermit-ATのモード

Hermit-ATには、2つのモードがあります。コマンドプロンプトを表示して対話的に動作する「対話モード」と、Hermit-ATダウンローダと通信するための「バッチモード」です。バッチモードではコマンドプロンプトの表示や入力した文字の表示を行いませんが、コマンドの実行は可能です。

起動直後のHermit-ATは必ず対話モードになっています。対話モードからバッチモードに移行するにはチルダ「~」を、バッチモードから対話モードに移行するにはエクスクラメーションマーク「!」を入力します。

Hermit-ATダウンローダと通信を行った場合は、バッチモードに移行します。これは通信を確立するためにHermit-ATダウンローダがチルダを送信するためです。

対話モードからバッチモードに移行したり、バッチモード中に入力したコマンドが成功した場合などは以下のように表示されます。

+OK

5.2.1. コンソールの設定

通常のLinuxシステムでは、起動ログの出力コンソールを変更する時に指定しますが、開発ボードでは、ブートローダのログ出力先も同時に変更します。

コンソールを指定するには、下記のようにconsoleパラメータにコンソール指定子を設定します。

hermit> setenv console=ttymxc0

図5.2 コンソールの指定


設定によるログの出力先は、表5.2「コンソール指定に伴う出力先」のようになります。

表5.2 コンソール指定に伴う出力先

コンソール指定子起動ログ出力先保守モードプロンプト出力先
ttymxc0CON6CON6
ttymxc1CON7CON7
nullなしCON6
その他(tty1等)指定するコンソール[a]CON6

[a] ブートローダのログは出力されません。


5.2.2. ルートファイルシステムの設定

ルートファイルシステムとしてマウントするファイルシステムイメージの場所や、マウントするファイルシステム等を設定します。各パラメータの意味は以下を参照してください。

root

使用するルートファイルシステムのパーティションを指定します。

rootfs

使用するルートファイルシステムの種類をタイプします。

rootdelay

ルートファイルシステムをマウントする前のディレイ時間を指定します。単位は秒です。

hermit> setenv root=/dev/hda1 rootfs=ext2 rootdelay=3

図5.3 ルートファイルシステムの指定


5.2.2.1. ルートファイルシステムイメージの場所

ファイルシステムイメージの場所を設定する場合は、イメージが存在するパーティションを設定します。各デバイスのパーティションノードの例を、表5.3「ルートファイルシステムデバイス」に示します。指定がない場合(デフォルト)は、RAMディスク(/dev/ram0)が指定されます。

表5.3 ルートファイルシステムデバイス

デバイス名デバイスノード先頭パーティションノード
RAMディスク/dev/ram/dev/ram0
コンパクトフラッシュディスク/dev/hda/dev/hda1
NANDディスク/dev/mentryblock/dev/mentryblock4
MMC/SDカードディスク/dev/mmcblk0/dev/mmcblk0p1

5.2.2.2. ルートファイルシステムタイプ

特異なファイルシステムを使用する場合は、ファイルシステムタイプを指定します。主にJFFS2が使われている場合となります。指定がない場合は、ext2、ext3、msdos、vfatのいずれかでマウントされます[2]

5.2.2.3. マウント前ディレイ

Linuxカーネルは、指定するルートファイルシステムが存在するデバイスの認識が完了していなければ、ルートファイルシステムをマウントすることはできません。ドライバのロードタイミングやデバイスに依存する時間等、デバイスの認識時間は様々な要素で変動します。

ここで指定することができるマウント前ディレイは、ルートファイルシステムをマウントする前に、指定秒間待機するオプションとなります。指定がない場合(デフォルト)は、待機なしとなります。

5.2.3. その他の起動オプション

本書で紹介したオプション以外にも様々なオプションがあります。詳しくは、Linuxの解説書や、Linuxカーネルのソースコードに含まれるドキュメント(kernel-source/Documentation/kernel-parameters.txt)等を参照してください。

また、ビデオに関するオプションは9章ストレージを参照してください。

5.2.4. 起動オプションの設定例

  • コンソールをCON7にする場合

    hermit> setenv console=ttymxc1

    図5.4 起動オプション設定例1


  • コンソールをCON6、ルートファイルシステムをコンパクトフラッシュのパーティション1にする場合

    hermit> setenv console=ttymxc0 root=/dev/hda1 rootdelay=3

    図5.5 起動オプション設定例2


  • コンソールをビデオに出力、ルートファイルシステムをMMC/SDのパーティション2にする場合[3]

    hermit> setenv console=ttymxc0 video=mxcfb:CRT-SVGA,16bpp,enable
    		                                       root=/dev/mmcblk0p2 rootdelay=1

    図5.6 起動オプション設定例3


5.3. カーネルイメージのロケーション設定

setbootdeviceコマンドを使用する事で、ブートローダーがロードするカーネルイメージのロケーションを指定することができます。

開発ボードでは、表5.4「カーネルイメージのロケーション」に示すデバイスを指定できます。

表5.4 カーネルイメージのロケーション

指定子説明
flashフラッシュメモリのkernelリージョンにあるイメージをロードします。
hdaコンパクトフラッシュの各パーティションの/boot以下にあるイメージファイル[a]を順番に走査し、最初に見つけたイメージをロードします[b]
hda[1:4]

コンパクトフラッシュの指定するパーティションの/boot以下にあるイメージファイル[b]を走査し、見つけたイメージをロードします[b]

[a] linux.bin、linux.bin.gz、Image、Image.gzのいずれかとなります。

[b] イメージファイルが見つからない場合は、flashを指定したように動作します。


以下の例では、カーネルイメージのロケーションをフラッシュメモリに設定しています。

hermit> setbootdevice flash

図5.7 カーネルイメージロケーション指定




[2] Linuxカーネルが標準でサポートするファイルシステムの場合は、特に指定は必要ありません

[3] 書面の都合上、折り返して表記していますが通常は1行のコマンドとなります。