ホームに戻る

emacsをちょうどよい大きさにする

通常のEMACS LOOXの画面は横長です。ですから、emacsなどを使うと、横があまります。左の写真のような感じです。まぁこれはこれでええじゃん、と言えばええじゃん、で済むのですが、せっかくだから画面をいっぱいに、横の余り部分がないように使えないかなぁ、と思います。
 特に私は英和辞書をインストールして使ってますが、lookupというemacs-lispによる辞書引きプログラムで英和辞書を引く時など、普通にemacsを使うと画面が上下に分割されます。せっかく横長の画面を上下に分割してはつまらん。emacsを横長にしておいて、左右に分割したほうが画面のレイアウト上もいいはずだ。ということでemacsを横長に立ち上げ、かつ最初から左右に分割した状態で置いておくようにしました。
 emacsを起動した時にはかならずこうなるようにするためには、.emacs(Vine Linuxの場合、.emacs.el)の最後の方に、

(set-frame-position (selected-frame) 0 0)
(set-frame-size (selected-frame) 116 34)
(split-window-horizontally 82)

横幅広げて縦分割したEMACSのように書いておきます。こうするとemacsは立ち上がるなり自分のフレーム(emacs用語でウィンドウのこと)を横116桁、縦34桁にし、その中に横82文字のウィンドウ(emacs用語では、フレームの中を分割した結果がウィンドウ)を作り、横の余った部分は別ウィンドウになります(スクロールバーなどにとられるせいか、ウィンドウの中身の桁数は78になってます)。もしemacs のフォントを16ドットにしているなら、だいたいこれで画面にちょうどいっぱいぐらいになるはずです。
 右の写真がこうやって立ち上げたemacsです。この写真は小さくしたのでわかりにくいですが、右側のウィンドウではlooupで辞書を引いた結果が表示されてます。
 ただし、私の場合はウィンドウマネージャーに WindowMakerを使っているので右端のアイコンが並ぶ部分まで広がらない大きさにしてます。ここまで広がってよければ、横をもう少し広げてもいいでしょう。でかいフォントを使う人はもっと桁数を小さく、小さいフォントを使う人はもっと桁数を大きくすればよいでしょう。
 Xemacsとかmuleとかでも同じようにできるとは思いますが、やったことないので知りません。

longrunの設定

 CrusoeというCPUには、longrunという、CPUが忙しい時はクロックをあげ、そうでない時はクロックを下げて休んで、バッテリーの持ちをよくするという機能があります。Linuxの上からでもこのlongrun機能をコントールするユーティリティがあって、たとえばkernel.orgのここからソースをダウンロードできます。コンパイルはたぶんmake一発で通ります。問題は、cpuid関連の機能がカーネルにインストールされてないと動かないので、カーネルをリコンパイルする時、CONFIG_X86_MSRCONFIG_X86_CPUIDというスイッチをyにしておきましょう。cpuidやMSRを操作するためのdevファイルが必要になりますが、そのためのシェルスクリプトはソースの中にMAKEDEV-cpuid-msrという名前で入ってます。ありがたく使わせてもらいましょう。
 で、どうせなら「AC電源が刺さっている時はパフォーマンス重視で、バッテリ駆動の時は経済的に動かしたい」というわけで、AC電源が抜き差しされた時に設定を変えるようにしておくと幸せです。
 Vine2.5の場合、この設定は/etc/sysconfig/apm-scripts/apmscriptというシェルスクリプトを書き換えて行います。apmデーモンが動いていれば、AC電源が抜き差しされた時、このスクリプトが「change power」という引数を伴って実行されます。スクリプトの200行目くらいからを

change)
	case $2 in
	power)
		# Change from battery power to AC power or vice versa.
		# You might want to stop/restart any unnecessary CPU intensive
		# tasks (seti@home, distributed.net clients, etc) here.
		
		OFF=`apm | grep off`
		if [ "$OFF" = "" ]; then
		    /usr/sbin/longrun -f performance
		    /usr/sbin/longrun -s 0 100	
		else
		    /usr/sbin/longrun -f economy
		    /usr/sbin/longrun -s 0 100
		fi
		;;
	battery)
