如何更改输入 sda_crypt 密码时使用的键盘布局?

如何更改输入 sda_crypt 密码时使用的键盘布局?

我目前正在使用 Ubuntu MATE 15.10。在设置 Ubuntu 时,我意外地选择了 Colemak 布局,而我想要的是 QWERTY 布局。现在,当我在启动时输入 sda_crypt 的密码(我相信这是我的 LUKS 加密密钥?)时,它会输入 Colemak。

我尝试从系统设置中更改我的默认布局,但这不会影响我在 sda_crypt 上使用的布局。

答案1

在 Ubuntu 18.04 机器上,我执行了以下操作:

dpkg-reconfigure keyboard-configuration

具有 root 权限。这会自动重新生成 initramfs,并且我能够使用新的键盘布局在下次启动时键入该键。

答案2

我认为我已经在 16.04 LTS 安装中基本解决了这个问题(除了反过来,试图逃离 QWERTY)。

由于提示符位于 GRUB 之后,但在加密的根分区可访问之前,因此我们知道布局选择嵌入在初始化内存文件系统(迷你文件系统在真正的根文件系统之前加载到内存中,包含加载真正的根文件系统所需的一切)。

initramfs 由 构建initramfs-tools,它是用于将内容复制到其中的大量脚本列表。看起来影响此问题的特定脚本是/usr/share/initramfs-tools/hooks/console_setup,它重复使用/etc/console-setup/cached.kmap.gz与普通串行/tty 控制台相同的脚本(我认为?)。

(如果有人能对此有任何澄清,我将不胜感激。运行dpkg -S那个“钩子”表明它来自keyboard-configuration包,这可能是一个线索。)

无论如何,控制台设置键盘布局来自/etc/default/keyboard,其中有一些变量分配。为了了解如何设置它,您可以从正常的 xkb 布局(这是“系统设置”更改的布局)中找出答案,方法是在终端中运行以下命令:

$ setxkbmap -print

xkb_keymap {
    xkb_keycodes  { include "evdev+aliases(qwerty)" };
    xkb_types     { include "complete+numpad(mac)" };
    xkb_compat    { include "complete" };
    xkb_symbols   { include "pc+us(dvorak)+inet(evdev)+capslock(backspace)+shift(both_capslock)" };
    xkb_geometry  { include "pc(pc105)" };
};

我的布局有点奇怪,但重要的是xkb_symbols ... us(dvorak)xkb_geometry ... pc(pc105)。由此我们得出以下/etc/default/keyboard变量:

$ sudo nano /etc/default/keyboard

XKBMODEL="pc105"
XKBLAYOUT="us"
XKBVARIANT="dvorak"
XKBOPTIONS=""
[...]

编辑完成后/etc/default/keyboard,您需要进行console-setup更新。我不知道该怎么做,所以我只是重新启动,这似乎有效。(实际上可能是因为我在这次重新启动之前已经完成了下一步,尽管这次没有成功。)

之后,只需运行sudo update-initramfs -u。它会显示“正在生成 /boot/initrd.img-{latest-kernel-version}”,并需要一些时间将一堆内容复制到新的 initramfs 映像中。之后,您下次重新启动时应该会在 dm-crypt 提示符中看到您想要的布局 :)。

总结:

  1. /etc/default/keyboard根据 的输出进行编辑setxkbmap -print
  2. 重新启动(或找出更新控制台设置的正确方法)。
  3. 跑步sudo update-initramfs -u
  4. 希望下次重启时能更加享受。

祝你好运,很抱歉现在才遇到同样的问题。也许再过 18 个月,遇到同样问题的人会告诉我进展如何?

相关内容