jfbterm
(konが動かない)
linux-2.6.8以降、suidの扱いが変更になったらしく、いくつかのアプリケーションが正しく動作しなくなっています。
konもその一つです。
今までと同じように
kon
と入力すると
KON> error reading /etc/kon.cfg
というエラーになります。
straceを利用して調べてみると、
write(2, "can not get I/O permissions.\n", 29can not get I/O permissions.) = 29
なんていうメッセージが出ています。
おぼろげな記憶に基づいて書いてしまうので、正確ではないかも知れませんが、konは直接vga領域に書き込んでしまうという結構大胆な作りをしていたはずです。
そのあたりが許されなくなったのでしょう。
とにかく、このままではコンソールで日本語が使えません。
Xがあるといっても、いろいろ実験しているうちにXがきちんと動かなくなることだってありえます。そんな時のために、コンソールで一通りの作業ができることは必要不可欠です。
選択肢
さて、日本語の表示できるコンソールで、kon以外の選択肢があるのか、結構不安になりながら探してみたのですが、あるんですねぇ。
jfbtermは日本人が開発に当たっているので、日本語のドキュメント類が最初から用意されています。
カーネルにパッチを当てる必要がない、という点も重要です。
カーネルにパッチを当てることで日本語表示を実現するものもありますが、カーネルのバージョンに依存することになるので、当サイトのポリシーからすると避けて通りたいものです。
準備
カーネルの再構築
jfbtermはフレームバッファを利用するので、カーネルにフレームバッファを組み込んである必要があります。
フレームバッファが有効かどうか、簡単に判断する方法はあまりないのですが、liloやgrubから起動する時に、画面の左上にtux君の小さなロゴが表示されているならば、有効になっています。
ロゴが表示されていない場合も、英数文字が横に100字以上表示できそうな小さな文字で表示されているなら、有効になっています。
確実なのは、dmesgを実行した時にvesafbで始まる行があるかどうかなので、grepして確認してみるのもいいでしょう。
もしもこれらの作業を通じてフレームバッファが有効になっていることを確認できないならば、カーネルを再構築する必要があります。
カーネルを再構築する時に有効にしておくべきオプションは
Device Drivers --->Graphics support --->Support for frame buffer devices
--->Enable Video Mode Handling Helpers
--->VESA VGA graphics support
--->Console display driver support--->Video mode selection support
--->Framebuffer Console support
--->この下のフォント関連を全部
です。
フォントは不要なのかも知れませんが、このオプションで動いているので、このように書いておきます。
makeしたら、然るべき場所に配置しましょう。
新しいカーネルはarch/i386/boot/bzImageにあります。
その際、今ある(動いている)カーネルを上書きせず、別の名前で保存しておくと、万一失敗した時の保険になります。
というより、カーネルの実験をするならば、今動いているカーネルを上書きしないことをお勧めします。
grub.confやlilo.confに修正が必要になりますが、その方法も後で紹介します。
準備
grub.confまたはlilo.confの修正
この作業を飛ばしても、フレームバッファを有効にしたカーネルは起動するはずですが、せっかくですから広いコンソールを入手しましょう。
カーネルに渡すパラメータとして
video=vesafb vga=0x316
を加えます。
grubを使っている人は、kernelで始まる行の最後の方に追加するだけです。
kernel (hd1,4)/bzImage root=/dev/hdb5 ro video=vesafb vga=0x316
こんな感じ。
liloを使っている人はappendを利用します。
append="video=vesafb vga=0x316"
保険
カーネルの再構築に失敗すると、最悪の場合は再インストールです。
そのような事態を多く経験することがlinuxを理解する上で不可欠だとは思いますが、失敗してもダメージを最小限に食い止める方法を紹介しておきます。
といっても、それほど大げさなものではありません。
新しく作ったカーネルイメージの名前を/bzImage-fbtestなどとしておいて、lilo.confなりgrub.confなりに新しいエントリを用意するだけです。
title linux
root (hd1,4)
kernel (hd1,4)/bzImage root=/dev/hdb5 ro
というgrub.confのエントリがあるとして、これが今現在動いているカーネルだとします。
これをコピーしてちょっと修正します。
title linux
root (hd1,4)
kernel (hd1,4)/bzImage root=/dev/hdb5 ro
title linux-fbtest
root (hd1,4)
kernel (hd1,4)/bzImage-fbtest root=/dev/hdb5 ro video=vesafb vga=0x316
こんな感じ。
これで、万一失敗しても、元のカーネルに戻ることができます。
jfbtermのインストール
これはほとんど問題ないはずです。
ソースはこの辺りにあるのでもってきて
./configure --prefix=/usr
make
make install
tic terminfo.jfbterm
で終りです。
これだと、/usr/etc/以下に設定ファイルが入るので、/usr/etc/jfbterm.conf.sampleを/usr/etc/jfbterm.confという名前でコピーして、その内容を修正します。
といっても、 52行目辺りを
encoding : EUC-JP
とするだけです。 |