Bug 432369

Summary: kbd fails to start when there are >2 keymaps, blocking textmode login
Product: [openSUSE] openSUSE 11.1 Reporter: Forgotten User OIWrdPIkbR <forgotten_OIWrdPIkbR>
Component: OtherAssignee: Michal Marek <mmarek>
Status: RESOLVED FIXED QA Contact: E-mail List <qa-bugs>
Severity: Major    
Priority: P2 - High CC: forgotten_XG9X5w8kVa
Version: Factory   
Target Milestone: ---   
Hardware: Other   
OS: openSUSE 11.0   
Whiteboard:
Found By: --- Services Priority:
Business Priority: Blocker: ---
Marketing QA Status: --- IT Deployment: ---
Attachments: /etc/sysconfig/keyboard
updated kbd init script

Description Forgotten User OIWrdPIkbR 2008-10-05 00:37:33 UTC
During boot, kbd shows the following message:


Loading console font lat9w-16.psfu  -m trivial G0:loadable         [done]
Found more than one keymap es
Using .
If you want another one, please add complete path to
KEYTABLE in /etc/sysconfig/keyboard.



To continue you have to write something and press Enter (it was not obvious from the message). If you fail to do so, the booting process cannot continue, and if you are in textmode you can't login (!). Once you have entered something, this text is displayed:



Loading keymap (null):1: syntax error
syntax error in map file
key bindings not changed                               [failed]
Loading compose table winkeys shiftctrl latin1.add     [done]
Start Unicode mode                                     [done]




And finally you can login, but "us" keyboard is used.

The command "find / -name es.map.gz" shows two keymaps in the system:
/usr/share/kbd/keymaps/i386/olpc/es.map.gz
/usr/share/kbd/keymaps/i386/qwerty/es.map.gz

To get kbd starting properly I edited the file "/etc/sysconfig/keyboard", changing the variable KEYTABLE from "es.map.gz" to "/usr/share/kbd/keymaps/i386/qwerty/es.map.gz".
Comment 1 Forgotten User XG9X5w8kVa 2008-10-10 18:06:56 UTC
Created attachment 244934 [details]
/etc/sysconfig/keyboard
Comment 2 Forgotten User XG9X5w8kVa 2008-10-10 18:11:56 UTC
Confirmed.
It fails at the line 358 that shows as "loadkeys -C '/dev/tty1 /dev/tty2
/dev/tty3 /dev/tty4 /dev/tty5 /dev/tty6", blocking until CTRL-D is pressed.
It fails because $KEYMAP is empty for some reason, and loadkeys expect input
from stdio then.
Comment 3 Michal Marek 2008-10-14 08:57:46 UTC
Created attachment 245331 [details]
updated kbd init script

This should fix the bug in the init script. Note however that with KEYTABLE="es" it will load the olpc keymap, because "olpc" sorts before "qwerty". Setting KEYTABLE="qwerty/es' in /etc/sysconfig/keyboard should load the desired keymap (will file a YaST bug for that).
Comment 4 Michal Marek 2008-10-14 08:58:18 UTC
.
Comment 5 Forgotten User OIWrdPIkbR 2008-10-23 13:51:59 UTC
Bug is still present on Beta3.

There is one line that changed though:
Loading compose table winkeys shiftctrl latin1.add     [done]
now is 
Loading compose table latin1.add     [done]


But the error is still present. 
Comment 6 Michal Marek 2008-10-23 14:18:59 UTC
Sorry, the fix didn't make it into Beta3. Watch for a kbd with this changelog entry:

- fix case when multiple keymaps are found (bnc#259694)
- allow to specify a path such as 'i386/es.map.gz' in KEYTABLE