OpenSuSE 12.3 kbd 服务在启动时失败

OpenSuSE 12.3 kbd 服务在启动时失败

安装 OpenSuSE 12.3(但从 11.2 升级)时显示此消息

...
Starting Firewall Initialization (phase 2 of 2)                        done
Master Resource Control: runlevel 3 has been                           reached
Failed services in runlevel 3:                                         kbd
Skipped services in runlevel 3:                               irq_balancer

Welcome to openSUSE 12.3 "Dartmouth" - Kernel 2.6.31.14-0.8-desktop (tty1).

brontolo login: _

并将其键盘保留为默认的美国布局。由于我有一个 IT 键盘和一个包含国际字符的密码,我无法再从控制台登录,而必须使用 SSH。一旦从远程运行loadkeystty1控制台就变得可登录,但情况相当尴尬。

有人遇到过这种情况吗?键盘实际上工作- 尽管是在美国。我能看到的唯一问题是键盘映射未加载。这项kbd服务以前从未让我失望过(而且这不是让我询问的那台键盘挑剔的机器这个问题)。

答案1

原因原来是处理 标志时出现错误-Cloadkey手册loadkeys页报告(结果正确)

You can specify console device by the -C (or --console ) option

但那是设备, 不是设备. 在/etc/sysconfig/keyboard文件中,KBD_TTY变量保留

KBD_TTY="tty1 tty2 tty3 tty4 tty5 tty6"

并且这在/etc/init.d/kbd文件中会导致错误:

Couldn't open tty tty2 tty3 ...

所以解决办法是修改/etc/init.d/kbd文件,

--- loadkeys -C "$KBD_TTY" ...

+++ for tty in $KBD_TTY; do
+++     loadkeys -C $tty ...
+++ done

(这种代码总共出现在四处地方)。

这种差异loadkeys显然是在另一个发行版(?) 在2011年。

在 Novell 的 OpenSuSE BugZilla 数据库中搜索“loadkeys”没有结果,所以我只是输入它作为错误 813902。我推断,即使这个错误在正常安装中没有出现,调用的那些行loadkeys仍然是错误的。即使是因为我错了,loadkeys或者kbd由于不常见的安装/升级路径,这仍然是更新脚本中存在错误的症状。

相关内容