仮想端末サブシステムは、Solaris x86 のドキュメントが無く、サポートもさ れていない機能です。したがって、仮想端末の利用は 読者の皆さん自身の責任において行ってください。
Solaris の仮想端末は基本的に、Intel ベースの SVR4 仮想端末サブシステム とほぼ同様に動作します。しかし、以下に述べるようないくつかの制限があり ます。
まず最初に、Solaris 2.4 x86 システムで仮想端末を使う場合、必要なデバイ スを作成する必要があります。これは root になって行います。
まず chanmux デバイスのメジャー番号が 100 であることを確かめます:
# grep -i chanmux /etc/name_to_major
chanmux 100
#
`chanmux' の後の数字が 100 以外であれば、仮想端末を作ろうとするのは即
刻止めて、仮想端末なしでやって行く方法を考えることをお勧めします。
この数字が 100 であれば、root ユーザで以下のコマンドを実行し、利用可能 な最大の数の仮想端末を作成します。
# cd /dev
# mknod vt01 c 100 1
# mknod vt02 c 100 2
# mknod vt03 c 100 3
# mknod vt04 c 100 4
# mknod vt05 c 100 5
# mknod vt06 c 100 6
# mknod vt07 c 100 7
再設定のための起動は必要はありません。
次に、Solaris x86 のバージョン 2.1, 2.4 どちらのシステムの場合も、次
の行を inittab
に追加して、仮想端末からログインできるようにします。
(注意: ここで間違ってはいけません。システムにログインで きなくなってしまうかもしれません。)
--------------------->ここから切り取る<----------------------------------------------- v1:234:respawn:/usr/lib/saf/ttymon -g -h -p "`uname -n` VT01 login: " -T AT386 -d /dev/vt01 -l console v2:234:respawn:/usr/lib/saf/ttymon -g -h -p "`uname -n` VT02 login: " -T AT386 -d /dev/vt02 -l console v3:234:respawn:/usr/lib/saf/ttymon -g -h -p "`uname -n` VT03 login: " -T AT386 -d /dev/vt03 -l console v4:234:respawn:/usr/lib/saf/ttymon -g -h -p "`uname -n` VT04 login: " -T AT386 -d /dev/vt04 -l console ---------------------->ここまで<-----------------------------------------------この行を設定すると、Alt-SysReq-F1 から Alt-SysReq-F4 までのキーを使っ て 4 つの仮想端末を有効にすることができます。
それからコマンド 'init q
' を実行し、仮想端末をすぐに有効にし
ます。
仮想端末の切り替えに使うキーは以下のようになります:
仮想端末を使っている場合、X サーバが使うための空きの仮想端末を少なくと も 1 つ残しておかなければなりません。Alt-SysReq-F1
からAlt-SysReq-F7
でそれぞれ 仮想端末 1〜7 が有効になります(仮想端末がアクティブな場合)。
Alt-SysReq-n
で次のアクティブな仮想端末の画面が有効に なります。
Alt-SysReq-p
で前のアクティブな仮想端末の画面が有効に なります。
Alt-SysReq-h
でコンソールに戻ります。
Solaris x86 における仮想端末サブシステムの制限を以下に示します:
通常の 15 個ではなく、合計 8 個の仮想端末(通常の仮想端末 7個 + コンソー ル 1 つ)しか使えません。8 個全てを割り当てた状態で追加の仮想端末を割り 当てようとすると、システムがパニックしてしまいます。(このバグは Solaris 用 XFree86 の X サーバでは回避されています。)
プログラミングの立場から言えば、仮想端末サブシステムはほぼ
「AT&T Unix System V/386 Release 4 Integrated Software Development Guide」
に書かれているように動くのですが、ioctl()
の多くが壊れていま
す。