KMSCON - Arch Linux 中文维基

跳至內容

# KMSCON

出自 Arch Linux 中文维基
翻譯狀態：

- 本文（或部分內容）譯自 KMSCON，最近一次同步於 2023-03-16，若英文版本有所更改，則您可以幫助同步與翻譯更改的內容。
- 您可以在 ArchWiki 的對應頁面找到本文翻譯的原始修訂歷史。
- 本文可能與英文原文存在出入。

相關文章

- Kernel mode setting
- systemd

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包，或者安裝最新開發版 kmscon-gitAUR。

在 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-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）可能會正常工作。

### 自動登錄

你可以在 `/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. ↑ 來自該項目代碼庫的介紹

分類：​

- 終端模擬器

KMSCON
新增話題