问题来源
因为一些原因重装了主力机的系统,选择了 CachyOS(基于 Arch Linux 的衍生发行版),因为我是中国人而且中国人能飞(?),所以在安装时自然选择了中文,但在开机的时候 systemd 在屏幕上打印了这样两条报错:
[FAILED] Failed to start Virtual Console Setup.
[FAILED] Failed to start Virtual Console Setup.
于是我查看了启动日志:
journalctl -b -u systemd-vconsole-setup.service
随后发现日志中对应出现了两次:
loadkeys: Unable to open file: cn: No such file or directory
它们发生在 initramfs(早期启动环境)阶段。
修复问题
系统的 /etc/vconsole.conf 原本是:
KEYMAP=cn
XKBLAYOUT=cn
XKBMODEL=pc105
但系统提供的 Linux 虚拟终端键盘映射中没有 cn,所以我把第一行 KEYMAP=cn 改成了 KEYMAP=us:
KEYMAP=us
XKBLAYOUT=cn
XKBMODEL=pc105
这么做是因为 KEYMAP 控制的是 TTY 文字终端的按键布局,而不是中文输入法。普通美式排列键盘使用 us 即可,桌面中文输入由 Fcitx/Rime 负责。
因为错误发生在早期启动阶段,只改 /etc/vconsole.conf 还不够,启动镜像里仍然可能保存旧配置。因此执行了:
sudo mkinitcpio -P
成功更新了当前内核和 LTS 内核的 initramfs,这件事就此完结。
后续验证
确认新镜像中已经包含 us.map.gz,并执行:
sudo systemctl restart systemd-vconsole-setup.service
服务返回 status=0/SUCCESS。
发表回复