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 に対応させたものを作ってみた。
ま、ベースと言っても control
や changelog
と source/
配下以外は全く別物になっていますが…。
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 #131 や issue #134 として出ている既知の問題。
kmscon の fork である jonnrb 版は issue #131 には対処できているが issue #134 には対処できていない。
他にも Aetf 版の fork があるが、こちらは libtsm
のバージョンも 4 にアップデートしなければならないため、 Buster ではそのままでは使えない。
このため、これを回避するパッチを含めたものを以下に上げた。
« Linux 上で負荷に応じて CPU 周波数を変える (AMD A10-5700) | トップページ | NFSv4 + Kerberos 環境構築 »
「Linux」カテゴリの記事
- Debian Linux を Secure Boot 環境で使う(2023.03.06)
- コンテナで GUI / GPU を使う(2022.10.19)
- 仮想環境のイメージ格納場所の移動(2022.09.10)
- Kodi の設定(2019.12.02)
- メインマシンを AMD Ryzen 5 2400G に(2019.06.24)
« Linux 上で負荷に応じて CPU 周波数を変える (AMD A10-5700) | トップページ | NFSv4 + Kerberos 環境構築 »
コメント