MENU

J2EE環境構築編

J2EE体験編

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

とするだけです。