KMSCON

出自 Arch Linux 中文维基

Kmscon 是一個簡單的、基於 Linux 內核級顯示模式設置的終端模擬器,嘗試用用戶空間終端代替內核的虛擬終端(VT)。[1]

特性[編輯 | 編輯原始碼]

KMSCON 能作為 Linux 內核內置終端的一個完整替代,它具有以下功能:

  • 完整的 vt220 to vt510 實現。
  • 完整的國際化支持:
    • Kmscon 支持打印全部 Unicode 字符,包括中日韓文字。
    • Kmscon 通過 libxkbcommon 對國際鍵盤佈局提供支持,所以人們可以使用 X 支持的所有鍵盤佈局。
  • 硬件加速渲染。
  • 支持 multi-seat
注意: 要允許 root 用戶通過 kmscon 登錄,你需要移除或註釋 /etc/pam.d/login 中相應行來停用 pam_securetty 模塊。

安裝[編輯 | 編輯原始碼]

雖然名字裏帶有 KMS,kmscon 並非硬性依賴 KMS。Kmscon 支持的視頻後端如下:drm3d(Linux DRM 硬解後端)、fbdev(Linux fbdev 視頻後端)。請確保你的系統支持其中之一。

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

你需要安裝 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)可能會正常工作。

自動登錄[編輯 | 編輯原始碼]

你可以在 /etc/kmscon/kmscon.conf中添加以下內容來自動登錄用戶(不需要輸入密碼):

# 你可以按需修改以下命令

# 例:以 root 用户直接登录(非 systemd 会话)
login=/bin/bash --login

# 例:以指定用户直接登录(正常 systemd 会话)
login=/usr/bin/machinectl -q shell 你的用户名@

HiDPI 支持[編輯 | 編輯原始碼]

使用 Ctrl++Ctrl+Shift+=Ctrl+- 快捷鍵可以實時更改字體大小。也可以在 /etc/kmscon/kmscon.conf 裡設置 font-dpi 和 font-size 選項,例如 font-dpi=288。288 = 96 * 3,也就是三倍大小。96 是默認值。

參考資料[編輯 | 編輯原始碼]

  1. 來自該項目代碼庫的介紹