非交互地更改控制台字体的正确方法是什么?
我有一个 HiDPI 显示器,需要更大的控制台字体。我可以使用以下方式以交互方式进行设置:
$ sudo dpkg-reconfigure console-setup
# Select UTF-8 -> Guess -> Terminus -> 16x32
update-initramfs: deferring update (trigger activated)
Processing triggers for initramfs-tools (0.130ubuntu3.5) ...
update-initramfs: Generating /boot/initrd.img-4.15.0-43-generic
但是,如果我尝试以非交互方式进行设置,如下所示:
$ sudo debconf-set-selections <<EOF
console-setup console-setup/charmap47 select UTF-8
console-setup console-setup/codeset47 select Guess optimal character set
console-setup console-setup/codesetcode string guess
console-setup console-setup/fontface47 select Terminus
console-setup console-setup/fontsize string 16x32
console-setup console-setup/fontsize-fb47 select 16x32 (framebuffer only)
console-setup console-setup/fontsize-text47 select 16x32 (framebuffer only)
EOF
这不起作用。运行setupcon
没有效果。如果我检查/etc/default/console-setup
,我会看到字体信息在运行时更新dpkg-reconfigure
,并且dpkg-reconfigure
还会触发update-initramfs
,因此似乎发生了更多的事情,dpkg-reconfigure
而我的debconf-set-selections
没有触发。我如何找到这些操作并在我的之后触发它们debconf-set-selections
?
答案1
您需要在 /etc/default/console-setup 文件中执行此操作,假设我们要使用 Terminus 16x32 字体,则命令为:
sudo sed -i '/^FONTFACE/s/^/#/' /etc/default/console-setup # comment out the old value
sudo sed -i '/^FONTSIZE/s/^/#/' /etc/default/console-setup # comment out the old value
echo 'FONTFACE="TER"' | sudo tee -a /etc/default/console-setup # Set font to Terminus
echo 'FONTSIZE="16x32"' | sudo tee -a /etc/default/console-setup # Set font size
最后,使用以下命令应用更改sudo update-initramfs -u
此外,Ubuntu 内核(从 Xenial 开始)将很快支持 FONT_TER16x32 在早期启动阶段用于控制台显示 [1]。
要受益于此 HiDPI 字体支持,只需将“fbcon=font:TER16x32”添加到 /etc/default/grub 中的 GRUB_CMDLINE_LINUX,然后运行sudo update-grub
[1]https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1819881