出荷時の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でログインして確認します。
[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>^]</code>.
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 <code>help</code> 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への書き込み」をご覧ください。