出荷時のArmadilloはシリアルインターフェース1をシリアルコンソールとして使用するように設定されています。
Armadilloのシリアルポート名については電源を入れる前にをご覧下さい。
シリアルポートは主に以下の3つに使用されています。
- ブートローダ
- カーネル
- ユーザランドプログラム
ここでは、シリアルコンソールをシリアルインターフェース2に移動する方法とシリアルコンソールを使用しない方法の2つを紹介します。
1. シリアルインターフェース1をシリアルコンソールとして使用する。
まず最初に、シリアルコンソールをシリアルインターフェース1からシリアルインターフェース2に移動してみます。
1.1ブートローダ
Armadilloのブートローダであるhermitのうち、loader-armadillo-ttyAM1.binを使用します。loader-armadillo-ttyAM1.binの説明はいろいろなHermitをご覧ください。
HermitをFlashに書き込みます。Hermitの詳しい使い方はオンボードFlashメモリに書き込むをご覧ください。
[armadillo ~]$ hermit download -i /usr/lib/hermit/loader-armadillo-ttyAM1.bin -a 0x0000000 --force-locked target: Hermit V1.3-armadillo-4 @18:09:07, Mar 26 2003 serial: completed 0x00005e53 (24147) bytes. [armadillo ~]$
これで、ブートローダの設定は終了です。
1.2 カーネル
カーネルの設定は、今書き込んだブートローダが自動的に設定してくれるので必要ありません。
1.3 ユーザランドプログラム
カーネルは自己初期化終了後、/sbin/initを起動します。/sbin/initは /etc/inittabに記述されている動作を行ないます。デフォルトのArmadillo Linuxの場合は以下のように記述されています。
::sysinit:/etc/rc.d/rc.sysinit ::respawn:/sbin/getty -L 115200 ttyAM0 vt102 ::shutdown:/etc/rc.d/rc.reboot ::ctrlaltdel:/sbin/reboot
ここで重要なのは、2行目の respawn行です。
respawn行で指定されているように、gettyは ttyAM0つまりシリアルインターフェース1を使用するようになっていますので、これを ttyAM1(シリアルインターフェース2)を使用するように変更します。gettyについて詳しくは manをご欄ください。ユーザランドのカスタマイズ方法はユーザーランドをカスタマイズするをご欄ください。
::sysinit:/etc/rc.d/rc.sysinit ::respawn:/sbin/getty -L 115200 ttyAM1 vt102 ::shutdown:/etc/rc.d/rc.reboot ::ctrlaltdel:/sbin/reboot
変更したユーザランドをフラッシュに書き込みます。
[armadillo ~]$ hermit download -i initrd-1.1.2.img.gz -a 0x180000 target: Hermit V1.3-armadillo-4 @18:09:13, Mar 26 2003 serial: completed 0x0025f6d1 (2488017) bytes. [armadillo ~]$
ユーザランドをフラッシュに書き込み終ったら、Armadilloをリーブトしてください。だたし、ブートログはシリアルインターフェース2に表示されるので、Armadillo側のシリアルケーブルをシリアルインターフェース2用のCON4に接続してください。
Doing console=ttyAM1,115200
ブートログから、カーネルオプションのconsoleにttyAM1が渡されていることが確認できます。
2. シリアルコンソールを使用しない。
つぎに、シリアルコンソールを使わない方法です。
2.1 ブートローダ
今回はloader-armadillo-notty.binを使用します。1.1と同じくHermitをFlashに書き込みます。
[armadillo ~]$ hermit download -i /usr/lib/hermit/loader-armadillo-notty.bin -a 0x0000000 --force-locked target: Hermit V1.3-armadillo-4 @18:09:13, Mar 26 2003 serial: completed 0x00005deb (24043) bytes. [armadillo ~]$
2.2 カーネル
カーネルの設定は、ブートローダが自動的に設定してくれるので必要ありません。
2.3 ユーザランドプログラム
respawnの行を今回はコメントアウトして、gettyが起動されないようにします。
::sysinit:/etc/rc.d/rc.sysinit <span class="input">#</span>::respawn:/sbin/getty -L 115200 ttyAM0 vt102 ::shutdown:/etc/rc.d/rc.reboot ::ctrlaltdel:/sbin/reboot
変更したユーザランドをフラッシュに書き込みブートしてください。
[armadillo ~]$ hermit download -i initrd-1.1.2.img.gz -a 0x180000 target: Hermit V1.3-armadillo-4 @18:09:13, Mar 26 2003 serial: completed 0x0025f6d1 (2488017) bytes. [armadillo ~]$
ユーザランドをフラッシュに書き込み終ったら、Armadilloをリーブトしてください。だたし、ブートログやログインプロンプトは一切表示されませんので、telnetでのログインのみとなります。
出荷時の設定では、telnetでのrootのログインは許可されていないので、guestでログインして確認します。
. Armadillo Linux V1.1.2 Linux 2.4.16-rmk2-armadillo-2 [armv4l arch] armadillo login: guest BusyBox v0.60.5 (2003.06.10-13:24+0000) Built-in shell (ash) Enter[PC ~]$ <span class="input">telnet 192.168.0.1</span> Trying telnet 192.168.0.1... Connected to telnet 192.168.0.1. Escape character is <code>^]help
for a list of built-in commands. [armadillo ~]$ su - Password: BusyBox v0.60.5 (2003.06.10-13:24+0000) Built-in shell (ash) Enter help for a list of built-in commands. [armadillo ~]# dmesg | head Processor: ARM ARM720T revision 2 Architecture: Armadillo On node 0 totalpages: 8192 zone(0): 8192 pages. zone(1): 0 pages. zone(2): 0 pages. Kernel command line: mem=32m console=null
最終行のように、consoleに nullが渡されています。
loader-armadillo-notty.binを書き込ん場合、hermitはシリアルポートから要求を受け付けません。このため、次にhermitを使ってカーネル等を書き込む場合、shoehornをboot romモードで使用しなければなりません。
Armadillo上のJP2を短絡させ、シリアルケーブルをシリアルインターフェース1に接続し以下のようにします。
[PC ~]$ shoehorn --boot --armadillo --initrd /dev/null \ --kernel /usr/lib/hermit/loader-armadillo-boot.bin --terminal
詳しくはソフトウエアマニュアルの「オンチップROM起動によるオンボードFlashへの書き込み」をご覧ください。