自内核 4.4.0-34 起,initramfs 中忽略键盘布局。如何使用非美国布局?

自内核 4.4.0-34 起,initramfs 中忽略键盘布局。如何使用非美国布局?

我在最新的 16.04 上使用德文键盘布局和 luks 加密硬盘。在安装最新的内核更新 4.4.0-34-generic 之前,我可以使用德文键盘布局输入 luks 密码,没有任何问题。现在,启动时 cryptsetup 的布局是 en_US,但之后就全是德文了(例如登录时)。

我仍然可以选择启动旧内核 4.4.0-31-generic 并在 cryptsetup 上使用德语键盘布局。

我尝试将“KEYMAP=y”添加到我的 /etc/initramfs-tools/initramfs.conf 并使用“sudo update-initramfs -u”重建我的 initramfs,但这没有帮助。

如何使用最新内核在 cryptsetup 上设置键盘布局?

答案1

KEYMAP=y是 Debian 独有的机制,因此只能在 Debian 中使用。它被传入/usr/share/initramfs-tools/hooks/keymap位于包中的位置initramfs-tools并生成稍后使用的/etc/boottime.kmap.gz

initramfs-tools在 Ubuntu 中提供了完全不同的钩子,它们不使用KEYMAP=y。但这些脚本总是尝试加载配置的本地键盘映射。 /usr/share/initramfs-tools/hooks/console_setup将现有的复制/etc/console-setup/cached.kmap.gz到小型 busybox 环境。稍后/usr/share/initramfs-tools/scripts/init-top/console_setup将加载此键盘映射。

顺便说一句,它似乎/usr/share/initramfs-tools/scripts/init-top/keymap也会尝试以相同的方式加载/etc/boottome.kmap.gz,但该文件不存在(以前曾使用过)。

但是/usr/share/initramfs-tools/hooks/console_setup不要生成/etc/console-setup/cached.kmap.gz,而要使用现有的,这与 Debian 不同。我认为生成必须正确执行一次,然后它应该再次工作,然后调用“update-initramfs -u”。

但是,我当时似乎无法正确完成。 成功的方法有点令人失望:我不得不重新安装整个操作系统。 确保在安装过程中选择了正确的键盘布局,并在安装过程之后但在启动新安装的系统之前在新系统的 chroot 环境中运行“update-initramfs -u”(顺便说一下,我测试过了。)

答案2

我在全新安装* Ubuntu 17.10

F.Raab 提供的这条信息被证明非常有用:

但是,与 Debian 不同,/usr/share/initramfs-tools/hooks/console_setup 不会生成 /etc/console-setup/cached.kmap.gz,而只是使用现有的文件。我认为生成过程必须正确执行一次,然后它应该再次运行,然后调用“update-initramfs -u”。

似乎文件/etc/console-setup/cached.kmap.gz丢失的在我的系统上,显然,负责的程序没有创建它。

脚步在我的系统上确实有效:

  1. cd /etc/console-setup
  2. 查找要用作模板的文件:(ls | grep kmap在当前文件夹中搜索包含“kmap”的文件名)。我选择cached_UTF-8_del.kmap.gz
  3. 创建模板文件的副本并将其命名为cached.kmap.gz:(sudo cp cached_UTF-8_del.kmap.gz cached.kmap.gz除了通过软件和更新启用的 NVIDIA 驱动程序和禁用 grub quiet splash,因为关机错误
  4. run sudo update-initramfs -usocached.kmap.gz可以集成到启动序列中。

(我通过在步骤 4 之前和之后运行并比较访问时间戳来测试cached.kmap.gzwhas 的使用情况。)stat cached.kmap.gz

重启后,cryptsetup 会以我喜欢的键盘布局接受我的 LUKS 密码,而不是 QUERTY。

(这意味着cached_UTF-8_del.kmap.gz已经包含了正确的布局。如果上述方法不适合您,您可以尝试使用以下命令之一将命令行上的键盘布局(英国英语)更改为美国英语或者https://apps.ubuntu.com/cat/applications/language-selector-gnome/

我在内核4.13.0-32-generic' (check usinguname -r')。升级内核可能会缓解此问题我也想这样做,但我不想这样做,因为我担心这会再次导致与 NVIDIA 驱动程序的冲突。(为什么我不得不离开 Fedora;几乎每次内核更新后,我的系统都会再次变得不稳定,而我没有技能和时间去解决这个问题。)

* 除了通过软件和更新启用 NVIDIA 驱动程序和禁用 grub quiet splash 之外,因为关机错误

相关内容