默认情况下,我的Linux内核使用内置在内核中的大型16x32终端字体(与CONFIG_FONT_TER16X32一起)作为框架缓冲区控制台。
我刚刚安装了"kbd“包,运行没有参数的setfont
,它切换到了屏幕上看起来很小的其他字体。setfont
似乎只支持从文件中加载字体,而不支持内核的内置字体。此外,kbd包中不包含16x32结束字体。
那么,如何将控制台切换回系统启动时看到的默认内置字体呢?运行没有参数的setfont
并不能做到这一点。我正在寻找一个非发行版的解决方案。
发布于 2022-07-22 12:22:20
我找不到可以这样做的现成工具,但是下面的C程序会将/dev/tty
(如果是Linux )重置为默认字体:
#include <fcntl.h>
#include <linux/kd.h>
#include <stdio.h>
#include <sys/ioctl.h>
#include <sys/stat.h>
#include <sys/types.h>
int main(int argc, char **argv) {
struct console_font_op cfo = { .op = KD_FONT_OP_SET_DEFAULT };
int fd;
fd = open("/dev/tty", O_RDONLY);
if (fd < 0) perror("Opening /dev/tty");
else if (ioctl(fd, KDFONTOP, &cfo)) perror("Setting the default font");
}
将其保存到defaultfont.c
,使用make defaultfont
(不需要Makefile )构建它,并运行./defaultfont
。
https://unix.stackexchange.com/questions/710337
复制相似问题