Linuxコンソールフォントをカーネル組み込みフォントに復元するには?

Linuxコンソールフォントをカーネル組み込みフォントに復元するには?

デフォルトでは、私のLinuxカーネルはフレームバッファコンソールにカーネルに組み込まれている16x32 Terminus大きなフォント(CONFIG_FONT_TER16X32を使用)を使用します。

私は "kbd"パッケージをインストールしてsetfont引数なしで実行しましたが、画面から小さく見える別のフォントに切り替えました。setfontカーネルに組み込まれているフォントの1つではなく、ファイルからフォントをロードするだけがサポートされているようです。また、16x32 Terminusフォントはkbdパッケージに含まれていません。

では、システムの起動時に表示されるデフォルトの組み込みフォントにコンソールを切り替えるにはどうすればよいですか?引数なしで実行すると、setfontこの操作は実行されません。ディストリビューションではなく特定のソリューションを探しています。

答え1

これを行うことができる既製のツールが見つかりませんが、次のCプログラムは/dev/tty(Linux VTの場合)デフォルトのフォントにリセットされます。

#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(Makefileは必要ありません)、ビルドして実行してください。make defaultfont./defaultfont

関連情報