開機滾動字體顯示優化
這裏所謂的開機滾動顯示的字體,是系統加載階段的內核日誌字體,優化的核心解決辦法是鎖定 bootloader 高分辨率並配置控制檯高清字體。
以 Arch linux 爲例:
1. 配置 systemd-boot 的內核分辨率
編輯 Arch 的啓動項配置文件,執行 sudo vim /boot/loader/entries/arch.conf,在 options 行末尾添加分辨率參數,示例如下:
1➜ ~ cat /boot/loader/entries/2025-12-09_09-04-59_linux.conf
2# Created by: archinstall
3# Created on: xxx
4title Arch Linux (linux)
5linux /vmlinuz-linux
6initrd /initramfs-linux.img
7options root=PARTUUID=9443f4c6-b17e-4771-8ecf-987627f0551c zswap.enabled=0 rootflags=subvol=@ rw rootfstype=btrfs loglevel=3 rd.udev.log_priority=3 vt.global_cursor_default=0 video=2560x1440@100 amdgpu.runpm=0 amdgpu.gpu_recovery=1
其中的 video=2560x1440@100 替換爲屏幕原生分辨率。
不知道自己屏幕分辨率的,可從 wlr-randr 命令輸出獲取,非 Wayland 環境,也有類似命令,自行搜索。
1➜ ~ wlr-randr
2HDMI-A-1 "AOC Q27N3S2 1AQQ3HA009633 (HDMI-A-1)"
3 Make: AOC
4 Model: Q27N3S2
5 Serial: 1AQQ3HA009633
6 Physical size: 600x340 mm
7 Enabled: yes
8 Modes:
9 2560x1440 px, 59.951000 Hz (preferred)
10 2560x1440 px, 100.000000 Hz (current)
11 2560x1440 px, 74.968002 Hz
12 1920x1080 px, 74.973000 Hz
13 1920x1080 px, 60.000000 Hz
14 1920x1080 px, 60.000000 Hz
15 1920x1080 px, 59.939999 Hz
16 .......
保存退出後,執行 sudo bootctl update 更新配置,確保開機引導階段保持高分辨率。
2. 安裝並配置控制檯高清字體
先裝清晰的 Terminus 字體
1sudo pacman -S terminus-font
字體配置示例:
1➜ ~ cat /etc/vconsole.conf
2# Written by systemd-localed(8) or systemd-firstboot(1), read by systemd-localed
3# and systemd-vconsole-setup(8). Use localectl(1) to update this file.
4KEYMAP=us
5FONT=ter-v28n
6XKBLAYOUT=us
7XKBMODEL=pc105+inet
8XKBOPTIONS=terminate:ctrl_alt_bksp
ter-v28n 是適配開機日誌的清晰款,v 代表該字體包含全量字符集,b 代表粗體(bold)樣式,可在 /usr/share/kbd/consolefonts 目錄查看更多字體型號。
若想提前驗證字體效果,可執行 setfont ter-v28n 直接加載字體,切換到 TTY 終端就能查看顯示效果,確認合適後再重啓固化設置即可。
TTY 控制檯支持的字體有限,找來找去沒幾個對眼的🤷♂️。
3. mkinitcpio 配置
先直接看配置示例:
1➜ ~ grep -Ev "^#|^$" /etc/mkinitcpio.conf
2MODULES=(amdgpu)
3BINARIES=()
4FILES=()
5HOOKS=(base udev autodetect microcode modconf kms keyboard keymap consolefont block filesystems fsck)
MODULES=(amdgpu)在生成 initramfs(初始內存盤)時,強制加載 AMD GPU 的開源驅動。HOOKS=(base udev autodetect microcode modconf kms keyboard keymap consolefont block filesystems fsck), 定義 mkinitcpio 構建 initramfs 時執行的“鉤子”(hooks)順序。注意其中的 kms 在較靠前的位置。kms 意爲啓用內核模式設置(Kernel Mode Setting),用於早期啓用顯卡分辨率(配合 amdgpu 模塊)。這能避免啓動時屏幕閃爍或低分辨率,也就是說字體看起來清晰舒服,啓動時的顯示體驗飆升。
HOOKS 部分詳細說明:
| Hook | 功能說明 |
|---|---|
base | 提供最基礎的 initramfs 結構,必須存在。 |
udev | 啓用 udev 設備管理(動態設備節點)。現代系統必需。 |
autodetect | 自動檢測並精簡所需的模塊和二進制文件(基於當前硬件)。通常放在靠前位置。 |
microcode | 在 CPU 初始化早期加載 Intel/AMD 微碼更新(提升穩定性和安全性)。 |
modconf | 將 /etc/modprobe.d/ 中的模塊配置文件包含進 initramfs。 |
kms | 啓用內核模式設置(Kernel Mode Setting),用於早期啓用顯卡分辨率(配合 amdgpu 模塊)。這能避免啓動時屏幕閃爍或低分辨率。 |
keyboard | 包含鍵盤驅動,使 initramfs 階段能接收鍵盤輸入(如輸入 LUKS 密碼)。 |
keymap | 加載指定的鍵盤佈局(由 /etc/vconsole.conf 定義)。 |
consolefont | 加載控制檯字體(同樣來自 /etc/vconsole.conf)。 |
block | 支持 block 設備(硬盤、SSD 等),必須在 filesystems 之前。 |
filesystems | 包含常用文件系統模塊(ext4, btrfs, xfs 等),用於掛載根文件系統。 |
fsck | 在掛載根文件系統前運行 fsck 檢查磁盤錯誤。 |
調整相應字段並重新生成 initramfs
1sudo mkinitcpio -p linux
這樣一番操作後,統一分辨率,開機全程不切換,字體清晰;支持高分辨率輸出,適配高清屏。
4. 進一步優化 TTY 字體顯示
此部分需要安裝 kmscon,是一個簡單的、基於 Linux 內核級顯示模式設置的終端模擬器,嘗試用用戶空間終端代替內核的虛擬終端(VT)
Kmscon is a simple terminal emulator based on linux kernel mode setting (KMS). It is an attempt to replace the in-kernel VT implementation with a userspace console. See kmscon(1) man-page for usage information.
簡單說當你非圖形化界面登錄,或者按Ctrl + alt + F1~F6其中的一個登錄時(一般來說 GMD、LightDM、ly 等 display manager 都會綁定一個 tty1~tty6 中的一個,systemctl enable ly@tty2.service 就會佔用 tty2,引導進入圖形界面,剩下的給非圖形化登錄使用)。
那個上古界面,雖然很純粹,但純文本 VT 對於東亞人民來說非常不友好,不支持 cjk。虛擬終端 VT 使用的是內核內置的位圖字體(bitmap font),通常是 8x16 或類似大小,這些字體只包含 ASCII 字符(英文、數字、符號)和部分 Latin 擴展字符,不包含中文字符集(如 GBK、UTF-8 中的漢字),即使系統 locale 設置爲中文,內核 VT 也無法渲染漢字。
正式由於上述侷限性,我們要切換爲 kmscon,能比較好的解決問題。
1sudo pacman -S kmscon
2sudo systemctl enable kmsconvt@tty1.service
sudo systemctl enable kmsconvt@tty1.service 意爲接管 tty1, Ctrl + Alt + F1登錄後可查驗效果。
說來 kmscon 也很奇怪,有一段時間都被流放到 aur 中了,幾年不更新。可是最近像打了雞血一個,猛更新,代碼提交也變活躍了,不信可去倉庫https://github.com/kmscon/kmscon 看看相關記錄。
其無圖形服務器依賴:不依賴 X.org/Wayland,適合純終端環境。
扯了這麼多,kmscon 作用是什麼呢?
- 完整的 vt220 to vt510 實現,可直接替換 agetty/getty,無需修改現有終端程序。
- 完整的國際化支持, Kmscon 支持打印全部 Unicode 字符,包括中日韓文字。
- 硬件加速渲染。
- 支持 multi-seat
說人話就是,我可以隨意改字體了,能顯示 emoji 和 cjk 文字,體驗天差地別啊。
直接看配置:
1[mephisto@minipc ~]$ grep -Ev "^#|^$" /etc/kmscon/kmscon.conf
2gpus=all
3hwaccel
4font-engine=pango
5font-size=18
6font-name=Hack Nerd Font,WenQuanYi Micro Hei Mono
7font-dpi=96
8mouse
可以看出我開啓了硬件加速,字體引擎爲 pango,字體選擇Hack Nerd Font,WenQuanYi Micro Hei Mono, dpi 也可以設定,鼠標支持,純 vt 環境,是沒有鼠標顯示的,也就沒法用按中鍵選中複製等。
當你的桌面環境比如 Gnome、KDE 等崩潰時,可以切換到非圖形界面,此時你可以殺掉哪些佔用資源多的進程,這個時候還能保持較好的終端體驗,至少對東亞人民是如此。
亦或你在開發一個嵌入式系統,同時需要稍微照顧終端體驗...
很多年前,我還看到過我的同事,特意切換到純 vt 環境編程,防止別人干擾...
最後,可以看看不同 tty 差異,注意看 TTY 那一欄.
1➜ ~ w
2 xx:xx:01 up 1:30, 3 users, load average: 0.37, 0.75, 1.04
3USER TTY LOGIN@ IDLE JCPU PCPU WHAT
4mephisto tty2 xx:08 1:30m 3:56 0.95s Xwayland :0 -rootless -core -terminate 10 -listenfd 31 -listenfd 32 -displayfd 78 -wm 75 # Graphic, labwc
5mephisto tty4 xx:14 1:45 0.06s ? [atuin] <defunct> # vt
6mephisto pts/2 xx:35 37.00s 0.26s ? [atuin] <defunct> # kmscon
總之,經過上述步驟後,開機後字體顯示相關都能較好滿足需求,當然如果你是純粹的圖形化愛好者,開啓 Plymouth 連滾動字體都看不到。我開啓內核滾動日誌輸出,主要是方便查看是否報錯。

版權申明:
- 未標註來源的內容皆為原創,未經授權請勿轉載(因轉載後排版往往錯亂、內容不可控、無法持續更新等);
- 非營利為目的,演繹本博客任何內容,請以'原文出處'或者'參考鏈接'等方式給出本站相關網頁地址(方便讀者)。
相關文章:
- 樹莓派上部署Vaultwarden
- 使用goaccess即時分析Caddy日誌
- 個人網站監控
- Hugo全站AVIF記
- Linux下嘗試使用Godot開發小遊戲
- Arch linux dae 透明代理
- Airflow接管galler-dl下載任務
- 如何使用gallery-dl批量下載圖像
- Arch核顯下如何愉快玩Dota2和CS2
- Arch/labwc 環境網絡相關設置