# Battery low. If you want to be on the safe side, maybe put
# the harddisk into extreme powersaving, or "apm -s" here.
;;
  esac


 と書き直します(赤字が書き足した部分)。apmコマンドは、AC電源がない時は「off-line」という単語の入ったメッセージを返すので、AC電源がささっていれば、OFF=`apm | grep off`の結果は空文字列になるので、その場合はパフォーマンスモードに、そうでない場合はエコノミーモードに変えています。-sオプションは好みにより変えてもいいでしょう。たとえばパフォーマンスモードの時はずっと100%でぶん回せ、という場合は/usr/sbin/longrun -s 100 100としておけばいつでも100%の速度で走ります(ちなみに0は0%というわけでは実はなくて、300MHzで走る)。ところでこの下にバッテリがクリティカルになった時にスクリプトを実行する、ということができるらしいのだけど、実際に「apm -s」(コンピュータをサスペンド状態にしろ、という命令)を記述してみると、サスペンド途中で止まります。もしかしてapmscriptの中から「apm -s」を介してまたapmscriptを呼び出しているせいかも。回避方法がわからんのでバッテリ容量を監視する別のプログラムを書いてcronで3分ごとに呼び出してますが(^^;)。なんかまたいい方法見つけたら報告します。

カーネル2.5.49-ac1+jconsole-patch

 Linuxのカーネルを2.5.49-ac1に入れ替え、さらにjconsole-patch(Xではなく、フレームバッファコンソール上で漢字を使えるようにするパッチ。Xなしで漢字表示が可能になる)をあててみました。このパッチを当てると、起動即、Xを立ち上げなくても漢字の使用が可能になります。
 実は前にも2.4.18あたりのカーネルでも同じことをやってみたのですが、その時はコンソールでフレームバッファを使うとXが非常に遅くなってしまったのでフレームバッファを使うのをあきらめたのです。しかし、2.5.49にしてみると、フレームバッファを使ってもXがちゃんと普通に動きました。じゃあというわけでjconsole-patchもやってみたわけです。

 まず2.5.49-ac1ですが、ソースはもちろんwww.kernel.orgもしくはそのミラー(ftp.ring.gr.jpの/pub/linux/kernel.orgあたりでもよいかと)からたぐって、2.5.49のtar球をとってきて、さらにac1-patch(Alan Coxパッチ。たとえば、ftp.ring.gr.jp/pub/linux/kernel.org/kernel/people/alan/の下linux-2.5の中にある)をとってきて当てます。

 ちなみにパッチをあてる、というのは、ソースツリーのルート(たいていの場合は/usr/src/linux)に行って、

gzip -c -d パッチファイル名 | patch -p1

とやるということです。

 これを書いている間にカーネルのバージョンはどんどんあがって、書いている時点でもう2.5.51まで来てます。たぶん新しいバージョンでも同様にできるとは思いますが、どうなるかはやってみなくちゃわかりません。

 次に、大野洋史さんの作られたLinux日本語コンソールのページに行って、jconsoleのパッチをとってきて、まずはえいやあっ、とあてます。すると、まず二つのファイルに関して、「このファイルが見つからんぞ」とpatchが文句を言ってきます。あと、.rejファイル(patchプログラムがこのパッチは当たらん、と拒否した内容が書かれている)が2つできます。

 ファイルがないぞと文句を言われるのはDocumentation/Configure.helpdrivers/char/console.cです。Configure.helpがないのは、2.5ではこのファイル自体がないからです。というわけでこのパッチにあたる部分は手で修正します(後述)。console.cの方はvt.cに名前が変わっているので、そっちに当てます。

 linuxカーネルの2.5では、カーネルのコンフィグレーションのヘルプファイルなどの設定が、いろんなディレクトリに混在するようになってます。該当するファイルはdrivers/video/Kconfigです。これに関してはパッチファイルの中身を見ながら修正していけばいいんですが、結局は下に貼り付けたpatchのような修正をします。


