安装 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。一旦从远程运行loadkeys
,tty1
控制台就变得可登录,但情况相当尴尬。
有人遇到过这种情况吗?键盘实际上工作- 尽管是在美国。我能看到的唯一问题是键盘映射未加载。这项kbd
服务以前从未让我失望过(而且这不是让我询问的那台键盘挑剔的机器这个问题)。
答案1
原因原来是处理 标志时出现错误-C
。loadkey
手册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
由于不常见的安装/升级路径,这仍然是更新脚本中存在错误的症状。