<< Back to shouce.jb51.net

7.6. 配置 Linux 控制台

本节讨论如何配置 console 初始化脚本来设置键盘映射表和控制台字体。如果您不使用非 ASCII 字符(英镑和欧元符号就是非 ASCII 字符的例子),并且是美式键盘,可以跳过这一节,没有配置文件的话,console 初始化脚本不会做任何事情。

console 脚本使用 /etc/sysconfig/console 作为配置文件以决定使用什么键盘映射表和屏幕字体,各种特定语言的 HOWTO(参见 http://www.tldp.org/HOWTO/HOWTO-INDEX/other-lang.html) 能帮助您完成配置。LFS-Bootscripts 软件包安装了一个已为一些国家配置好了的预制的 /etc/sysconfig/console 文件,如果您所在的国家已经被支持了,您可以去掉相应部分的注释。如果您还有疑问,请在 /usr/share/kbd 目录下查找正确的键盘映射表和屏幕字体。 阅读 loadkeys(1)setfont(8) 的手册,来确定这些程序的正确参数。如果决定好了,用下面的命令创建配置文件:

cat >/etc/sysconfig/console <<"EOF"
KEYMAP="[loadkeys的参数]"
FONT="[setfont的参数]"
EOF

例如,西班牙语用户也会要使用欧元符号(可以按下 AltGr+E 来获得),下面的设置才是正确的:

cat >/etc/sysconfig/console <<"EOF"
KEYMAP="es euro2"
FONT="lat9-16 -u iso01"
EOF
[Note]

注意

仅在字符集是 ISO 8859-15 的时候上面的 FONT 行才是正确的,如果使用的是 ISO 8859-1 字符集,是磅字符而不是欧元符,正确的 FONT 行应当是:

FONT="lat1-16"

如果 KEYMAPFONT 变量没有设置,console 初始化脚本不会运行相应的程序。

在某些键盘映射表中,退格键和删除键发送的字符不同于内核内建的默认键盘映射表里的字符,这会让一些程序造成混淆。例如,当按下退格键的时候,Emacs 显示其帮助文件(而不是擦除光标前面的字符)。要检测所使用的键盘映射表是否有效(这个方法仅对 i386 键盘映射表有用),请输入:

zgrep '\W14\W' [/path/to/your/keymap]

如果键代码 14 是退格而不是删除,创建下面的键盘映射表片断来修正这个问题:

mkdir -pv /etc/kbd && cat > /etc/kbd/bs-sends-del <<"EOF"
                  keycode  14 = Delete Delete Delete Delete
              alt keycode  14 = Meta_Delete
        altgr alt keycode  14 = Meta_Delete
                  keycode 111 = Remove
    altgr control keycode 111 = Boot
      control alt keycode 111 = Boot
altgr control alt keycode 111 = Boot
EOF

console 脚本在加载主键盘映射表之后加载上面的这个片断:

cat >>/etc/sysconfig/console <<"EOF"
KEYMAP_CORRECTIONS="/etc/kbd/bs-sends-del"
EOF

如果您想将键盘映射表直接编译到内核里,而不是每次都用 console 启动脚本来设置,请按照 Section 8.3, "Linux-2.6.11.12." 里给出的指导来做,这样可以确保键盘总是按预期的工作,即使在启动到维护模式(通过给内核传递 init=/bin/sh 参数)的时候也可以工作,而这种情况下 console 启动脚本不会运行。另外,内核不会自动设置屏幕字体,这应该不会造成什么问题,因为 ASCII 字符会被正确的处理,而且用户在维护模式下不太可能会需要非 ASCII 字符。

因为内核会设置键盘映射表,这样就可以在 /etc/sysconfig/console 配置文件里省略 KEYMAP 变量。当然如果需要的话,您可以把它留在那里,不会有什么问题。保留这个变量可能还是有好处的,如果需要运行许多不同的内核的时候,很难保证每个内核都编入了所要的键盘映射表。