--- linux.orig/drivers/video/Kconfig    2002-12-11 00:47:26.000000000 +0900
+++ linux/drivers/video/Kconfig 2002-12-10 19:43:29.000000000 +0900
@@ -1059,6 +1059,30 @@
        depends on !FBCON_ADVANCED && FB_STI
        default y

+config FBCON_LANGEXT
+       bool "Support Multi-Language Extension"
+       help
+         Support multi-language extension. (for Japanese euc_jp encoding)
+
+config FBLANG_EUC_JP
+       bool "Support Japanese EUC_JP Encoding"
+       depends on FBCON_LANGEXT
+       help
+         Support Japanese euc_jp encoding.
+
+config FONT_KANJI_16x16
+       bool "Japanese Kanji 16x16 font"
+       depends on FBCON_LANGEXT && FBLANG_EUC_JP
+       help
+         This is Japanese kanji font for Japanese euc_jp encoding.
+
+
+config FONT_MARU_16x16
+       bool "Japanese Marumoji 16x16 font"
+       depends on FBCON_LANGEXT && FBLANG_EUC_JP
+       help
+         This is Japanese marumoji font for Japanese euc_jp encoding.
+
config FBCON_FONTWIDTH8_ONLY
        bool "Support only 8 pixels wide fonts"
        depends on FB

 この緑色部分を切り取ってpatchに食わせてみてください。

 あとはソースツリーのルートでmake menuconfig(あるいはmake xconfig)します。この時に注意するべきことを羅列しておくと、

・モジュール機能はうまく動かないので使わないこと(現在調査中)
・CPUはCrusoeを選ぶこと(あたりまえ)
・/dev/cpu/*/msrと/dev/cpu/*/cpuidは有効にしておいた方がいい。longrunを使うのに必要。
・パワーマネージメントはACPIをオフにして、APMを使うのが無難。
・IDEにAli15x3を選ぶと、起動時にエラーメッセージが出る。でも動くから気にしないことにする(^^;)。
・LANはRTL8139。
・2.5系カーネルでは、Input deviceの中でキーボードを有効にするのを忘れると手も足も出なくなります(^^;)。
・フレームバッファを当然選ぶんだけど、ATI Mach64を選択しても有効にならない様子。とりあえずVESAを使おう。
・フレームバッファのメニューの下の方にMulti Language と Japanese EUCのサポートの選択が出るので迷わずオン。
・サウンドはALSAでAli M5451を選ぶと吉。
・USBはOHCIです。
・kernelデバッキングをオンにすると起動に失敗することがあるので注意。

 起動時にあたえるパラメータとして、liloなら(いやliloしか知らんのだけど)

vga=789

を追加しておきます。これで800x600でフレームバッファが有効になるはずです。ほんとは1024x600にしたいところですがまだ成功してません。

 以上をやった後で気づいたんですが、UNICONというプロジェクトもあって、そっちでも漢字が出せます。どころか2.6からVineの標準になってました(^^;)。私はいつも自分でカーネルコンパイルしていて、Vineの標準カーネル使ってなかったから気づかなかった(^^;)(;_;)(^^;)(;_;)。

 2.5.49-ac1+jconsoleにしてよかったこと。

1.サウンドドライバをALSAにしたら、サスペンドの前後でサウンドがおかしくなる現象が出なくなった。
2.5回に1回ぐらいサスペンドに失敗してハングするということがなくなった。
3.コンソールで日本語が使えるようになった。

 あと、見ているとできる限りスワップを使わないように動いているみたいです。まぁ、体感的に早くなっていると感じるほどではないけど、パフォーマンスもよくなっているはず。

LOOXをいびつに使う、のトップへ戻る

ホームに戻る