KMSCON (简体中文)
来自 该项目代码库 的介绍:
- Kmscon 是基于 linux 内核级显示模式设置的简单终端模拟软件。它试图以用户空间终端替代内核中的虚拟终端实现。
特性
KMSCON 能作为 Linux 内核内置终端的一个完整替代,它具有以下功能:
- 完整的 vt220 to vt510 实现。
- 完整的国际化支持:
- Kmscon 支持打印全部 Unicode 字符,包括中日韩文字。
- Kmscon 通过 libxkbcommon 对国际键盘布局提供支持,所以人们可以使用 X 支持的所有键盘布局。
- 硬件加速渲染。
- 支持 multi-seat。
/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
,此外没有虚拟终端可用时这个单元不会启动。
中日韩文字支持
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-dejavu 和 wqy-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 的编辑器(例如 vi 或 Neovim)可能会正常工作。