[systemd-devel] vconsole.conf, systemd-localed and the console keymap in the initrd

Hans de Goede hdegoede at redhat.com
Tue Jul 30 09:04:43 UTC 2019


Hi,

On 30-07-19 10:49, Hans de Goede wrote:
> 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 forgot to put a link to the issue for this here, for those who are
interested this is being tracked / discussed here:

https://github.com/fedora-silverblue/issue-tracker/issues/3

Regards,

Hans



> 
> 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