第29章 控制台设备 |
||
第V部分. 构建系统 |
||
内容列表
在1.4版本之前的NetBSD用户,需要在两个不同的驱动程序pccons(只支持i386)和pcvt之中,选择其中一个做为屏幕和键盘的驱动。在1.4版的NetBSD中,新的多平台驱动程序wscons出现了,它取代了先前的两种驱动程序。可是由于pccons使用的资源非常少,所以在安装软盘中它得以保留下来。
wscons是NetBSD的标准控制台驱动。它为i386平台提供虚拟终端,为多国语言键盘提供支持,以及鼠标的管理等等。wscons的能力由于体系平台的不同而不同,比如在i386体系,就有非常丰富的特征。
虚拟控制台的预先分配数量,是由下面的内核选项控制的
options WSDISPLAY_DEFAULTSCREENS=4
通过在文件 /etc/wscons.conf 中启用相关行,可以添加其他的控制台:删除掉以"screen x"开始的行之前的注视符(#)。在下面的例子中,预先分配的4个控制台之后,第5个控制台被添加。
# 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脚本,使用每一个没有注释的行来调用wsconscfg命令:行的每一列都成为wsconscfg命令的参数。"idx"列成为index参数,"screen"列成为-t type参数(该参数定义屏幕的类型:行、列、颜色数量,...),"emul"列成为-e emul参数(该参数定义控制台模拟)。例如:
screen 3 - vt100
将调用下面命令
wsconscfg -e vt100 3
注意:在内核预先分配的控制台与启动期间通过/etc/wscons.conf分配的控制台之间,可能会产生冲突(当然是无害的)。如果在系统启动期间,系统尝试去分配一个已经分配了的屏幕,下面的消息就会被打印出来:
wsconscfg: WSDISPLAYIO_ADDSCREEN: Device busy
解决办法是在/etc/wscons.conf中为产生冲突的行加上注释符号。
虚拟控制台在/etc/ttys中也必须设置为有效,因为NetBSD运行getty(8)请求登陆注册。例如:
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
...当启动X服务器的时候,该服务器会查找一个没有运行getty(8)的虚拟控制台,例如,在/etc/ttys文件中保留"off"的那些控制台。文件 /etc/ttys中的一行:
ttyE3 "/usr/libexec/getty Pc" vt220 off secure
就是用来为X服务器提供这样的更能。为了使用不同于号码 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。
自
确保下面的行必须没有被注释:
font ibm?-? 8?ibm?/usr/share/pcvt/fonts/vt
接着修改下面的行:
#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
这个配置允许8个屏幕,这些屏幕依次与组合键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的显示模式,也许是为了保证在发生问题的时候总有一个可以工作的屏幕。
wscons允许设置键盘映射,将不同国家的键盘中的每一个按键,映射为正确的字母。例如,为了设置意大利键盘的键盘映射,运行:
# wsconsctl -k -w encoding=it
encoding -> it
直到重新启动之前,这个设置都会起作用。为了让这个设置一直起作用,可以在/etc/wscons.conf添加一个"encoding"行:在下一次启动的时候会自动起作用。
# cp /etc/wscons.conf /etc/wscons.conf.orig
# echo encoding it >>/etc/wscons.conf
请仔细的输入两个">"符。如果你只输入了一个">",这个文件将会被覆盖而不是添加行。这也是我们为什么要在涉及到核心文件操作的时候保留备份的原因!
全部的键盘映射的列表可以在 /usr/src/sys/dev/wscons/wsksymdef.h 中找到:
在wscons中,可以用一个鼠标键标记(剪切)文本,然后用另外一个鼠标键插入(粘贴)。为了启用wscons里的剪切与粘贴功能,你首先需要在内核里添加对它的支持(缺省时是禁止的)。为使用该功能,启用下面的内核选项:
options WSDISPLAY_CHARFUNCS # mouse console support
需要小心的是,当 VGA_RASTERCONSOLE 选项也被启用的时候,该选项不会起作用。获得更多的关于编译内核的知识,请参见28章《编译内核》。
内核编译之后,在 /etc/rc.conf 中启用"wsmoused",然后启动它:
# echo wsmoused=yes >>/etc/rc.conf
# sh /etc/rc.d/wsmoused start
执行了上面的步骤之后,你就可以使用鼠标左键标记文本,然后使用鼠标右键粘贴它们。参见wsmoused(8)的man手册来调节其性能。手册里同样也描述了配置文件 wsmoused.conf(5) 的格式。该配置文件的一个例子可以在 /usr/share/examples/wsmoused 找到。
启用内核配置中的 WSDISPLAY_SCROLLSUPPORT 选项可以使你在wscons控制台中滚动屏幕。请确定在同一时间 VGA_RASTERCONSOLE 选项为禁止的!如果需要获得编译内核的方法,请参见28章《编译内核》。
当你编译了支持 WSDISPLAY_SCROLLSUPPORT 选项的内核之后,你就可以同时按下左shift键 + PAGE UP/DOWN键向上/下滚动屏幕。注意,这可能不会在你的系统屏幕中工作(ttyE0)!
pccons控制台驱动器即不提供虚拟控制台,也不提供配置它的实用程序,但是它只占用非常小的空间。由于这个原因,在i386的安装软盘上还是可以找到它。
为了启用它,将下面的行添加到你的内核配置文件中:
pc0 at isa? port 0x60 irq 1 # pccons generic PC console driver
你也可以设置下面许多选项中的一个来编译一个非英语键盘的映射。
# Keyboard layout configuration for pccons
#options ?FRENCH_KBD
#options ?FINNISH_KBD
#options ?GERMAN_KBD
#options ?NORWEGIAN_KBD
删除行前的注释符来启用相应的键盘映射,然后编译内核(参考第28章《编译内核》)。
一般来说,你不需要pccons,wscons就可以满足你所有的需求。
第28章 编译内核 |
第30章 包集合 |