我目前正在使用 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 提示符中看到您想要的布局 :)。
总结:
/etc/default/keyboard
根据 的输出进行编辑setxkbmap -print
。- 重新启动(或找出更新控制台设置的正确方法)。
- 跑步
sudo update-initramfs -u
。 - 希望下次重启时能更加享受。
祝你好运,很抱歉现在才遇到同样的问题。也许再过 18 个月,遇到同样问题的人会告诉我进展如何?