《NetBSD指南-8.1.1.wsdisplay》

NetBSD用户指南中文版、NetBSD pkgsrc指南中文版...

版主: lionux

主题已锁定
头像
leo
帖子: 2465
注册时间: 2010-01-21 3:27

《NetBSD指南-8.1.1.wsdisplay》

帖子 leo » 2010-03-02 15:09

这一小节将解释如何配置显示以及屏幕相关选项。

8.1.1.1. 虚拟控制台
预分配的虚拟控制台编号由下列选项控制

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 脚本将四个未注释的行转换成一个调用 wsconscfg 的命令: 这些列变成了调用的参数。 idx 列 变成了 index 参数, screen 列 变成了 -t type 参数 (用来定义屏幕类型: 行和列, 代表颜色的数字, ...) 和 emul 列 变成了 -e emul 参数, 它用来定义虚拟类型. 例如:

screen 3 - vt100
变成了一个对wsconscfg的调用:

wsconscfg -e vt100 3
请注意有必要在内核预分配的控制台和启动时通过 /etc/wscons.conf分配的控制台间有一个(无害的) 冲突. 如果启动时系统尝试给一个已经分配了的屏幕再进行分配, 将显示下列信息:

wsconscfg: WSDISPLAYIO_ADDSCREEN: Device busy
解决方式是注释掉 /etc/wscons.conf文件内的冲突行。

注意尽管有可能删除一个屏幕,然后在给它赋予一个新的设置, 从技术上说是可能, 但实际上不可能改变一个屏幕的设定。

screen 0 如果被用做系统控制台就不可能被删除。 也就是说不能在一个运行的系统上改变屏幕0设置

虚拟的控制台也必须在 /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 server后, 它将寻找一个没有 getty(8) 程序运行的虚拟控制台, 例如在/etc/ttys中一个控制台应该保持是"off" . 这行

ttyE3 "/usr/libexec/getty Pc" vt220 off secure
在 /etc/ttys 内是留给X使用的,也因上述原因。要使用一个非4号的屏幕,一个 vtn 形式的参数必须传递给 X 服务器server, 这里 n 是用来激活X屏幕的功能键编号。

例如, screen 7 可能在 /etc/wscons.conf 启用了,而 X 可以用 vt8启动。 如果你使用 xdm 你必须 编辑 /etc/X11/xdm/Xserver. 例如:

:0 local /usr/X11R6/bin/X +kb dpms -bpp 16 dpms vt8
对 xdm3d 来说路径是不同的: /usr/X11R6/share/xdm3d/Xservers.

8.1.1.1.1. 屏蔽信息 WSDISPLAYIO_ADDSCREEN: Device busy
这条错误信息经常出现在当wsconscfg企图尝试添加一个已经存在的屏幕是。 有时如果在/etc/wscons.conf 文件内有一行包含 screen 0 时也会出现这样的信息 , 因为内核总是指派 screen 0 作为控制台设备。 这种情况下这条错误信息并无不妥, 而且你可以通过删除(或注释掉)包含screen 0这行来屏蔽它。

8.1.1.2. wscons的50行文本模式
从NetBSD1.4.1开始,文本模式可以显示50行。此模式可以在/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
这个配置启用了8个屏幕, 它们可以通过组合键Ctrl-Alt-Fn (这里 n 是从1~8)来访问; 对应的设备为 ttyE0..ttyE7. 要激活它们并获得一个Login提示符必须修改 /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
在VGA显示设备中screen 0 作为系统控制台可以在启动时设定为另一种屏幕类型。 这是一个内核配置选项。 如果你选择了一个非80x25选项,你必须确保有一种可用的字体被编译到了内核里, 对80x50的分辨率来说这种字体是8x8的字体.

ATI显卡上可能会存在一个错误,它们不执行标准的VGA字体切换逻辑: 这些显卡需要其它内核选项才能使一个非标准的控制台字体正常显示。

这是一个设定内控制选项的例子:

options VGA_CONSOLE_SCREENTYPE="\"80x50\""
options VGA_CONSOLE_ATI_BROKEN_FONTSEL
options FONT_VT220L8x8
8.1.1.3. 启用 VESA 帧缓冲控制台
在许多架构中, 只有一种类型的屏幕模式: 一种图形帧缓冲模式。 在具有VGA显卡的机器上, 存在第二种模式: 字符模式。 这是一个为字符显示特殊优化的模式。 因此, 这也是显卡为典型的VGA卡(i386, amd64)架构中的标准内核的默认控制台模式。

但是, 你可以在带有VGA卡也支持VESA BIOS extension (VBS)的控制台上启用一个帧缓冲模式。 要启用对此模式的支持, 在内核配置文件中注释掉下面几行:

# VESA framebuffer console
options KVM86 # required for vesabios
vesabios* at vesabiosbus?
vesafb* at vesabios?
options VESAFB_WIDTH=640
options VESAFB_HEIGHT=480
options VESAFB_DEPTH=8
options VESAFB_PM # power management support
wsdisplay* at vesafb? console ?

如果你碰巧有一块VIA Unichrome capable 图形卡, 你可以启用下面的选项替代上面那些:

