一次資料:
DDB関連のトピック以外はGENERICカーネルで使える。もし複数のシリアルポートを使い分けたり、通信速度を変更したい場合は上記一次資料を参考に設定ファイルの変更やカーネル再構築が必要となる。
とりあえずCOM1で9600bpsのままお手軽に出来ればオッケー、みたいなノリでメモ。
FreeBSD 6.0-RELEASE環境で、一番お手軽で準備不要なのはboot時に"-h"オプション付ける方法。
boot -h
起動時のカーネルメッセージが物理コンソールとシリアルポートの両方に出力される。
DDBが起動するときも、物理コンソールとシリアルの両方から使えるので便利。つまり、「うっかりシリアルポートに接続しないでpanicしちゃった」時も、物理コンソール側からDDBを制御できるので安心。もちろんシリアルポートに端末を接続してれば、そちらからもDDBを制御できるのでなお便利。
FreeBSD 6.0-RELEASEでは、GENERICカーネルのhintsで
hint.sio.0.flags="0x10"
が定義済み。あとは"-h"オプション使うなり、
set console="comconsole"
を/boot/loader.confに設定する or boot時のプロンプト上から直接設定するなりすればOK。
ただし、set console="comconsole" だと物理コンソールに起動時メッセージの出力とかDDBの制御が渡らなく
なってしまうので、うっかりシリアルポートに端末を接続するのを忘れたとき「ouch!!」ってなっちゃいそう。
ちなみにGENERICカーネルで"-h"によりシリアルポートに出力できるのは起動時のカーネルメッセージまで。DDBはGENERICカーネルでは当然使えない。
DDBも使おうと思ったらDDBオプション有効にしてカーネル再構築が必要。
"/boot"をマウントしたパーティションのルートディレクトリに、"boot.conf"という名前のファイルを作り、そこに
-h -D -P
のいずれかを書きこむ。"-h"だとシリアルポートにだけbootメニューやカーネルメッセージが出力される。"-D"ならシリアルポートと物理コンソールの両方からbootメニューが使えて、カーネルメッセージも出力される。"-P"だとキーボードの有無がチェックされる。
個人的には、キーボードがあろうとなかろうと、シリアルと物理、両方あれば両方使う、どちらか無ければ有るほうが使えれば良い、そういうケースが多いと思うので、"-D"が好み。
これらのオプションを二つ以上組み合わせたい場合の"boot.conf"は、
-D -P
のように分けても良いし、
-DP
のようにしても良い。
/etc/ttysファイルの "ttyd"(FreeBSD 8.0以降は"ttyu")端末のエントリを "off" から "on" に書き換える。
ttyd0 "/usr/libexec/getty std.9600" dialup off secure → ttyd0 "/usr/libexec/getty std.9600" dialup on secure
これでシリアルポート用のgettyがブート時に起動され、ログインプロンプトがシリアルコンソールに表示されログイン可能となる。