Phase One

BSD/OSの仮想コンソール(Virtual Console)を 16個に拡張する。

BSD/OSでは、遥かγ(0.9)の昔から仮想コンソールは8個のまま、 変わっていませんでした。 どんなハードウェアでもトラブらずに動かなければならない、 まっとうなOSとしては当然の動作ですが、 最近の現状にはそぐわなくなっています。

そこで、VGAを使用している場合は、 仮想コンソールを16個にまで増やせるような(簡単な:-)パッチを作成しました。 このパッチは、VGA/Keyboardドライバであるpccons.cを変更します。

このパッチを ここから 取得したら、以下の手順でカーネルの再攻勢などを行なってください。

  1. パッチを当てる。
    まずrootになってから、カーネルのソー スを展開してあるディレクトリに移動します。 このディレクトリは普通なら/usr/src/sys/i386/isa/のはずです。 次に取ってきたパッチを当てます。
    もし、ソースライセンスがなくてパッチを当てることができないなら、 パッチと 同じところに コンパイル済みのpccons.oがありますから、それを使用してください。 BSD/OS 3.X用に、gcc1とgcc2の二種類でコンパイルしたものを置いてあります。 通常はgcc1のものを使用してください。 gcc2のものはカーネル構成をgcc2で行うように設定した方だけが使用して下さい。
    BSD/OS 2.xとBSD/OS 4.xは現時点でコンパイルできる環境がないので、 ここには置いてありません。BSD/OS 4.xのものについては将来置く予定です。
    # patch - < パッチファイル
    
    としてください。
    The text leading up to this was:
    --------------------------
    |*** pccons.c   1999/08/12 07:03:27     1.1
    |--- pccons.c   1999/08/13 02:16:59
    --------------------------
    Patching file pccons.c using Plan A...
    Hunk #1 succeeded at 88.
    Hunk #2 succeeded at 159.
    Hunk #3 succeeded at 222.
    Hunk #4 succeeded at 479.
    Hunk #5 succeeded at 500.
    Hunk #6 succeeded at 1354 (offset 11 lines).
    Hunk #7 succeeded at 2312 (offset 8 lines).
    done
    
    のようにパッチが当たるはずです。もしエラーが出たら、 pccons.c.rejというファイルができているはずですから、 その中身を見て対処してください。

  2. カーネルをコンパイルし直す。
    /usr/src/sys/i386/conf/に移動して、 カーネルのリコンフィグを行ないます。 もしカーネルをコンフィグしたことがないなら、 そのやり方についてはマニュアルを見てください。 コンフィグファイルの中のpcconsの行を変更します。
    pccons0 at isa? port "IO_KBD" flags 0x02
    
    のように"flags 0x02"を追加します。 この追加によってVGAビデオカードを使用していることを、 カーネルに指示します。 もし、あなたがIBM ThinkPad 700シリーズを使用していて、 すでに"flags 0x01"となっているときは、 "0x02"を"0x03"としてください。
    [注: /etc/boot.defaultを変更することで、 カーネルを再構成しなくても"flags"の値を変更することができます。]
    カーネルをコンフィグしたら、 /usr/src/sys/compile/コンフィグ名/に移動して、 カーネルをコンパイルし直してください。
    # cd ../../compile/コンフィグ名
    # make depend
    # make
    
    これでカーネルができあがりましたから、
    # mv /bsd /bsd.vt8
    # cp bsd /
    
    としてカーネルをルートディレクトリにコピーします。 念のため、前のカーネルを残しておきましょう。

  3. デバイスファイルを作成する
    この時点で仮想コンソールのデバイスファイルは8個分しかありません。 追加した八個分のデバイスファイルを作成します。
    # cd /dev
    # mknod ttyc9 c 12 0 8
    # mknod ttyc10 c 12 0 9
    # mknod ttyc11 c 12 0 10
    # mknod ttyc12 c 12 0 11
    # mknod ttyc13 c 12 0 12
    # mknod ttyc14 c 12 0 13
    # mknod ttyc15 c 12 0 14
    # mknod ttyc16 c 12 0 15
    
    デバイスのメジャー/ユニット/サブユニット番号は、BSD/OS 2.0以降のものです。 1.X以前のものでは、たぶん違うはずです (古いものは手元では走っていないので未確認ですが、記憶はそういっています)。

  4. /etc/ttysにエントリーを追加する
    /etc/ttysにエントリーを追加します。 こうしないとgetty/gettydがこれを扱えません。 以下の行を"ttyc7"のエントリーの直後に追加してください。
    ttyc8   "/usr/libexec/getty pccons"     ibmpc3  off secure
    ttyc9   "/usr/libexec/getty pccons"     ibmpc3  off secure
    ttyc10  "/usr/libexec/getty pccons"     ibmpc3  off secure
    ttyc11  "/usr/libexec/getty pccons"     ibmpc3  off secure
    ttyc12  "/usr/libexec/getty pccons"     ibmpc3  off secure
    ttyc13  "/usr/libexec/getty pccons"     ibmpc3  off secure
    ttyc14  "/usr/libexec/getty pccons"     ibmpc3  off secure
    ttyc15  "/usr/libexec/getty pccons"     ibmpc3  off secure
    ttyc16  "/usr/libexec/getty pccons"     ibmpc3  off secure
    
    getty/gettydを通じて使用するものについては、offをonに変更してください。

  5. /etc/boot.defaultを変更する。
    カーネルを再構成せずにビデオカードの指定を変更する場合は、 /etc/boot.defaltを変更します。
    -dev pccons flags=0x02
    
    という行を追加することで、ビデオカードがVGAであることを指定します。 逆に、
    -dev pccons flags=0x0
    
    とすることで、標準の状態(仮想コンソールが八個)に戻ります。

    2

  6. 再起動する
    rebootなりshutdownなりで再起動してください。 これで16個の仮想コンソールを使用できるようになります。


ホームページへ戻る
webmaster@phaseone.co.jp ;