Setting a GRUB keyboard-layout breaks GRUB… and Linux?

  • Open
  • quality assurance status badge
Details
2 participants
  • Ludovic Courtès
  • Tobias Geerinckx-Rice
Owner
unassigned
Submitted by
Tobias Geerinckx-Rice
Severity
normal
T
T
Tobias Geerinckx-Rice wrote on 5 May 2019 18:27
(name . Bug guix)(address . bug-guix@gnu.org)
87tve89898.fsf@nckx
Guix,

Some (=none) of you might remember my X keyboard woes on #guix,
where I was stuck without a backspace key or the key below it (\,
|) on my ThinkPad X230T's US keyboard. Both sent out
‘XF86ScreenSaver’ codes instead.

I tried dozens of things, both in my system configuration and by
running random stateful xkb commands (naughty), and managed to
‘fix’ the bug without ever finding the cause (very naughty).

I think I was looking for it in all the wrong places. Something
goes wrong before the kernel even boots. Here's my
keyboard-layout:

(keyboard-layout
(keyboard-layout
"us" "dvp" ;
kaufmann.no/roland/dvorak
#:model "thinkpad" ; pc104, pc105, thinkpad,
#:options ; list of XKB Option
strings
(list "" ; unset all inherited
options
"caps:shiftlock" ; Shift Lock affects all
keys
"shift:breaks_caps" ; Shift cancels Caps Lock
"compose:102" ; next to left Shift on
pc105
"lv3:ralt_switch" ; key to choose 3rd level
"nbsp:level3n" ; nbsp @lv3, thin nbsp
@lv4
"numpad:shift3" ; Num Lock: Shift chooses
lv3
"kpdl:semi" ; key pad semicolon @lv3
"misc:typo" ; add extra typographic
chars
"ctrl:swapcaps" ; onwards for great Emacs
"terminate:ctrl_alt_bksp"))) ; zap X just to watch it
die

Here's what works just fine:

(service slim-service-type
(slim-configuration
(xorg-configuration
(xorg-configuration
(keyboard-layout keyboard-layout)

However, today I tried to (re-)add it to GRUB, too, and ended up
writing the following comment:

(bootloader
(bootloader-configuration
(bootloader grub-efi-bootloader)
;; XXX Strange bug: GRUB can read the LUKS passphrase, but
afterwards (at
;; the menu screen) no longer responds to key presses. Even
stranger: it
;; makes my X230T's backspace key send ‘XF86ScreenSaver’s even
on Linux.
;; (keyboard-layout keyboard-layout)
(target "/boot/efi")
(timeout 1))))

This is 100% reproducible.

I'll try to narrow it down a bit, but the combination of losing my
actual work-workstation (which is also my funstation) while
entering my passphrase 5 times, every time, makes that an
unpleasant and tedious affair.

Kind regards,

T G-R
-----BEGIN PGP SIGNATURE-----

iHUEARYKAB0WIQT12iAyS4c9C3o4dnINsP+IT1VteQUCXM8O8wAKCRANsP+IT1Vt
eYmSAP4rXKc9voPyuNiA9NLtt2DL62q1y6ySXB7CLb4uvSeTkgD+Poe0/skMRf1o
rC/MXJ4mlXms0yjgFUtU7cYpQfVY5A4=
=huNA
-----END PGP SIGNATURE-----

L
L
Ludovic Courtès wrote on 6 May 2019 11:39
Re: bug#35583: Setting a GRUB keyboard-layout breaks GR UB… and Linux?
(name . Tobias Geerinckx-Rice)(address . me@tobias.gr)(address . 35583@debbugs.gnu.org)
87a7fzly5d.fsf@gnu.org
Hi Tobias,

Tobias Geerinckx-Rice <me@tobias.gr> skribis:

Toggle quote (18 lines)
> However, today I tried to (re-)add it to GRUB, too, and ended up
> writing the following comment:
>
> (bootloader
> (bootloader-configuration
> (bootloader grub-efi-bootloader)
> ;; XXX Strange bug: GRUB can read the LUKS passphrase, but
> afterwards (at
> ;; the menu screen) no longer responds to key presses. Even
> stranger: it
> ;; makes my X230T's backspace key send ‘XF86ScreenSaver’s even on
> Linux.
> ;; (keyboard-layout keyboard-layout)
> (target "/boot/efi")
> (timeout 1))))
>
> This is 100% reproducible.

Even in ‘guix system vm --full-boot’, right?

It could be that the XKB → GRUB conversion fails. You can see
conversion process in (gnu bootloader grub). In that case, that would
be a ‘grub-mklayout’ or a ‘ckbcomp’ bug.

I’ve only tested this stuff with standard keyboard layouts with one or
two options at most, so it may be that you’re pushing it to its limits.

I’m surprised what GRUB does has an impact on what Linux does
afterwards, though.

Thanks,
Ludo’.
?