« Linux 上で負荷に応じて CPU 周波数を変える (AMD A10-5700) | トップページ | NFSv4 + Kerberos 環境構築 »

2017-07-23

kmscon で Linux コンソールを日本語対応に

Linux コンソールを日本語対応にするにはいろいろ手はあるが、現時点で恐らく一番マトモに動作すると思われるのが kmscon。 kmscon についてはネット上にもそこそこ情報は出ているのでこれは自分向けの備忘録のようなものだが、 kmscon を Debian Stretch のパッケージにしたい人には参考になるかも…。

まずは kmscon リポジトリからソースコードを持ってくる。

$ git clone https://github.com/dvdhrm/kmscon.git

Git からではなくリリース版の tarball が欲しい場合には freedesktop から。

この手のシステム系のものは Debian のパッケージにしたいので、 Debian の Bug #700210 (wishlist) の最後に載っている Debian パッケージ化用 tarball (kmscon_8-1.debian.tar.xz) を持ってくる。これで OK …と思ったが、どうにも内容が古い。どうせなら systemd に対応させた形にしたいので、これをベースに Stretch に対応させたものを作ってみた。 ま、ベースと言っても controlchangelogsource/ 配下以外は全く別物になっていますが…。

kmscon_8+git0b345271~local1.debian.tar.xz

この tarball を上記ソースコードのディレクトリに展開する。 debian/changelog にかかれているバージョンは私が build した時点の Git リポジトリを指しているので、適宜変更。 あとはいつものようにパッケージを作るだけ。 私は debuild を使って以下のように。

$ cd kmscon
$ tar Jxvf ../kmscon_8+git0b345271~local1.debian.tar.xz
$ debuild -us -uc -b

開発環境の -dev ファイル等が足りないとエラーになるので、その場合は表示された必要パッケージを追加インストールして再度 build する。

出来上がったパッケージをインストールすれば systemd で扱うためのお膳立ては出来上がるが、デフォルトでは何も有効にしていない。

tty1 で kmscon を使いたいならば以下のようにして getty を置き換える。

# systemctl disable getty@tty1.service
# systemctl enable kmsconvt@tty1.service

私自身は tty1 の getty を置き換えるのはリクスが高いと考え、以下のようにして tty2 以降で自動起動するように設定している。 このあたりは archlinux の wiki が参考になる。

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

本来ならパッケージ化の際に dpkg-divert あたりを使って getty の autovt の置き換えをしたほうがいいのかもしれないが、そこまでやる気力はなかったので…。 kmscon が不要になった場合には、パッケージを削除しても /etc/systemd 配下のシンボリックリンクが残ったままになるので、マニュアルで削除してください。

systemd のことを嫌う人も多いようだが、私自身はこのあたりの仕組みは悪くないと思う。

また、 kmscon は xkb と同じキー配列を扱えるものの、設定は標準コンソールの keyboard-setup や xorg の設定は参照していないため、独自に設定する必要がある。 /etc/kmscon/kmscon.conf に設定ファイルがあるので、最低限 xkb-layout は自分のキーボードに合わせておく。

これで [Ctrl]+[Alt]+[F2] 〜 [F6] で kmscon が起動するようになるはず。

【2023年6月追記】

Debian bookworm では kmscon がパッケージ化されたので上記のようにソースコードからコンパイルする必要は無くなった。

また、 Debian bookworm では tty1 に getty が動作していると gdm3 と競合して GUI が起動しなくなる (ディスプレイリソースを奪い合う)。
※ ディスプレイマネージャとして gdm 以外の sddm や lxdm 等を使っている場合には問題ない

実際の GUI セッションが tty2 で動作するということもあり tty3 以降で起動するようにするか、前述のように autovt@.service のシンボリックリンクを行うことで空き tty で自動起動するようにした方がいい。

# systemctl disable getty@tty1.service
# systemctl enable kmsconvt@tty3.service
【2019年4月追記】

上記のままだと Debian Buster でコンパイルするとエラーになる。 これは既に issue #131issue #134 として出ている既知の問題。
kmscon の fork である jonnrb 版は issue #131 には対処できているが issue #134 には対処できていない。 他にも Aetf 版の fork があるが、こちらは libtsm のバージョンも 4 にアップデートしなければならないため、 Buster ではそのままでは使えない。 このため、これを回避するパッチを含めたものを以下に上げた。

kmscon_8+git0b345271~local2.debian.tar.xz

« Linux 上で負荷に応じて CPU 周波数を変える (AMD A10-5700) | トップページ | NFSv4 + Kerberos 環境構築 »

Linux」カテゴリの記事

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

トラックバック


この記事へのトラックバック一覧です: kmscon で Linux コンソールを日本語対応に:

« Linux 上で負荷に応じて CPU 周波数を変える (AMD A10-5700) | トップページ | NFSv4 + Kerberos 環境構築 »

2024年11月
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
無料ブログはココログ