第 13.1 节 引导界面与虚拟控制台
最后更新于
最后更新于
FreeBSD 新型终端 VT,原生支持 CJK,所以放入字体,即可显示中文。
本文基于 FreeBSD 14.2 RELEASE。
字体格式为 .fnt
(并不是码表 + PNG 图片,而是二进制字体文件),命令:
$ vidcontrol -f test.fnt
FreeBSD 基本系统提供了一款工具,可用于将 bdf、hex 转换为 fnt:
$ vtfontcvt [ -h 高度 ] [ -v ] [ -w 宽度] [字体路径]
示例:
$ fetch https://people.freebsd.org/~emaste/newcons/b16.fnt
$ vidcontrol -f b16.fnt
技巧
若上述链接失效,请访问 https://github.com/FreeBSD-Ask/fnt-fonts
命令都是临时的,若要永久生效,将其加入 /etc/rc.conf
:
allscreens_flags="-f /root/b16.fnt"
不知道如何手动生成中文字体的 fnt 文件。https://github.com/usonianhorizon/vt-fnt 方法看不懂,可以生成 bdf 文件,但是报错和他文中一样。里面提到的软件 FontForge 有 Windows 版本,下载路径在 https://fontforge.org/en-US/downloads/windows-dl/。
rc.conf,此页搜索“allscreens_flags”
Custom cjktty patches,Linux 中文 tty 内核补丁,作者似乎已经放弃维护了
Internationalizing the Kernel,Linus 言论出处
# ee /boot/loader.conf
修改:
autoboot_delay="2"
# echo boot_mute="YES" >> /boot/loader.conf # 启动显示一个 FreeBSD 的 Logo
# echo debug.acpi.disabled="thermal" >> /boot/loader.conf # 屏蔽可能存在的 ACPI 报错
# sysrc rc_startmsgs="NO" # 关闭进程启动信息
# sysrc dhclient_flags="-q" # 安静输出
# sysrc background_dhclient="YES" # 后台 DHCP
# sysrc synchronous_dhclient="YES" # 启动时同步 DHCP
# sysrc defaultroute_delay="0" # 立即添加默认路由
# sysrc defaultroute_carrier_delay="1" # 接收租约时间为 1 秒
参考文献:
在默认情况下,控制台驱动程序在屏幕空闲时不会做任何特殊处理。如果你预计长时间让显示器保持开启并处于空闲状态,那么你应该启用其中某个屏幕保护程序以防止烧屏。
bsdconfig
# bsdconfig
┌---------------------┤System Console Screen Saver├---------------------┐
│ By default, the console driver will not attempt to do anything │
│ special with your screen when it's idle. If you expect to leave your │
│ monitor switched on and idle for long periods of time then you should │
│ probably enable one of these screen savers to prevent burn-in. │
│ ┌-------------------------------------------------------------------┐ │
│ │ 1 None Disable the screensaver │ │
│ │ 2 Blank Blank screen │ │
│ │ 3 Beastie "BSD Daemon" animated screen saver (graphics) │ │
│ │ 4 Daemon "BSD Daemon" animated screen saver (text) │ │
│ │ 5 Dragon Dragon screensaver (graphics) │ │
│ │ 6 Fade Fade out effect screen saver │ │
│ │ 7 Fire Flames effect screen saver │ │
│ │ 8 Green "Green" power saving mode (if supported by monitor) │ │
│ │ 9 Logo FreeBSD "logo" animated screen saver (graphics) │ │
│ │ a Rain Rain drops screen saver │ │
│ │ b Snake Draw a FreeBSD "snake" on your screen │ │
│ │ c Star A "twinkling stars" effect │ │
│ │ d Warp A "stars warping" effect │ │
│ │ Timeout Set the screen saver timeout interval │ │
│ └-------------------------------------------------------------------┘ │
├-----------------------------------------------------------------------┤
│ [ OK ] [Cancel] │
└----------------- Choose a nifty-looking screen saver -----------------┘
1 None Disable the screensaver
1 无 禁用屏幕保护程序
2 Blank Blank screen
2 空白 显示空白屏幕
3 Beastie "BSD Daemon" animated screen saver (graphics)
3 Beastie "BSD Daemon" 动画屏幕保护程序(图形)
4 Daemon "BSD Daemon" animated screen saver (text)
4 Daemon "BSD Daemon" 动画屏幕保护程序(文字)
5 Dragon Dragon screensaver (graphics)
5 龙 动画屏幕保护程序(图形)
6 Fade Fade out effect screen saver
6 淡出 屏幕保护程序淡出效果
7 Fire Flames effect screen saver
7 火焰 火焰效果屏幕保护程序
8 Green "Green" power saving mode (if supported by monitor)
8 绿色“绿色”省电模式(如果显示器支持)
9 Logo FreeBSD "logo" animated screen saver (graphics)
9 标志 FreeBSD“logo”动画屏幕保护程序(图形)
a Rain Rain drops screen saver
a 雨滴 雨滴屏幕保护程序
b Snake Draw a FreeBSD "snake" on your screen
b 蛇 在屏幕上绘制 FreeBSD“蛇”
c Star A "twinkling stars" effect
c 星星 闪烁星星效果
d Warp A "stars warping" effect
d 扭曲 星星扭曲效果
Timeout Set the screen saver timeout interval
超时 设置屏幕保护程序超时时间
选择屏保图片:主菜单中的 7 Console
——> 5 Saver Configure the screen saver
——> 此处我选择 3 Beastie "BSD Daemon" animated screen saver (graphics)
。
设定屏幕超时时间:主菜单中的 7 Console
——> 5 Saver Configure the screen saver
——> Timeout Set the screen saver timeout interval
,单位是秒。
编辑 /etc/rc.conf
saver="beastie" # 选择屏保图片
blanktime="300" # 屏幕超时时间
有哪些图片可选:
root@ykla:~ # ls /boot/kernel/*saver*
/boot/kernel/beastie_saver.ko /boot/kernel/fire_saver.ko /boot/kernel/snake_saver.ko
/boot/kernel/blank_saver.ko /boot/kernel/green_saver.ko /boot/kernel/star_saver.ko
/boot/kernel/daemon_saver.ko /boot/kernel/logo_saver.ko /boot/kernel/warp_saver.ko
/boot/kernel/dragon_saver.ko /boot/kernel/plasma_saver.ko
/boot/kernel/fade_saver.ko /boot/kernel/rain_saver.ko
在出来 FreeBSD 菜单的时候,按下 ESC 键,脱离引导。会出现提示符 OK
。输入 gop list
可以看到所有支持的分辨率列表:
OK gop list
mode 0: 1920x1080x32, stride=1920
mode 1: 640x480x32, stride=640
mode 2: 800x600x32, stride=800
mode 3: 1024x768x32, stride=1024
mode 4: 1280x720x32, stride=1280
mode 5: 1280x1024x32, stride=1280
我这里选择 mode 0
,先测一下效果:
OK gop set 0
当即立现。
如果合适,继续引导:
OK menu
把配置写进 /boot/loader.conf
:
exec="gop set 0"
efi_max_resolution
(UEFI)或 vbe_max_resolution
(BIOS)根据文档 LOADER.CONF(5),两个变量接受以下值:
值 分辨率
480p 640x480
720p 1280x720
1080p 1920x1080
1440p 2560x1440
2160p 3840x2160
4k 3840x2160
5k 5120x2880
宽x高 宽x高
本文测试使用 efi_max_resolution
:
将 efi_max_resolution="1080p"
写入 /boot/loader.conf
,重启后效果与 gop 方法一致。
gop set <mode> being ignored in /boot/loader.conf,efi_max_resolution
方法参考本文
How to find the valid values of efi_max_resolution,gop 方法参考本文,里面有个动图有点用
根据 man 页面 BEASTIE.4TH(8),默认有几种 logo 可选:
fbsdbw
beastie
beastiebw
orb
(14.2 中默认,UEFI 下)
orbbw
none
(无 Logo)
以 fbsdbw
为例,在 /boot/loader.conf
写入
loader_logo="fbsdbw"
重启效果:
customize boot loader logo。本文主要来自此处