跳转至内容

KMSCON

来自 ArchWiki

来自项目的 git 仓库

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

特性

Kmscon 可以作为内核内 Linux 控制台的直接替代品。功能包括:

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

安装

尽管名称中有 KMS,但 KMS 并非 kmscon 的硬性要求。Kmscon 支持以下视频后端:drm3d(Linux DRM 硬件渲染后端)、drm2d(Linux DRM 软件渲染后端)、已淘汰的 fbdev(Linux fbdev 视频后端)。请确保您的系统上至少有一个可用。

安装 kmsconAUR 包。

通常,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 进行恢复。
提示 您可以在启用所有虚拟终端的 kmscon 后启用 getty@tty1.service:这将允许用户从 tty1 的命令行启动图形会话,同时在剩余终端上享受 kmscon 的优势。

CJK 支持

Kmscon 支持通过默认字体引擎 pango 渲染 CJK 字符。但是,fontconfig 必须进行*全局*配置,将等宽字体别名映射到正确的 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.0 版本开始,如果您无法控制音频,请将您的用户添加到 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,或者使用登录管理器。