LFS 系统可以在没有图形桌面的情况下使用,除非您安装了 a graphical environment,否则您将不得不在控制台中工作。大多数(即便不是全部)PC 都以 8x16 字体启动——无论实际屏幕尺寸如何。您可以通过一些操作来改变控制台的显示效果。其中大部分涉及更改字体,但第一个操作会更改 GRUB 命令行。
现代屏幕的像素数通常比过去的屏幕多得多。如果您的屏幕宽 1600 像素,使用 8x16 字体将为您提供 200 列文本——除非您的显示器很大,否则文本会非常小。解决此问题的方法之一是告诉 GRUB 和内核使用较小的分辨率,例如 1024x768、800x600 甚至 640x480。即使您的屏幕不是 4:3 的宽高比,这通常也能工作。
如果您按照 LFS 手册配置内核时启用了 SimpleDRM,并且专用于您 GPU 的内核驱动程序(例如 i915 或
AMDGPU)是作为内核模块构建的,那么在专用驱动程序加载之前,SimpleDRM 驱动程序将用于显示。SimpleDRM
驱动程序本身无法更改分辨率,因此您需要修改 grub.cfg 文件 中的 set
gfxpayload=1024x768x32 行,告诉 GRUB 在加载内核之前设置合适的分辨率。
当专用 GPU 驱动程序开始工作(一旦内核或模块被加载,取决于您将其构建为内核映像的一部分还是模块)时,它会从 SimpleDRM
驱动程序手中接管显示控制并更改显示分辨率。要让它使用您想要的分辨率,再次编辑 grub.cfg 文件,在内核命令行中插入一个 video= 参数,例如 root=/dev/sda2
video=DP-1:800x600 ro。注意,这里必须显式指定输出名称,如 DP-1:没有输出名称的 video=
参数仅被 GRUB 识别(作为 set gfxpayload=
的已弃用别名),而内核会完全忽略它。/sys/class/drm/
的内容有助于确定输出名称,例如 card1-DP-1 子目录表示一个名为
DP-1 的输出。为使输出名称与您的显示器匹配,请安装 libdisplay-info-0.3.0 软件包,并运行
di-edid-decode
/sys/class/drm/card<卡
ID>-<输出名称>/edid
命令以显示该输出上所连接显示器的信息(包括型号名称和支持的分辨率)。
如果您决定这样做,可以(以 root 用户身份)编辑
/boot/grub/grub.cfg。
在 LFS 中使用了 kbd 软件包。它提供的字体是 PC
屏幕字体(通常称为 PSF),它们被安装到 /usr/share/consolefonts 中。如果这些字体包含 unicode
映射表,文件后缀通常改为 .psfu,尽管诸如 terminus-font(见下文)之类的软件包不加 'u'。这些字体通常用 gzip
压缩以节省空间,但这并非必须。
最初的 PC 文本屏幕有 8 种颜色,如果使用原始 8 种颜色的亮色版本,则有 16 种颜色。PSF 字体在允许 16 种颜色的情况下最多可包含 256 个字符(技术上称为字形),或者在允许 512 个字符的情况下(此时亮色将不可用)。显然,这些控制台字体无法用于显示中日韩(CJK)文本——那需要数千个可用的字形。
kbd 中的某些字体可以覆盖超过 512 个码位(“字符”),但保真度各不相同:unicode 包含几个空白码位,它们都可以映射到空格;各种破折号可以映射到减号;智能引号可以映射到常规 ASCII 引号,而不是映射到“码位不存在或无效”所使用的字符;那些看起来像拉丁字母的西里尔字母或希腊字母也可以映射到它们,因此 'A' 也可以充当西里尔字母 A 和希腊字母 Alpha,'P' 也可以充当西里尔字母 ER 和希腊字母 RHO。遗憾的是,如果字体是从 BDF 文件(terminus 和 Debian 的 console-setup 所采用的方法)创建的,那么将额外码位映射到现有字形的操作并不总是执行,尽管 terminus ter-vXXn 字体在这方面做得很好。
kbd 中有超过 120
种字体和尺寸的组合:通常一种字体提供多种字符尺寸,有时不同变体涵盖不同的 unicode 子集。大多数宽度为 8 像素,高度从 8 到
16 像素,但也有少数宽度为 9 像素,还有一些为 12x22,甚至有一种(latarcyrheb-sun32.psfu)被放大到
16x32。使用更大的字体是在大屏幕上使文本更易于阅读的另一种方法。
您可以以普通用户身份测试字体。如果您有一个尚未安装的字体,可以使用以下命令加载它:
setfont /path/to/yourfont.ext
对于已安装的字体,您只需提供名称,以 gr737a-9x16.psfu.gz 为例:
setfont gr737a-9x16
要查看字体中的字形,请使用:
showconsolefont
如果该字体看起来可能有用,您可以接着进行更彻底的测试。
当找到您希望使用的字体后,以 root 用户身份编辑
/etc/sysconfig/console,如 LFS 第 9.6.5 节 ../../../../lfs/view/development/chapter09/usage.html
所述。
对于 kbd 包未提供的字体,您需要可选择地用
gzip 压缩它/它们,然后以
root 用户身份安装它/它们。
尽管某些控制台字体是从 BDF 文件(一种文本格式,包含字符每行像素的十六进制值)创建的,但还有更现代的工具可用于编辑 PSF 字体。psftools 包允许您将字体转储为文本表示形式,其中关闭的像素(黑色)用短横线表示,开启的像素(白色)用井号表示。然后您可以编辑文本文件以添加更多字符、重塑它们或将额外码位映射到它们,最后使用您的更改创建新的 PSF 字体。
Terminus Font
包提供了固定宽度的点阵字体,专为长时间(每天 8 小时及以上)使用计算机而设计。在该页面的“Character
variants”下,有一系列补丁列表(位于 alt/
目录中)。如果您使用图形浏览器查看该页面,可以看到这些补丁的作用,例如“ll2”使“l”与“i”和“1”的区别更明显。
默认情况下,terminus-fonts 会尝试创建多种类型的字体,如果未安装 Xorg Applications 中的 bdftopcf,则会失败。configure 脚本仅在您继续将 所有 字体(控制台和 X11 位图字体)安装到正确目录(如在发行版中)时才有实际用途。要仅构建 PSF 字体及其依赖项,请运行:
make psf
这将创建超过 240 个 ter-*.psf 字体。“b”后缀表示亮色(bright),“n”表示正常(normal)。然后您可以测试它们,看看是否有符合您要求的。除非您正在创建发行版,否则似乎没有必要全部安装。
例如,要安装这些字体中的最后一个,您可以将其用 gzip 压缩,然后以 root 用户身份执行:
install -v -m644 ter-v32n.psf.gz /usr/share/consolefonts