![ubuntu 生动地在重启后放弃控制台设置](https://linux22.com/image/1050746/ubuntu%20%E7%94%9F%E5%8A%A8%E5%9C%B0%E5%9C%A8%E9%87%8D%E5%90%AF%E5%90%8E%E6%94%BE%E5%BC%83%E6%8E%A7%E5%88%B6%E5%8F%B0%E8%AE%BE%E7%BD%AE.png)
之前的一个问题在 VirtualBox 中重新启动时,Ubuntu Server 会忽略控制台设置与 Ubuntu 版本 12 相关。(一个)答案谈到在 中安装 upstart 作业/etc/init/console-font.conf
。
我在物理机上安装了 Ubuntu 15 版,而不是虚拟机(尽管这可能不相关)。该文件存在,但 Ubuntu 15 当然是用 systemd 而不是 upstart 启动的,upstart 作业被完全忽略。
那么,对于使用 systemd 的 Ubuntu 15 版本,该如何解决此问题?如何让 Ubuntu 在dpkg-reconfigure console-setup
重启后保留字体设置?
答案1
看https://unix.stackexchange.com/questions/198791/ 和在 VirtualBox 中重新启动时,Ubuntu Server 会忽略控制台设置
该问题似乎是由于控制台设置所期望的字体命名与 中的字体命名不匹配引起的/usr/share/consolefonts/
,因此/etc/console-setup/
当您选择要使用的字体(使用
dpkg-reconfigure console-setup
)时会被复制到 中。
如果您进入控制台并执行strace /lib/udev/console-setup-tty fbcon
,您会看到它正在尝试打开如下字体:
/etc/console-setup/Lat15-TerminusBold11x22.psf
但如果你看一下/etc/console-setup/
,那里只有少数字体(你选择的字体),它们看起来更像这样:
/etc/console-setup/Lat15-TerminusBold22x11.psf.gz
一个为高度 x 宽度,另一个为宽度 x 高度。
可以通过几种方法解决该问题。
(1)/lib/udev/console-setup-tty
可以修复-这是更永久的上游解决方案。
(2)您可以手动更改/etc/default/console-setup
,反转 FONTSIZE 中的高度和宽度。每次使用 更改字体时都需要执行此操作dpkg-reconfigure console-setup
。但当机器重新启动时,该首选项将保留。
(3)您可以安装 console-setup-tty 所需的字体。这就是我所说的“过度”选项。我这样做了:
在 /etc/rc.local 中:
# install console fonts and then set up console
/etc/console-setup/fonts.sh install
/lib/udev/console-setup-tty fbcon
创建一个名为的脚本/etc/console-setup/fonts.sh
:
#!/bin/bash
action=$1
srcdir="/usr/share/consolefonts"
parent="/etc/console-setup"
subdir="fonts"
case "$1" in
install)
# console fonts are not named properly in Ubuntu 15.04, compensate
[[ -d $parent/$subdir ]] || mkdir $parent/$subdir
for x in $( cd $srcdir ; ls -1 ) ; do
# rearrange the two numbers from HHxWW to WWxHH
y=$(echo "$x" | sed -e 's/^\([^-]*\)-\([^0-9]*\)\([0-9]*\)x\([0-9]*\).psf.gz/\1-\2\4x\3.psf.gz/g')
# whether the pattern above matches or not, we'll be uncompressing here
z=${y/.psf.gz/.psf}
[[ ! -f $parent/$subdir/$z ]] && zcat $srcdir/$x > $parent/$subdir/$z
[[ ! -L $parent/$z ]] && ln -sv $subdir/$z $parent/$z
done
;;
uninstall)
rm -rf $parent/$subdir
# only remove broken links (links to the fonts we removed above)
rm $(find -L $parent -type l)
;;
*)
echo "$(basename $0) install|uninstall"
;;
esac
exit 0
为了快速实用,我会执行#2,在文件中添加注释,如果您选择不同的字体,则可能需要重新进行操作(假设注释也不会被覆盖)。
但方法 #3 效果很好,不会造成太多麻烦或混乱。