新买 ThinkPad T470s 的时候特意选了 WQHD 的屏幕。当时还觉得联想总是拖着不升级显示器配置,分辨率不够高,更没有 OLED。结果发现在实用的时候高 DPI 的显示器还是有不少麻烦。比如启动界面的字体大小、虚拟终端的字体大小,当然还有系统字体和界面的显示大小问题。这里记录的是 GRUB 菜单和虚拟终端的字体大小设置。
Grub 和 console 的配置已经有很多说明了。自己实际操作一下才发现有时候别人能成的,自己不一定就能弄成。期间参考了以下网页:
https://zh.opensuse.org/index.php?title=SDB:字体配置&variant=zh
https://wiki.archlinux.org/index.php/GRUB/Tips_and_tricks#Setting_the_framebuffer_resolution
https://www.gnu.org/software/grub/manual/html_node/gfxmode.html#gfxmode
https://doc.opensuse.org/documentation/leap/reference/html/book.opensuse.reference/cha.grub2.html
https://onetransistor.blogspot.co.uk/2016/03/plymouth-fix-nvidia.html
比如这个查看显示器支持的分辨率的问题。网页上多是这么介绍的。
在开机时的 Grub 操作系统选择界面,按 c 键进入编辑,再按 F2 进入命令行,输入下面的指令,
grub> insmod vbe
grub> vbeinfo
就会显示所有 VBE 支持的显示模式。
但是我这么操作的时候却得到提示说没有 vbe.mod,所以无法显示。当然也试着手动加载了,
grub> insmod vbe
后来发现是因为 openSUSE Tumbleweed 在安装 EFI 启动项的时候没有给 EFI 模式安装这些模块。
还有,另外一个方法,
# hwinfo --framebuffer --log hwinfo.log
给了我一个 1MB 多的文件,我翻了又翻,也没找到相关信息。
于是我就按照网上已有的模式瞎试。
设置 GRUB 显示分辨率
设置 GRUB 显示时候的分辨率,从而间接调整 GRUB 字体的大小。将分辨率调低了,字体自然就大了,虽然同时也变得不好看了。
这个在登录系统后设置,
$ sudo vim /etc/default/grub
将默认的,
GRUB_GFXMODE="auto"
改成,
GRUB_GFXMODE=1280x1024x32,1280x1024x24,1024x768x32,1024x768x24,"auto"
多设几个选项的目的是前面不支持的时候回退到后一个,直到最后的自动“auto”。实际上经过几次尝试后发现,T470s 不支持 24 位的色深(也许不是因为这个?),省略后面的色深即可;1280x1024 显示的大小看着更舒服,所以合适的设置应该是,
GRUB_GFXMODE=1280x720,1024x768,auto
然后应用该配置,
$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg
再次启动的时候就能看到效果了。
要注意的是,GRUB_GFXMODE 设置的分辨率只适用于 gfxterm 图形终端。也就是说,针对 GRUB_TERMINAL="gfxterm" 的情况,在 GRUB_TERMINAL="console" 模式下不起作用。
嗯,gfxterm 模式还可以换主题,对于有「美化」爱好的用户来说真是很贴心啊。
修改 GRUB 终端字体
GRUB 的配置文件里可以设置其命令行界面使用的字体,选项为 GRUB_FONT。但是多半需要自己生成相应的字体然后放入指定的位置才能使之其作用。
制作字体,例如,
$ sudo grub2-mkfont --output=/boot/grub2/fonts/robotomedium.pf2 --size=22 /usr/share/fonts/truetype/Roboto-Medium.ttf
表示使用 grub2-mkfont 来将 TrueType 字体 /usr/share/fonts/truetype/Roboto-Medium.ttf 转换为可以在 GRUB 中使用的字体,命名为 robotomedium.pf2,选择的字号为 22,并存放在 /boot/grub2/fonts/ 文件夹下。
然后在 /etc/default/grub 中修改或增加下面一行,
GRUB_FONT=/boot/grub2/fonts/robotomedium.pf2
然后应用该配置,
$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg
再次启动的时候就能看到效果了。
虚拟终端字体
这里的虚拟终端指的是开机自动进入的 RunLevel 3 的命令行界面,或者在图形界面使用 Ctrl+Alt+F1 之类的切换到的那个 tty 终端,而不是桌面环境下的 konsole,当然也不是 GRUB 里面的字体。konsole 的字体可以直接在其 profile 里面设置。
$ ls -al /usr/share/kbd/consolefonts/
会列出当前系统中安装的所有虚拟终端字体。
预览/临时设置
可以打开一个虚拟终端用下面的指令预览字体效果,
$ setfont suse12x22.psfu
setfont 只影响当前正在使用的终端,而且重启后失效,更不会影响到其它终端。suse12x22.psfu 是要使用的字体的名称(后面的扩展名省略)。
永久生效
让该配置永久生效,当然这个永久只是在下次重装系统之前,需要修改系统配置文件。现在 openSUSE Linux 已经不再使用 /etc/sysconfig/console 了,而是使用新的配置文件 /etc/vconsole.conf 。(2019-09-22 更新。)
$ sudo vim /etc/vconsole.conf
前面加上 # 号注释掉原有的那行,如下,
#CONSOLE_FONT="eurlatgr.psfu"
在其下添加,
CONSOLE_FONT="suse12x22.psfu"
当然也可以使用前节自己生成的新字体。这样字体会变大,但是还是不能显示中文字体(CJK)。要显示 CJK 字体,可参考这里。
奇怪的是最近一次重新安装系统之后发现修改 /etc/sysconfig/console 的结果总是被重置。没找到原因,可能是因为会被相应的软件包覆盖吧。看来也许还是两者都修改比较好。所以原来是因为 openSUSE 改变了处理这个问题的方式。©