KMSCON (简体中文)

From ArchWiki
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
翻译状态:本文是 KMSCON翻译。上次翻译日期:2021-04-05。如果英文版本有所更改,则您可以帮助同步翻译。

来自 该项目代码库 的介绍:

Kmscon 是基于 linux 内核级显示模式设置的简单终端模拟软件。它试图以用户空间终端替代内核中的虚拟终端实现。

特性

KMSCON 能作为 Linux 内核内置终端的一个完整替代,它具有以下功能:

  • 完整的 vt220 to vt510 实现。
  • 完整的国际化支持:
    • Kmscon 支持打印全部 Unicode 字符,包括中日韩文字。
    • Kmscon 通过 libxkbcommon 对国际键盘布局提供支持,所以人们可以使用 X 支持的所有键盘布局。
  • 硬件加速渲染。
  • 支持 multi-seat
注意: 要允许 root 用户通过 kmscon 登录,你需要移除或注释 /etc/pam.d/login 中相应行来停用 pam_securetty 模块。

安装

虽然名字里带有 KMS,kmscon 并非硬性依赖 KMS。Kmscon 支持的视频后端如下:fbdev(Linux fbdev 视频后端),drm2d(Linux DRM 软解后端),drm3d(Linux DRM 硬解后端)。请确保你的系统中有其中之一。

安装 kmscon,或者从 AUR 安装最新开发版 kmscon-gitAUR。还可以安装 kmscon-patched-gitAUR,这个版本与其打过补丁的依赖 (libtsm-patched-gitAUR)包含了一些标准版(2014 年后停止更新)没有的修复与改进(例如 24 位彩色支持)。

在 tty1 上一般有特殊的 systemd 配置。出于保守的策略,你可以继续在 tty1 上使用传统的 getty 而只在其他虚拟终端上运行 kmscon ,或者你可以用 kmscon 替换 getty。

要在 tty1 上启用 kmscon:

# systemctl disable getty@tty1.service
# systemctl enable kmsconvt@tty1.service

重新启动即可生效。

要在所有的虚拟终端上启用 kmscon :

# ln -s /usr/lib/systemd/system/kmsconvt\@.service /etc/systemd/system/autovt\@.service

这使 systemd 在每个虚拟终端上启动 kmscon 而不是 agetty,同时使 systemd-logind 使用 kmsconvt@.service 而不是 getty@.service 打开新的虚拟终端。不过使用 getty@.service 的 systemd 单元不受影响。

如果 kmscon 无法启动,它会尝试启动 getty@.service ,此外没有虚拟终端可用时这个单元不会启动。

警告: 如果你在所有的终端替换了 getty ,请在重新启动之前确认 kmscon 可用 !不然你只能用 Live CD 一类的介质恢复系统了。

中日韩文字支持

Kmscon 通过默认的字体引擎 pango 支持渲染中日韩文字。但是, 必须为 fontconfig 设置全局配置,来将等宽字体映射到合适的中日韩字体上。我们为中文用户提供如下配置模板。此模板可以满足中文字体渲染要求:

/etc/fonts/conf.d/99-kmscon.conf
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<match>
        <test name="family"><string>monospace</string></test>
        <edit name="family" mode="prepend" binding="strong">
                <string>DejaVu Sans Mono</string>
                <string>WenQuanYi Micro Hei Mono</string>
        </edit>
</match>
</fontconfig>

还可以将以下行加入 /etc/kmscon/kmscon.conf 来配置 kmscon 全局使用这些字体:

/etc/kmscon/kmscon.conf
font-name=DejaVu Sans Mono, WenQuanYi Micro Hei Mono

你需要安装 ttf-dejavuwqy-microhei,它们都可以在官方仓库中找到。

疑难解答

在切换 Xorg 和 kmscon 时遇到问题

如果你在切换 Xorg 和 kmscon 时遇到问题,试着把 hwaccel 添加到 /etc/kmscon/kmscon.conf 中。 这个文件和目录不在包内,因此你需要手动创建它们,或者你可以 编辑 systemd 单元文件

 ExecStart=/usr/bin/kmscon "--vt=%I" --seats=seat0 --no-switchvt --font-name Terminus --font-size 12 --hwaccel --drm

无法控制声音

在版本 7 中,如果你不能控制声音,把你的用户添加到 audio 用户组中。不过要注意这么做的缺点

Vim 无法清空终端输出

Vim 可能会在启动时不清除终端输出,这时仍然可以编辑文件,但只有更改文本后才能看到文本。解决方法是,尝试设置环境变量 TERM = vt220。 另外,其它类似于 vim 的编辑器(例如 viNeovim)可能会正常工作。