# VIA Unichrome framebuffer console
unichromefb* at pci? dev ? function ?
wsdisplay* at unichromefb?
8.1.1.4. 在控制台上启用滚屏
你可以通过将WSDISPLAY_SCROLLSUPPORT 选项加入到你的内核里并编译,这样可以在wscons控制台上启用屏幕回滚功能. 然而要确保你没有同时启用 VGA_RASTERCONSOLE选项! 参 Chapter 31, 编译内核 查阅有关构建内核的说明。

当你带有选项 WSDISPLAY_SCROLLSUPPORT的内核运行时, 你可以用左边的shift键+PAGE up/down来滚屏. 请注意在你的系统控制台上(ttyE0)不行!

8.1.1.5. Wscons and colors
8.1.1.5.1. 改变内核信息的颜色
你可以通过修改内核配置文件中的下列选项:

options WS_KERNEL_FG=WSCOL_xxx
options WS_KERNEL_BG=WSCOL_xxx
来改变内核信息的前后景颜色。这里的 WSCOL_xxx 颜色常量是在src/sys/dev/wscons/wsdisplayvar.h文件里定义的。

从NetBSD 3.0开始, 你可以轻松地定制你的显示外观的很多方面: 用来显示正常屏幕显示信息的颜色, 内核信息的颜色和屏幕便捷的颜色。

所有这些可以通过内核选项或 wsconsctl(8) 工具来改变; 如果你不想重新编译你的内核你可能喜欢后者, 因为在GENERIC中的默认选项能使系统工作在极好的状态.

下列选项可通过 wsconsctl(8)来设定:

border: 屏幕边框的颜色. 其对应的内核对应选项是 WSDISPLAY_BORDER_COLOR.

msg.default.attrs: 这个属性显示的正常控制台信息. 其对应的内核控制选项是 WS_DEFAULT_COLATTR 和 WS_DEFAULT_MONOATTR (前者用来显示彩色, 或者显示单色).

msg.default.bg: 背景颜色用来显示正常的控制台信息。其对应的内核选项是 WS_DEFAULT_BG.

msg.default.fg: 前景颜色用来显示正常的控制台信息. 其对应的内核选项是 WS_DEFAULT_FG.

msg.kernel.attrs: 这个属性用来显示内核信息和警告. 其对应的内核选项是 WS_KERNEL_COLATTR 和 WS_KERNEL_MONOATTR (前者用来显示彩色, 后者用来显示单色).

msg.kernel.bg: 背景颜色用来显示内核信息和警告. 其对应的内核选项是 WS_KERNEL_BG.

msg.kernel.fg: 前景颜色用来显示内核信息和警告. 其对应的内核选项是 WS_KERNEL_FG.

颜色的有效值是: black, red, green, brown, blue, magenta, cyan 和 white. 属性的有效值是以一个逗号分开的一个标签的清单, 可以是: reverse, hilit, blink 和/或 underline.

例如, 模拟一个老式的Amstrad机器的显示:

wsconsctl -d -w border=blue msg.default.bg=blue msg.default.fg=white msg.default.attrs=hilit
或者, 让你的内核信息显示为红色:

wsconsctl -d -w msg.kernel.fg=red
注意, 在老版本的NetBSD中, 只有一个这个功能的子集是有效的; 更具体地说, 你只能改变内核选项才可以改变内核信息的颜色, 像上面解释的一样. 还要注意的是并非所有的驱动才支持这样的特性, 所以你不可能在任何平台上全得到正确的结果。

8.1.1.5.2. 让应用程序在控制台上使用颜色
NetBSD使用 termcap 数据库来告诉应用程序目前终端的能力。例如, 有些终端不支持彩色, 有些不支持下划线(underlining) (例如,PC VGA 终端就不行 )等. TERM 环境变量告诉termcap 库文件终端的类型。 它然后为这些选项引用它的数据库.

TERM的默认设定可以通过在终端上输入echo $TERM进行检查。通常它可能像这样 vt220. 这种终端类型不支持彩色。 在一个典型的PC25行控制台上, 你可以将这个值更改为wsvt25 , 以获得彩色显示. 在C shell (csh) 中通过输入:

setenv TERM wsvt25
也可以得到彩色显示。
在 Bourne-兼容 shell (sh, ksh), 你可以输入:

export TERM=wsvt25
如果还不行, 你可以试试 ansi 终端类型, 它支持ANSI彩色代码。 但是, 使用这种终端类型其它的功能可能会丧失。 你可以参看一下 /usr/share/misc/termcap 文件,以便确认你能否为你的终端类型找到可用的匹配。

8.1.1.6. 导入替代的字体
有一些在/usr/share/wscons/fonts的字体可以被导入为控制台字体. 这可以通过 wsfontload(8) 命令完成, 例如: wsfontload -N ibm -h 8 -e ibm /usr/share/wscons/fonts/vt220l.808. 这个命令导入vt2201.808文件中的IBM-encoded (-e ibm)字体,它的高度为8个像素 (-h 8). 将其命名为IBM为以后做参考 (-N ibm).

要实际在控制台上显示这个字体使用命令 wsconsctl -dw font=ibm.

如果你想编辑一个字体, 你可以使用老的pcvt工具,它在 sysutils/pcvt-utils package.

主题已锁定

在线用户

正浏览此版面之用户: 没有注册用户 和 0 访客