KMSCON

来自 ArchWiki

来自项目的git 仓库

Kmscon 是一个基于 Linux 内核模式设置的简单终端模拟器。它旨在用用户空间控制台替换内核 VT 实现。

特性

Kmscon 可以作为内核 linux-console 的直接替代品。其特性包括

  • 完整的 vt220 到 vt510 实现。
  • 完整的国际化支持
    • Kmscon 支持打印完整的 Unicode 字形,包括 CJK 字形。
    • Kmscon 通过 libxkbcommon 提供国际化键盘处理,从而允许它使用 X 键盘中支持的全部键盘布局。
  • 硬件加速渲染。
  • 多席位功能。
注意: 为了能够以 root 身份登录 kmscon 控制台,您必须禁用 pam_securetty 模块,方法是删除或注释掉 /etc/pam.d/login 中相应的行。

安装

尽管名称如此,KMS 并不是 kmscon 的硬性要求。Kmscon 支持以下视频后端:drm3d(Linux DRM 硬件渲染后端)、drm2d(Linux DRM 软件渲染后端)、已过时的 fbdev(Linux fbdev 视频后端)。请确保您的系统上可使用其中之一。

安装 kmsconAUR 软件包或 kmscon-gitAUR 软件包以获取开发版本。或者,安装 kmscon-patched-gitAUR。修补版本及其修补依赖项(libtsm-patched-gitAUR)包含修复和改进。

通常,tty1 有一个特殊的 systemd 配置。为了保守起见,您可以继续在 tty1 上运行传统的 agetty,而仅在所有其他虚拟终端上运行 kmscon。或者,您可以在 tty1 和其他 VT 上都运行 kmscon。

要在 tty1 上启用 kmscon,禁用 getty@tty1.service启用 kmsconvt@tty1.service

要在所有虚拟终端上启用 kmscon,请运行

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

这将使 systemd 在每个 VT 上启动 kmscon 而不是 agetty。更准确地说,这将使 systemd-logind 为新的 VT 使用 kmsconvt@.service 而不是 getty@.service。此外,所有其他使用 getty@.service 的 systemd 单元都不会受到此更改的影响。

如果 kmscon 因任何原因无法启动,此单元将导致启动 getty@.service。此外,如果没有任何 VT 可用,则此单元将不会启动任何内容。

警告: 如果您已替换所有终端上的 agetty,请注意确保 kmscon 在您重启机器之前向您显示提示符,否则您可能必须通过 live CD 恢复。

CJK 支持

Kmscon 通过默认字体引擎 pango 支持渲染 CJK 字符。但是,必须全局配置 fontconfig,以将 monospace 字体别名映射到正确的 CJK 字体。对于中国用户,提供了以下模板,经验证可以产生令人满意的中文字符渲染效果

/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
font-size=14

请参阅 kmscon(1)

您需要安装 ttf-dejavuwqy-microhei,它们都可从官方仓库获得。

故障排除

在 Xorg 和 kmscon 之间切换时出现问题

如果您在 Xorg 和 kmscon 之间切换时遇到问题,您可能需要将 hwaccel 添加到 /etc/kmscon/kmscon.conf。该文件和文件夹不属于软件包的一部分,因此必须手动创建。另一种可能性是编辑 systemd 服务文件

无音频控制

从版本 7 开始,如果您无法控制音频,请将您的用户添加到 audio 用户组。请注意此选择的缺点

Vim 不清除终端输出

Vim 可能会在不清除终端输出的情况下打开,仍然可以编辑文件,但文本在更改之前不可见。作为一种解决方法,请尝试设置环境变量 TERM=vt220。或者,另一个类似 vim 的编辑器(如 viNeovim)可能会起作用。

注意: 如果 TERM 设置为 vt220,则颜色支持不可用。

自动登录

可以通过将此添加到 /etc/kmscon/kmscon.conf 来自动以用户 username 身份登录,而无需询问密码

/etc/kmscon/kmscon.conf
# Example: Login as user "username" without asking for password
login=/bin/login -p -f username

或以用户 root 身份登录

/etc/kmscon/kmscon.conf
# Example: Login as root in a bash shell without asking for password
login=/bin/bash --login

HiDPI 支持

您可以使用 Ctrl++Ctrl+Shift+=Ctrl+- 快捷键动态更改字体大小。您还可以在 /etc/kmscon/kmscon.conf 中设置 'font-dpi' 和 'font-size',例如 'font-dpi=288',288 是 96 * 3,即 300% 缩放。96 是默认值。

无法从 KMS 控制台启动窗口管理器

从命令行使用 startx 或例如 sway 启动 Xorg 或 Wayland 会话将失败。要么保留传统的非 KMS tty 用于此目的,要么使用登录管理器。