X不要で動作する高機能ターミナルエミュレータFbTermLinux Hacks

フレームバッファ上で直接動作するターミナルエミュレータ「FbTerm」は、サーバのメンテナンスにせよ、組み込みデバイス関連の用途にせよ、試してみる価値が十分にある。

» 2008年09月09日 00時00分 公開
[Ben Martin,ITmedia]
SourceForge.JP Magazine

 FbTermは高速に動作するターミナルエミュレータであり、これは各自のシステムに搭載されたフレームバッファ上で直接動作する設計となっている。フレームバッファの使用を前提とした設計のおかげで、FbTermでは処理速度の高速化が果たされているだけでなく、ターミナル上でUTF-8テキストを使用することもできる。こうしたFbTermの開発目的として挙げられているのが、一般的なLinuxカーネルターミナルと同等の速度を確保すると同時に、インターナショナルな表示機能のサポートおよび、fontconfigを介した近代的なフォント管理機能を提供するというものである。またFbTermの場合、1つのフレームバッファに対して10個の異なるターミナルウインドウを同時に展開でき、個々のウインドウにはスクロールバック用の履歴が保持されるようになっている。

 FbTermの有すもう1つの特長は、Xの未インストール環境であっても簡単にターミナルが使用できることである。確かにその種のシステムに対する管理作業の大部分は、SSHを介してシステムにログインした状況下で行うものかもしれないが、システム上での拡張セッションとして直接実行するケースに遭遇することもあるはずだ。

 FbTermのバージョン1.0は先月リリースされたばかりである。歴史の浅いFbTermであるため、現状ではメインストリーム Linuxディストリビューションのパッケージリポジトリに収録されていないケースが多いのも、ある意味致し方ないところであろう。例えばUbuntuおよびFedora用にパッケージ化はされていないが、openSUSE 11では1-Clickインストールが可能になっている。わたしの場合、本稿の執筆用に先月リリースされたFbTerm 1.0を64ビット版Fedora 9用にソースからビルドしたが、その際に用いたのは「./configure; make; sudo make install」という通常のプロセスである。

 FbTermを使用する場合、最初に遭遇する可能性の高いトラブルは、/dev/fbファイルがインストールされていないというものだ。実際にわたしの場合も、NVIDIAおよびATIグラフィックスカードを搭載した2台のマシンで、Fedora 9用のフレームバッファデバイスが作成されていなかった。ところが意外なことに、かなり旧式なS3 PCIグラフィックスカード搭載マシンのFedora 9インストレーションに関しては、/dev/fb0のフレームバッファが作成されていたのである。いずれにせよこれらデバイスファイル群を入手する一番簡単な方法は、各自のカードに適したカーネルモジュールを追加することだろう。例えばATI X300を搭載したラップトップの場合、フレームバッファデバイスを作成させるには「modprobe radeonfb」というコマンドを実行すればいい。通常フレームバッファモジュールの格納位置は、後記のような各システムのカーネル中とされるはずである。

/lib/modules/`uname -r`/kernel/drivers/video


 /dev/fb(実際には/dev/fb0に対するシンボリックリンクとされている場合が多い)がインストールできたら、FbTermを実行する準備はほぼ整ったことになる。ただしこの設定段階におけるFbTermの実行にはroot権限が必要だが、実用上は一般ユーザーの権限で実行できる方が便利だろう。実のところ一般ユーザーによるFbTermの実行が行えない原因は、/dev/fb0デバイスの実行権限がrootに対してのみ与えられているからにすぎない。この問題の回避策の1つは「chown username /dev/fb0」コマンドを使用することだが、あるいはフレームバッファ用のグループを作成して必要なユーザーを登録しておく方法も考えられる。

 しかし、fbのシンボリックリンク作成を規定しているのは/etc/udev/rules.dディレクトリに置かれた50-udev-default.rulesファイルなので、必要なグループや実行権限をfbデバイスの作成時に設定するためのカスタムudevルールを作成してしまう方が、よりシステムフレンドリな実行権限の回避策といえるだろう。具体的には、後記に例示したようなフレームバッファ.rulesファイルをmy-rules.dディレクトリに用意しておくことで、指定したユーザーが所有権を持つfb0デバイスが作成されるようになる。

# mkdir -p /etc/udev/my-rules.d

# cd /etc/udev/my-rules.d

# cat framebuffer.rules

KERNEL=="fb0", OWNER="username", MODE="0640"


 指定したユーザーによりアクセス可能なフレームバッファデバイスの準備ができたら、後はfbtermコマンドでターミナルを起動すればいい。そしてFbTermの初回起動時には、表示カラーとフォントのデフォルト指定に関する設定ファイルが~/.fbtermrc に作成されるはずである。例えばATIグラフィックスチップ搭載のFedora 9ラップトップの場合、デフォルトで作成される設定ファイルは、次のように記述されている。

# Configuration for fbterm

# font family/pixelsize used by fbterm, mulitple font families must be separated by ','

font_family=mono

font_size=12

# default color of foreground/background text

# available colors: 0 = black, 1 = red, 2 = green, 3 = brown, 4 = blue, 5 = magenta, 6 = cyan, 7 = white

color_foreground=7

color_background=0


 FbTermでも、Shift+PageUpキーでターミナル表示を1ページ分戻すなど、通常使われるキーボードバインディングが利用できる。またCtrl+Alt+Cキーでフレームバッファウインドウを複数作成することも可能で、マルチウインドウ間の切り替えはShift+LeftおよびShift+Rightキーで行えばいい。あるいはCtrl+Alt+番号キーによる指定ウインドウへの直接移動も可能だ。なお FbTermのウインドウ群は、Alt+ファンクションキーで呼び出せるgettyセッション群とは独立した存在となっている。

FbTerm FbTerm

 ここに掲載したスクリーンショットは、FbTermでサイズ16のSazanami Gothicフォントを用いたターミナル画面の一部だが、日本語の平仮名と漢字が正常に表示されている点を確認していただきたい。

 今回わたしは、FbTermのパフォーマンス試験として、Project Gutenbergから公開されている『Dead Souls』という小説を表示させてみた。これは1万5000行から成るファイルなのだが、catからの読み込みにデフォルトのLinuxカーネルターミナルの場合は実に14.8秒もの時間を要したのに対し、Sazanami Gothicフォントを指定したFbTermでのターミナル表示はわずか1.2秒で済んでしまったのである。

 「この操作に失敗した場合はどう対処すべきか」という懸念の下で何らかの操作を行う状況に追い込まれた場合、今後わたしはSSHセッションでfbtermを実行するだろう。もちろんこうした意見にすべてのユーザーが同意するとは限らないが、実際に試してみれば、インタラクティブなターミナル操作にstdinは適していないことを実感してもらえることと思う。

 いずれにせよフレームバッファ上で動作するターミナルエミュレータを探し求めているユーザーであれば、サーバのメンテナンスにせよ、組み込みデバイス関連の用途にせよ、FbTermは試してみるだけの価値を有しているはずだ。

Ben Martinは10年以上にわたってファイルシステムに取り組んでおり、博士課程の修了後、現在はlibferris、ファイルシステム、検索ソリューションを中心としたコンサルティング業に従事している。


Copyright © 2010 OSDN Corporation, All Rights Reserved.

注目のテーマ