Qbilinux 日記

Linux に関係することだけではなく,最近は一般的なコンピュータやガジェット関係についても記載してます.

Linux の日本語コンソール周りを少しだけ調べてみた

Plamo Linux では kernel に unicon patch を当てて日本語表示しています.けど,unicon は UTF8 対応していません.

おまけに,手元のデスクトップマシンには nvidiaビデオカードを積んでるんだけど,その状態では unicon モジュール中でエラーで落ちて日本語が表示できない状態になってしまいます.現在の Plamo Linux には日本語インストーラしか用意されていないので,この状態だとインストール作業も文字化けした環境で行わざるを得ない状態になってしまいます.intel グラフィックチップなノートパソコンだと unicon で大丈夫なので,多分,nvidia と unicon という組み合わせがダメダメなんだろうなぁ.

ってことで,Plamo 7.x では kmscon を使おうとしてるようです.また,昔はあったけど削除された英語のインストーラも復活するようで,仮に日本語が文字化けした環境でも,英語インストーラーをつかえば何とかなる形になるようです.

ということですけど,私の方でも日本語コンソールを表示する方法をざっと調べてみました.

  • kernel に直接パッチを当てるもの
  • プログラムを起動して表示するもの\
    • jfbterm
    • fbterm
    • kmscon

くらいがある感じですね.

utf-8 kernel ってどんな感じなんでしょうかね.ちょっと調べきれなかったんだけど,最近は更新されていないような雰囲気.スルーでよさそうかなぁ.

プログラムを起動する形の物は少し手元でコンパイルして使ってみるかなぁとざっとコンパイルしてみました.

jfbterm, fbterm, kmscon の中で圧倒的にライブラリの依存関係が少ないのは jfbterm ですね.fbterm, kmscon となるにしたがって依存関係が多くなっていきます.

逆に手作業での設定が色々と必須なのが jfbterm.一方の fbterm, kmscon は fontconfig を引っ張ってくるので手作業設定はほとんど必要ない感じですね.

表示品質は jfbterm と kmscon が良さそう.fbterm も設定を追い込めば同等にはなりそうだけど,面倒だったのでやってません.あ,ほとんどデフォルト環境での表示品質の比較ね.

ざっとそんな感じかな.

いろんな用途に使う場合に使い勝手が良いのは kmscon だと思います.けど,実際に使う際の使用頻度とか必要な機能を考えるとインストーラーに仕込むのには jfbterm で良いような気がするけど,jfbterm は最近メンテされていないのと,いろんな表示がずれることがあるって話だから避けたのかな?メンテ工数も増えちゃうしね.

もう少し,色々と使ってみるかな.

ちなみに,何も考えずにビルドしたときの依存ライブラリの数はこれくらい違います.

$ ldd jfbterm
linux-vdso.so.1 (0x00007fff08fe8000)
libutil.so.1 => /lib64/libutil.so.1 (0x00007fd99c97e000)
libm.so.6 => /lib64/libm.so.6 (0x00007fd99c66a000)
libc.so.6 => /lib64/libc.so.6 (0x00007fd99c2a0000)
/lib64/ld-linux-x86-64.so.2 (0x00005590d4816000)

$ ldd fbterm
linux-vdso.so.1 (0x00007fff35350000)
libfreetype.so.6 => /usr/lib64/libfreetype.so.6 (0x00007f7540ade000)
libfontconfig.so.1 => /usr/lib64/libfontconfig.so.1 (0x00007f754089b000)
libutil.so.1 => /lib64/libutil.so.1 (0x00007f7540698000)
libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007f7540317000)
libc.so.6 => /lib64/libc.so.6 (0x00007f753ff4d000)
libharfbuzz.so.0 => /usr/lib64/libharfbuzz.so.0 (0x00007f753fcba000)
libglib-2.0.so.0 => /usr/lib64/libglib-2.0.so.0 (0x00007f753f98f000)
libpcre.so.1 => /usr/lib64/libpcre.so.1 (0x00007f753f74b000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f753f52d000)
libbz2.so.1.0 => /lib64/libbz2.so.1.0 (0x00007f753f31d000)
libpng16.so.16 => /usr/lib64/libpng16.so.16 (0x00007f753f0e8000)
libz.so.1 => /usr/lib64/libz.so.1 (0x00007f753eecb000)
libm.so.6 => /lib64/libm.so.6 (0x00007f753ebb7000)
libexpat.so.1 => /usr/lib64/libexpat.so.1 (0x00007f753e98b000)
/lib64/ld-linux-x86-64.so.2 (0x00007f7540dcf000)
libgcc_s.so.1 => /usr/lib64/libgcc_s.so.1 (0x00007f753e774000)

$ ldd kmscon
linux-vdso.so.1 (0x00007ffe77151000)
libtsm.so.3 => /usr/lib64/libtsm.so.3 (0x00007f5166825000)
libudev.so.0 => /lib64/libudev.so.0 (0x00007f5166617000)
librt.so.1 => /lib64/librt.so.1 (0x00007f516640f000)
libEGL.so.1 => /usr/lib64/libEGL.so.1 (0x00007f51661e3000)
libgbm.so.1 => /usr/lib64/libgbm.so.1 (0x00007f5165fd6000)
libGLESv2.so.2 => /usr/lib64/libGLESv2.so.2 (0x00007f5165dcd000)
libdrm.so.2 => /usr/lib64/libdrm.so.2 (0x00007f5165bbd000)
libxkbcommon.so.0 => /usr/lib64/libxkbcommon.so.0 (0x00007f5165972000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f5165754000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f5165550000)
libc.so.6 => /lib64/libc.so.6 (0x00007f5165186000)
libxcb-dri2.so.0 => /usr/lib64/libxcb-dri2.so.0 (0x00007f5164f81000)
libX11-xcb.so.1 => /usr/lib64/libX11-xcb.so.1 (0x00007f5164d7f000)
libX11.so.6 => /usr/lib64/libX11.so.6 (0x00007f5164a44000)
libxcb-dri3.so.0 => /usr/lib64/libxcb-dri3.so.0 (0x00007f5164841000)
libxcb-present.so.0 => /usr/lib64/libxcb-present.so.0 (0x00007f516463e000)
libxcb-randr.so.0 => /usr/lib64/libxcb-randr.so.0 (0x00007f5164431000)
libxcb-xfixes.so.0 => /usr/lib64/libxcb-xfixes.so.0 (0x00007f516422a000)
libxcb-render.so.0 => /usr/lib64/libxcb-render.so.0 (0x00007f5164021000)
libxcb-shape.so.0 => /usr/lib64/libxcb-shape.so.0 (0x00007f5163e1d000)
libxcb-sync.so.1 => /usr/lib64/libxcb-sync.so.1 (0x00007f5163c17000)
libxcb.so.1 => /usr/lib64/libxcb.so.1 (0x00007f51639f8000)
libXau.so.6 => /usr/lib64/libXau.so.6 (0x00007f51637f5000)
libXdmcp.so.6 => /usr/lib64/libXdmcp.so.6 (0x00007f51635ef000)
libxshmfence.so.1 => /usr/lib64/libxshmfence.so.1 (0x00007f51633ed000)
libexpat.so.1 => /usr/lib64/libexpat.so.1 (0x00007f51631c1000)
libm.so.6 => /lib64/libm.so.6 (0x00007f5162ead000)
libglapi.so.0 => /usr/lib64/libglapi.so.0 (0x00007f5162c7d000)
/lib64/ld-linux-x86-64.so.2 (0x00007f5166a35000)

以上,参考までに.