# # from: @(#)ttys 5.1 (Berkeley) 4/17/89 # $NetBSD: ttys,v 1.10.8.1 2000/08/12 18:01:48 mason Exp $ # # name getty type status comments # console "/usr/libexec/getty Pc" pc3 off secure ttyE0 "/usr/libexec/getty Pc" vt220 on secure ttyE1 "/usr/libexec/getty Pc" vt220 on secure ttyE2 "/usr/libexec/getty Pc" vt220 on secure ttyE3 "/usr/libexec/getty Pc" vt220 on secure tty00 "/usr/libexec/getty std.9600" unknown off secure tty01 "/usr/libexec/getty std.9600" unknown off secure tty02 "/usr/libexec/getty std.9600" unknown off secure tty03 "/usr/libexec/getty std.9600" unknown off secure tty04 "/usr/libexec/getty std.9600" unknown off secure tty05 "/usr/libexec/getty std.9600" unknown off secure tty06 "/usr/libexec/getty std.9600" unknown off secure tty07 "/usr/libexec/getty std.9600" unknown off secure ttyp0 none network 以下略NetBSD/i386のデフォルトでは、上のようになっているはずです。このうち、シリアルポートはtty00〜tty07までです。COM1ポートがtty00、COM2ポートがtty01です。とりあえず何かあった時のために別名でコピーするなりしてバックアップを作っておきます。
tty00 "/usr/libexec/getty std.9600" vt100 on secure localのように書き換えます。2番目の"/usr/libexec/getty std.9600"という部分ですが、std.xxxxの数字はシリアルポートのスピードを表します。上の場合は9600bpsになります。もっと速くしたいような場合には19200, 38400, 57600, ,115200などを書きます。詳しくはcom(4)を参照してください。うちでは57600bpsでつないでいます。
/etc/ttysを編集したら、ttyflagsコマンドを実行します。tty00をコンソールとして使いたい時は
ttyflags ttys00とします。そのあとに
kill -HUP 1とやって、initにHUPシグナルを送ります。ここまでできたら作業は一通りおしまいです。念のためpsコマンドでgettyがちゃんと起動しているかどうか確認しておきます。
[mira@algol mira]% ps ax
PID TT STAT TIME COMMAND
0 ?? DLs 0:00.02 (swapper)
1 ?? Is 0:00.02 init
2 ?? DL 0:00.00 (pagedaemon)
3 ?? DL 0:00.03 (reaper)
4 ?? DL 0:00.61 (ioflush)
省略
177 00 Is+ 0:00.02 /usr/libexec/getty std.57600 tty00
省略
上のように、gettyが/etc/ttysで指定したポート(tty00等)を見張っていればOKです。また、std.xxxxの数字が/etc/ttysで指定したものと同じであることを確認してください。問題ないようであれば、別なマシンから
cu -l /dev/cuaa0 -s 57600のようにやって接続します。ちなみに上の例はFreeBSDから接続する場合で、NetBSDの時はcuaa0ではなくて、dty00などを指定します。-sのあとの数字はシリアルポートの速さで、接続先のものと一致させます。Connectedと表示されたあとにEnterキーを1回たたくと

# This option allows you to force a serial console at the specified # I/O address. see console(4) for details. #options "CONSDEVNAME=\"com\"",CONADDR=0x2e8,CONSPEED=57600 # you don't want the option below ON iff you are using the # serial console option of the new boot strap code. #options CONS_OVERRIDE # Always use above! independent of boot infoという項目があります。GENERICではどちらもコメントになっているので、これを有効にします。気をつけて欲しいのは
options "CONSDEVNAME=\"com\"",CONADDR=0x3f8,CONSPEED=57600の部分です。大抵のPCのシリアルデバイスはcomとして認識されると思いますが、そうでない場合はCONSDEVNAMEを変更します。また、使いたいシリアルデバイスのハードウェアアドレスをCONADDRに指定します。これはdmesgをみればでていると思います。最後のCONSPEEDはシリアルポートの速度で、うちでは57600bpsを使っています。


# $NetBSD: Makefile,v 1.1 1999/07/11 01:23:53 kim Exp $ BASE= biosboot_com0 .include "../biosboot/Makefile"このままの状態でmakeすると、コンソールになるシリアルポートはCOM0で、通信速度は9600bpsになります。さっき、kernelを作る時に57600bpsにしたので、ブートプログラムもそれに合わせたほうがいいでしょう。biosboot_com0のMakefileは/usr/src/sys/arch/i386/stand/biosboot/Makefileを参照しているので、こちらを見てみると、
.if (${BASE} == "biosboot")
# Various serial line configurations
CPPFLAGS+= -DSUPPORT_SERIAL=CONSDEV_PC -DDIRECT_SERIAL
# or
#CPPFLAGS+= -DSUPPORT_SERIAL=CONSDEV_COM0KBD
# or
#CPPFLAGS+= -DSUPPORT_SERIAL=CONSDEV_AUTO
# and maybe
#CPPFLAGS+= -DDIRECT_SERIAL -DCOMCONS_KEYPRESS -DCONSPEED=57600
.endif
.if (${BASE} == "biosboot_com0")
CPPFLAGS+= -DSUPPORT_SERIAL=CONSDEV_COM0 -DDIRECT_SERIAL
.endif
のような部分があります。シリアルポートの速度は-DCONSPEED=xxxxというので設定します。なので、biosboot_com0のMakefileに以下のように書き足します(数字は各自の設定に合せます)。
CPPFLAGS+= -DCONSPEED=57600これで/usr/src/sys/arch/i386/stand/biosboot_com0でmake depend && make && make installとやってブートプログラムをmakeします。
で、次に作成したブートプログラムをHDDに書き込みます。make installをすると、biosboot_com0.symという名前で/usr/mdec以下にインストールされますが、これだけではだめです。
ブートプログラムを書き込むのはinstallbootというコマンドを使います。詳しい使い方はinstallboot(8)を参照して下さい。とりあえず以下のようにやればうまくいきます。
/usr/mdec/installboot /usr/mdec/biosboot_com0.sym /dev/rwd0aうちのNetBSDマシンはIDEのHDDなのでrwd0aですが、SCSIならrsd0aとでもやって下さい。 これでマシンをリブートしてみると...

これでシリアル経由でいろいろできるようになりましたが、やっぱりBIOSの設定とかはディスプレイやキーボードをつながないとできないので、Alphaマシンみたいにシリアルコンソールを使ってOSのインストールなどはできません…