在 NetBSD 版本在 1.4 之前,使用者只有两种屏幕与键盘的驱动程序可选, pccons (只支援 i386)和 pcvt。 在 1.4 版以后,新的 wscons 平台驱动程序出现了,被用以取代两 个先前的驱动程序(仍然被支持。)
Wscons 是 NetBSD 新的终端机驱动程序。它提供虚拟的终端机,支持 多国语言的键盘,鼠标的处理,等等。wscons 的能力可依不同平台的 特性而有所改变(wscons 并不支持所有的平台):i386 版提供非常 多样性的特征。
在安装过程结束之后,wscons 被预设为启动而不需额外的工作。在 1.4 版,虚拟终端机并没有预设为执行:想要使用它们,请看 Chapter 4。其余的段落描述了 wscons 在核心设定文件中的 选项。
如果你编译了个人化的核心,要使用 wscons 你必须设定相关的选项并 并取消 pcvt 和 pccons 的选项(它们并不能同时被设定。)例如,
#pc0 at isa? port 0x60 irq 1 # pccons generic PC console driver #vt0 at isa? port 0x60 irq 1 # PCVT console driver
在核心设定档你也可以一个国外式的键盘。例如,使用意大利式键盘 成为默认值:
options PCKBD_LAYOUT="KB_IT"
Note: 意大利式键盘的配置并不是理想的写程序工具。要修改请看 Chapter 4。
预先配置的虚拟终端机数目被以下的选项所控制
options WSDISPLAY_DEFAULTSCREENS=4
藉由修改 /etc/wscons.conf 档中相关的设定, 可以增加其它的终端机:批注记号 (#) 必须从包含 "screen x" 的每一行的开头加以移除。在以下的例子中,是将第五个虚拟终端机 增加到预先配置的四个之后:
# screens to create # idx screen emul #screen 0 - vt100 screen 1 - vt100 screen 2 - vt100 screen 3 - vt100 screen 4 - - #screen 4 80x25bf vt100 #screen 5 80x50 vt100
rc.wscons script 将为被批注的每一行转送给 wsconscfg 指令:每一行都被当成参数使用。 idx 行变成 index 参数, screen 行变成 -t type 参数 (被用来定义屏幕的型态:行与列数,颜色数,...)而 emul 行变成 -e emul 参数, 用来定义终端机仿真。例如:
screen 3 - vt100
becomes a call to:
wsconscfg -e vt100 3
Note: 这可能会导致一个(无害的)冲突,在核心所预先配置的终端机和 经由 /etc/wscons.conf 所配置的终端机之间。 如果在开机时,系统尝试配置一个已经被配置的屏幕,则会出现以 讯息:
wsconscfg: WSDISPLAYIO_ADDSCREEN: Device busy解决方法就是在 /etc/wscons.conf 相关的 行中加上批注符号。
虚拟终端机必须也在 /etc/ttys 中 做相关的设定。例如:
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 off secure ...
这一行
ttyE3 "/usr/libexec/getty Pc" vt220 off secure
在 /etc/ttys 中是被 X server 用来寻找尚未 被使用的终端机的。要使用不同于号码 4 的屏幕, vtn 的参数必须传给 X server。 (n 是一个用来使屏幕能被 X 所使用的 关键数字。)
例如,"screen 7" 可以在 /etc/wscons.conf 中被设定而且 X 也能 从 "vt8" 中被启动。若使用 xdm 则必须编辑 /usr/X11R6/lib/X11/xdm/Xserver。 例如:
:0 local /usr/X11R6/bin/X +kb dpms -bpp 16 dpms vt8
对 xdm3d 而言,路径是不同的: /usr/X11R6/share/xdm3d/Xservers。
50 行的文字模式在 NetBSD 1.4.1 版时开始被使用。这个模式可以 在 /etc/wscons.conf 中设定。底下这行必 需移除批注:
font ibm - 8 ibm /usr/share/pcvt/fonts/vt220l.808
以下数行必须被修改:
#screen 0 80x50 vt100 screen 1 80x50 vt100 screen 2 80x50 vt100 screen 3 80x50 vt100 screen 4 80x50 vt100 screen 5 80x50 vt100 screen 6 80x50 vt100 screen 7 80x50 vt100
这个设定建立了八个屏幕,可以藉由组合键 Ctrl-Alt-Fn 来切换(在此 n 表示从 1 到 8);所使用的装置为 ttyE0..ttyE7。要使它们显示登入提示符号, /etc/ttys 必须修改:
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 ttyE4 "/usr/libexec/getty Pc" vt220 on secure ttyE5 "/usr/libexec/getty Pc" vt220 on secure ttyE6 "/usr/libexec/getty Pc" vt220 on secure ttyE7 "/usr/libexec/getty Pc" vt220 on secure
screen 0 的 80x25 的设定是不能被修改的,因为要保证我们 至少有一个工作屏幕。
这是一个在 i386 开机片中能找到的终端机驱动程序。它并不能提供 虚拟的终端机和设定的工具程序而没有讨论的空间。
Pcvt 是 VT220 终端机型态的仿真者而且比起简单的 pccons,有许多 进接的功能。它支持外国式的键盘和虚拟终端机(使用 Ctrl-Alt-F1..F8 或 F9..F12 功能键。)要设定 pcvt,底这几行必须 从核心设定档中移除批注。
# Enable only one of the following lines #pc0 at isa? port 0x60 irq 1 vt0 at isa? port 0x60 irq 1 # Options for PCVT console driver #options FAT_CURSOR options PCVT_NETBSD=132 options PCVT_NSCREENS=3
若要使用外国式键盘,你必须在开机时启动它;这也是修正终端机 的必要选项。例如:
/usr/local/bin/kcon -m i2 TERM=pcvt25; export TERM
/etc/ttys 必须做适当的修改。 例如:
#console "/usr/libexec/getty Pc" pcvt25 on secure ttyv0 "/usr/libexec/getty Pc" pcvt25 on secure
Pcvt 意大利式键盘: i2 键盘的定义并不正确而且 /sys/arch/i386/isa/pcvt/Util/keycap/keycap.src 也必须修改。有个在 NetBSD 1.3.3 测试过的设定。
i2|italy142|Italian 142 mapping:\ :A8={:A9=[:A10=]:A11=}:\ :A12=`:A13=~:\ :A17=@:A18=#:\ :tc=italy141:
要设定使用外国式键盘(以意大利式键盘为例)必须在开机时被加载, 以 /etc/rc.local 为例:
KCONP=/usr/local/bin SCONP=/usr/local/bin LDFNP=/usr/local/bin ISPCP=/usr/sbin CURSP=/usr/local/bin set_keybd=YES #------------------------------------------------------ # if desired, setup keyboard for italian keyboard layout #------------------------------------------------------ if [ X${set_keybd} = X"YES" -a -x $KCONP/kcon ] then echo echo 'switching to italian keyboard layout' $KCONP/kcon -m i2 fi echo '.'
/etc/ttys 必须被修改:
#console "/usr/libexec/getty Pc" pcvt25 on secure ttyv0 "/usr/libexec/getty Pc" pcvt25 on secure ttyv1 "/usr/libexec/getty Pc" pcvt25 on secure ttyv2 "/usr/libexec/getty Pc" pcvt25 on secure
pcvt 的工具程序必须被编译及安装。
cd /sys/arch/i386/isa/pcvt/Util make make install
使用 pcvt,你可以改变屏幕的行与列数。以下的 script 范例 可以被用来在两个不同的设定中,做切换的工作:
#!/bin/sh # Set the screen to # lines case $1 in 25) /usr/local/bin/scon -s 25 /usr/local/bin/cursor -s13 -e14 ;; 28) /usr/local/bin/loadfont -c1 -f /usr/share/misc/pcvtfonts/vt220l.814 /usr/local/bin/loadfont -c2 -f /usr/share/misc/pcvtfonts/vt220h.814 /usr/local/bin/scon -s 28 /usr/local/bin/cursor -s12 -e14 ;; 40) /usr/local/bin/loadfont -c3 -f /usr/share/misc/pcvtfonts/vt220l.810 /usr/local/bin/loadfont -c4 -f /usr/share/misc/pcvtfonts/vt220h.810 /usr/local/bin/scon -s 40 /usr/local/bin/cursor -s8 -e10 ;; 50) /usr/local/bin/loadfont -c5 -i /usr/share/misc/pcvtfonts/vt220l.808 /usr/local/bin/loadfont -c6 -i /usr/share/misc/pcvtfonts/vt220h.808 /usr/local/bin/scon -s 50 /usr/local/bin/cursor -s6 -e8 ;; *) echo "Invalid # of lines (25/28/40/50)" ;; esac