[systemd-devel] vconsole.conf, systemd-localed and the console keymap in the initrd
Hans de Goede
hdegoede at redhat.com
Tue Jul 30 08:49:25 UTC 2019
Hi All,
When using full-disk encryption the console keymap is used in the
initrd to enter the disk-crypt password.
There are a couple of issues with this:
1) keymap changes do not become effective until a new kernel
(which generated a new initrd which includes the updated vconsole.conf)
gets installed:
https://bugzilla.redhat.com/show_bug.cgi?id=1405539
Note this one is part of:
https://fedoraproject.org/wiki/Fedora_Program_Management/Prioritized_bugs_and_issues
We could have the tools re-generate the existing initrds when the
keymap changes but that is not 100% bullet proof, if some bug has
snuck in which causes new initrds to not boot, then we've just
overwritten the older fallback initrds with ones which will also
not boot... Also in the future we want to move to using a single
generic pre-generated initrd everywhere and silverblue is already
doing this, which brings me to 2:
2) When using a generic initrd which does not include /etc/vconsole.conf
the keymap will also be "us" independent of what the system is
configured to use.
I believe that the best way to fix is this is probably to specify the
keymap on the kernel commandline using vconsole.keymap= on the kernel
commandline.
So 2 questions:
1) What is your (systemd devs) take on this, does using vconsole.keymap=
on the kernel commandline sound like the right solution, or do you have
other suggestions?
2) I wonder what will happen when runtime changing the keymap when
vconsole.keymap=foo is specified on the kernel commandline?
systemd-vconsole-setup will use the values on the kernel commandline
over those in /etc/vconsole.conf, and until we reboot those 2 will
no longer be in sync. systemd-vconsole-setup runs when a new vtconsole
gets added, but that should (normally) not happen after boot so that
is not a problem. But I wonder how systemd-localed applies changes
to the current vtconsole(s) does it do this itself, or does it use
systemd-vconsole-setup for this ?
I ask because if it uses systemd-vconsole-setup and that prefers the
kernel commandline value then the change will not happen until reboot.
Which I believe would be a regression compared to how things work now...
Regards,
Hans
More information about the systemd-devel
mailing list