操作系统:乌班图18.04。我认为它是独立于发行版的。 Arch Linux 使用相同的原理,但以不同的方式实现。
我tty
通过编辑文件来设置 的字体/etc/default/console-setup
:
CODESET="guess"
FONTFACE="TerminusBold"
FONTSIZE="22x11"
字体的文件位于/usr/share/consolefonts/
.它有psf
格式。
从维基百科:
PC 屏幕字体 (PSF) 是一种位图字体格式,目前 Linux 内核用于控制台字体。 PSF 文件格式的文档可以在 Linux 内核的源代码中找到。
问题:
- 内核是否将此文件加载到内核空间?
tty
如果不是,那么(驻留在内核中)如何呈现.psf
驻留在文件中的字符/usr/share/consolefonts/
?- 我在想,出于可靠性和安全性的原因,内核是一段可靠的代码,它不使用任何用户文件(内核模块除外)。我错了吗?或者控制台字体是例外?
- 如何检查
.psf
具体加载了哪个文件?因为该/usr/share/consolefonts/
文件夹有很多TerminusBold22x11.psf.gz
文件,具有不同的代码集。我想知道使用了哪个特定文件。我检查了dmesg
和syslog
,但没有找到此类信息。
答案1
我找到了答案第四名Ubuntu 18.04 的问题:
sudo strace -s99 setupcon 2>&1 | grep '.psf'
输出
read(3, "/etc/console-setup/cached_Uni2-TerminusBold22x11.psf.gz\n", 128)
解释:
通过使用该setupcon
程序,systemd
可以在操作系统启动时进行控制台设置。可以在这个文件中查看:/lib/systemd/system/console-setup.service
.因此,通过setupcon
手动重复,我们有可能对其strace
系统调用并找到所使用的字体文件。
安装程序 是一个用于在控制台上快速轻松地设置字体和键盘的程序。大多数时候,您调用 setupcon 时不带参数。键盘配置在 ~/.keyboard 或 /etc/default/keyboard 中指定。字体配置在中指定 ~/.console-设置或者/etc/default/控制台设置。