SVX日記

2004|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|

2008-06-01(Sun) スリーブロックレギューレータ交換

  先日、スバルから届いた「スリーブロックレギュレータ」を交換する。「パワーウィンドウが動かなくなった」というだけで、脊髄反射的にこの部品を注文したが、ハズしてたら無駄金だなぁ。ナムサン。

  具体的な修理方法を公開しているサイトがないか、ババッと検索したところ、SVXを自分で直しに直しまくっているポヨさんのサイトが引っかかった。写真で説明してあるので非常に助かる。概略を頭に入れて、要点をちょっとメモして、ドライバほか何点かの道具を持って、SVXの元に向かう。

  どこで作業をしようか迷ったが、隣の車とソコソコ間隔があったので、駐車場に止めたまま作業をした。基本的にヒンジ近くのネジがドライバでユルめられる分だけドアが開けば作業は可能だ。

  画像の説明 画像の説明

  まずは、そのヒンジの近くのネジを外す。プラ製の内張りを止めているだけのネジなので、そんなに堅く締まっていない。2本外す。

  画像の説明

  次にドアのポケット部分の中のネジを外す。底に張ってあるフェルトで隠されているが、ちょっとズラせるようになっている。ドライバの先でちょっとズラして2本のネジを外す。

  画像の説明

  その並びで、ドアを開けるノブの下にあるネジも外す。こっちはプラスチック製の隠しカバーを外す必要がある。小さめのマイナスドライバが突っ込める隙間があるので、それを手がかりに外し、中にある1本のネジを外す。

  ちなみに、この3本のネジだが、ウチのSVXではネジの頭で挟み込む相手、つまり、ネジ穴の周囲のプラスチックが欠けてしまっており、ネジの頭以上の大きさ穴になっていた。いわゆる「バカ」になっている状態。ネジの意味ねぇー。

  画像の説明

  5本のネジを外したら、ドアの内張りの下側を引っ張って外す。バョン、バョン、バョン、と3カ所くらい。ただし、これは比較的簡単に外れるものの、パワーウィンドウのスイッチほかに接続されているケーブルが2系統あり、このカプラを外さないと内張りを分離できない。

  画像の説明

  ウチではこのカプラがかなり堅くハマっていて苦労した。ひとりでやっていると、大きな内張りを抱えたまま、不自然な体制での作業を強いられるのでなおさらだ。オイラが外れずにモガいていたら、内張りの端をドアのスピーカーに押し当ててしまっていて、スピーカーのリム(周囲のプヨプヨ)の部分を破損してしまった。かなり経年劣化していたから仕方がないが、出る音に大した影響がなくてよかった。気をつけよう。

  画像の説明

  無事、内張りを外すと……ビニールが全面を覆っている。で、患部のスリーブロックレギュレータはその内側。ポヨさんのサイトには「丁寧に剥がす」とあったが、ウチのは接着が強く、剥がそうとしてもビニール自体が伸びてしまいそうだ。ここは、思い切ってカッターでカットする。

  画像の説明

  さて、破損したスリーブロックレギュレータは……ない。下に落っこちたのか? と、思ったらワイヤを噛み込んだまま下の方にいた。パワーウィンドウを動かして、本来の位置に移動する。見ると、足の辺りが欠けている。ワイヤをココに留めておくのがコイツの仕事らしい。

  画像の説明

  破損したスリーブロックレギュレータを引き抜いて、新しいモノに交換、本来の位置にパチンと押し込む。修理完了。パワーウィンドウを動かして、窓が上下することを確かめる。バッチリ。

  画像の説明

  カットしてしまったビニールは適当なテープで補修しておく。しつこいようだがヒョウ柄なのはたまたまで、別に浜崎あゆみのファンだからではない。結構、好きだけど。

  フツーに修理を依頼すれば、ウン千円はかかっただろうが、バクチも当たり、557円で済んで助かった。しかし、最近のガソリンの高さは異常ですな。2, 3 回給油したら、こんな差額はフッ飛んでしまう。

  最近、トヨタが「エコで買い換え」という「エゴイズム丸出し」のCMをして反感を買っているが、あの会社の性根は最初からそんなもんである。以前にやっていた「エコからエゴへ」なんてCMの頃から、相も変わらず、周囲が見えていない。結局、新しい車がバンバン売れればそれでいいのが丸見え。こうまであからさまだと、昨年のF1の「テロ的な運営」も、起こすべくして起こった気までしてくる。

  と、思わず脱線したが、古い車を大事に乗るのもひとつのエコであると思う。そんなにエコエコいうなら、車作るのやめりゃいーのだ。

  まぁ、半分はSVXの自動車税が高い恨み節なのだが、結局は国ぐるみで「エコを商売のネタ」にしているだけなんだろう。つーわけで、オイラは薄っぺらなエコ活動家は大嫌いでなのであった。かぁー、ぺっぺっ。


2008-06-02(Mon) Fedora9、インストールチューン

  さて、先日から「Windows環境からの独立」を目的に、ジャンクのThinkPadX40を入手したり、そのHDD事情に絶望したり、SSD化したり、その遅さに驚愕したり、Fedora9を導入したり、その勝手の悪さに爆発したりしているのだが、ようやく「ほぼ独立に成功」することができた。

  ほぼ不満なく、日々の用途に使っている。その証拠に、ここ一週間Windowsを立ち上げていない。2年以上愛用しているノートPCで、初めての事態である。

  世にはアンチマイクロソフト野郎が溢れており、スラドに関連するトピックが上がる度に荒れているが、アンタらブツブツ言いながらも使ってんじゃあねぇの? 自分が脱出してしまってから見下ろすようでなんだけど、孫悟空ってぇ話、知ってるよね?

  なお、イザLinux環境に移行してみると、改めてWindowsのスゴさに気づくこともある。当然とはいえ、各種ハードウェアが素直に認識されるから何も考えずに済むし、アプリの品質も(高いものは)高い。

  だが、中の動作が何も見えず、押し付けられた機能の範囲でしか動くことしかできない環境が如何に不自由であるか気づいてしまうと、もう二度と戻りたくはないね。

  さて、インストールを始めることにしよう。

  今回のインストール先は、16GBのコンパクトフラッシュという特殊な環境だ。まぁ、決して広くはないが、狭すぎるというわけでもない。どちらかというと、問題はライトアクセスが遅いことだが、安いコンパクトフラッシュを使う以上は覚悟する必要がある。

  パーティショニングは以下とした。

Disk /dev/sda: 16.2 GB, 16240345088 bytes
255 heads, 63 sectors/track, 1974 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes
Disk identifier: 0x000148b6
 
デバイス Boot      Start         End      Blocks   Id  System
/dev/sda1   *           3        1410    11309760   83  Linux
/dev/sda2            1411        1462      417690   82  Linux swap / Solaris
/dev/sda3            1463        1974     4112640   83  Linux

  ミソは、先頭パーティションを3シリンダ目からにしているトコロ。このページによれば、フラッシュメモリの破壊はブロックの先頭に出る傾向があるそうだ。一般に、デバイスの先頭にはマスターブートレコードがあり、ここが壊れると、デバイス全体がゴミになってしまう可能性がある。

  先頭がそんなに書き換わるか? というと、おそらくはかなりの頻度で書き換わる。というのも、先頭のすぐ後ろには、ext3ファイルシステムのスーパーブロックがあり、これは数十秒に一回程度の頻度で書き換わる性質があるからだ。半分は推測だが、フラッシュメモリは、数バイトを書き換えるだけの場合でも、ブロック全体を書き直す必要があるはず。そうなると、スーパーブロックが書き換わる時には、周辺数10キロバイトも書き直されると思われ、先頭のMBRもトバッチリを受ける可能性が高い。

  よって、余裕をみて先頭2シリンダを空けておくワケだ。で、もし3シリンダ目が壊れたら、今度は4シリンダ目からフォーマットしなおして使うのだ。この推測が正しいのか、ホントに効果があるのか、それはわからんが、まぁ、やっておいて損はないだろう。

  ちなみにこのような変則的なパーティショニングは、Fedora9のインストーラであるanacondaでは不可能だ。よって、事前に別のマシンか、レスキューモードを利用するなどして、fdiskを使って切っておき、anacondaからは領域の「用途変更とフォーマット」という形でインストールを進める必要がある。

  で、インストールだが、X40にはディスクドライブが付いていないので、PXEブートを利用して、ネットワークインストールを行う必要がある。これまた母艦を用意して、dhcpサーバ、tftpサーバ、httpサーバを立て、Fedora9のisoイメージをhttpアクセスできるようにしなければならないのでひと苦労だが、この方法はそこいらにあるので省略。

  インストーラが立ち上がったら、日本語環境、英語キーボードを選択して、最難関のホスト名決めだ。うーむ……(小一時間経過)……よし、色が黒いからカラスということにして「raven」としよう。赤い「suzaku」も一応は鳥なので組み合わせもいい。

  パッケージは、開発環境、ruby、ひととおりのサーバ機能を追加して、いざ、インストール開始ッ!!

  ちなみに、安物のコンパクトフラッシュはライトアクセスが劇遅なので、インストールには異様に時間がかかる。私が計測した限りでは、0:20開始、4:47終了だった。普通の人は、寝る前に開始して、翌朝まで放置しておくのがいいだろう。

  ……といいつつも、オイラは花金なのをいいことに、律儀に終了を待っていたりする。実は、インストール直後の起動後には、ライブラリの動的リンクを高速化するprelinkや、manページをデータベース化するmakewhatis、高速なファイル検索コマンドであるlocateを使うためのmlocateなど、大量のディスクアクセスを行う処理がcron起動されるからである。この処理には、コンパクトフラッシュ環境だと、かなりの時間を要し、その間はI/O帯域が食いつぶされるので、マトモにオペレーションができないからである。

  よって、インストール完了後に「起動させてから」寝るのであった。というわけで、おやすみ。


2008-06-03(Tue) Fedora9、キーボードチューン

  さて、一応、インストールは完了したわけだが、普段ギンギンにチューンしたWindows環境を快適としているオイラにとってはまるで使い物にならない。まずは、入力環境から煮詰めていく。

  その前に、ちょっと失敗だったのは、昨晩、アップデートを開始してから寝なかったこと。リリースされたばかりのFedora9だが、山のようにアップデートが出ている。何も考えず、GUI環境から「開始」を押せばアップデートできるのだが、これまたコンパクトフラッシュ環境では1〜2時間が必要なのだ。基本的に大量のライトアクセスが発生している状況下では、マトモに操作できなくなる、と考えておいた方がいい。フロッピーディスクを使っているつもりになっておく必要があるだろう。ガコガコとはいわないけれど。

  ちなみに、インストール直後の状態では、11Gのルートパーティション中、3.6Gが使用中となった。決して余裕はないが、まぁ、狭すぎるということもないといえよう。

  さて、まずはキーボードの配列。X40で、しかも、英語キーボードだから、イジるところがないかといえばさにあらず。CapsLockの位置へのCtrlの配置は当然ながら、遙か彼方のエスケープキーもどうにかせねばならない。オイラは普段FKB8579を愛用しており、いわゆるHHKの「ちょっと変態な英語配列」が好みなので、右上周辺も少しイジる必要がある。

  こーゆーのはxmodmapあたりでどうにかするのが一般的だろうが、オイラはもっと根本から変更する。「/usr/share/X11/xkb/keycodes/xfree86」を書き換えるのだ。変更点は以下の通り。

raven.itline.jp:/usr/share/X11/xkb/keycodes # diff xfree86.org xfree86
14c14
<     <BKSL> =  51;
---
>     <BKSL> =  22;
23c23
<     <TLDE> =  49;
---
>     <TLDE> =  67;
37c37
<     <BKSP> =  22;
---
>     <BKSP> =  51;
54c54
<     <CAPS> =  66;
---
>     <CAPS> = 109;
83c83
<     <RCTL> = 109;
---
>     <RCTL> =  66;
90,91c90,91
<     <ESC>  =   9;
<     <FK01> =  67;
---
>     <ESC>  =  49;
>     <FK01> =   9;

  しっかし、ThinkPadは「7列フルサイズ・キーボード」や「心地よいクリック感」などとエバっているけど、オイラはそれほど評価しないなぁ。今まで使っていたLavieAのキーボードの出来に非常に満足しており、その柔らかめのキーに慣れてしまっているからかもしれないが、それはさておいても「7列」は、正直うっとおしいわ。そんな遠くのキーなんて一生押しゃしねぇだろうから、あるだけ邪魔だし。

  ThinkPadでは、左上から「Esc」「F1」「~`」という配列だが、上記の設定では、これを「F1」「~`」「Esc」という配列に変更している。見た目的にF1の位置がかなり異常になるが、使用頻度からしてそうせざるをえない。やはり、無理に「7列」なんかにしないで「Esc」「F1」「F2」……と並べるのが自然だと思うけどね、オイラは。「Esc」キーは、パンピーだってよく押すでしょ。

  そのほかには「Backspace」とその下の「|\」。それと「CapsLock」と「右Ctrl」を交換した。左下のCtrlはAltとの同時押しに便利だから残した。

  以上はX上での設定。使用頻度は低いがコンソール上の方も変更しておこう。こっちは全然違うファイルへの設定が必要。「/lib/kbd/keymaps/i386/qwerty/us.map.gz」だ(英語キーボードの場合)。gzip圧縮がかかっているので、一度gunzipして、以下のように修正して、gzipで再圧縮する。

raven.itline.jp:/lib/kbd/keymaps/i386/qwerty # diff us.map.org us.map
10c10
< keycode   1 = Escape
---
> keycode  41 = Escape
26c26
< keycode  14 = Delete
---
> keycode  43 = Delete
37,38c37,38
< keycode  41 = grave            asciitilde
< 		   control				 keycode  41 = nul
---
> keycode  59 = grave            asciitilde
> 		   control				 keycode  59 = nul
40,41c40,41
< keycode  43 = backslash        bar
< 		   control				 keycode  43 = Control_backslash
---
> keycode  14 = backslash        bar
> 		   control				 keycode  14 = Control_backslash
51c51
< keycode  58 = Caps_Lock
---
> keycode  97 = Caps_Lock
53c53
< keycode  97 = Control
---
> keycode  58 = Control

  F1キーは、別途includeされる「/lib/kbd/keymaps/i386/include/linux-keys-bare.inc」で定義されているので、こっちも変更が必要。なぜかこっちはgzip圧縮されてないので、そのまま書き換えればいい。一応、バックアップをとってからのがいいぞ。

raven.itline.jp:/lib/kbd/keymaps/i386/include # diff linux-keys-bare.inc.org linux-keys-bare.inc
21c21
< plain keycode  59 = F1
---
> plain keycode   1 = F1
33c33
< shift keycode  59 = F13
---
> shift keycode   1 = F13
45c45
< control keycode  59 = F25
---
> control keycode   1 = F25
66c66
< alt keycode  59 = Console_1
---
> alt keycode   1 = Console_1
78c78
< control alt keycode  59 = Console_1
---
> control alt keycode   1 = Console_1

  キーボードが「オレ的に」快適になったところで、今日はここまで。


2008-06-04(Wed) Fedora9、ブラウザチューン

  今日はこまごまとしたトコロを詰めていく。

  まずは、無線LANの設定……だが、これは何も考えなくて済んだ。X40はIntelの「PRO/Wireless 2200BG」を積んでおり、これに対応するモジュール「ipw2200」は、標準カーネルに含まれているからだ。プレビュー版ではNetworkManagerが自動起動しない設定になっていたので、あれこれ探してヒドい目にあったが、修正されたみたい。

  なお、無線LANモジュールがAtherosのヤツだったりすると、ドライバの一部プロプライエタリコードが含まれているらしく、標準カーネルに含まれていないのでやっかいだ。

  未確認だが、Atherosにはmadwifiというモジュールが適合するらしく、それはlivnaで配布されているらしい。LavieAまでLinux化することになったら、その時はお世話になることにしよう。

  ちなみに、設定が簡単なのはいいが、GnomeのNetworkManagerアプレットで接続すると、ログアウト時に無線接続が解除されることに注意する必要がある。

  具体的には、X上で外部の領域をNFSマウントし、そのままシャットダウンしたりすると、アンマウントに先立ってXが終了し、無線LAN接続が解除されてしまうため、シャットダウンがアンマウントの段階で停止してしまう。まぁ、その段階で強制電源断したとしても、問題が生じる可能性は低いが、気分が悪いのでシャットダウン前にはアンマウントを忘れないようにしよう。

  次に、FireFoxの設定……といっても、オイラはOpera派なので、基本的にはOperaをダウンロードするためだけに使うだけなのだが、縁起物なのでコンパクトフラッシュに配慮し、速攻でディスクキャッシュをオフにしておく。おそらくキャッシュが働くと、かえって遅くなるだけだろう。もしキャッシュを有効にしたいなら、キャッシュの位置をRAMディスクである/dev/shmに変更するといい。試してはいないが「~/.mozilla/firefox/xxxxxxxx.default」の下に「user.js」を作って、その中に設定を記述すればいいらしい。もし変更したら、元のキャッシュ情報である「~/.mozilla/firefox/xxxxxxxx.default/Cache/」の中身は空にしておくべきだ。

  FireFoxをメインに使うつもりはないので、さっさとOperaをダウンロードする。基本的には安定版が好きなオイラだが、リリース直前っぽいベータがあるなら、それを使うのも悪くない。9.50beta2をrpmで落とす。

  Operaは本格的に使うので、いろいろ設定するぞ。まずはやっぱりディスクキャッシュのオフ。キャッシュの位置は「~/.opera/cache4/」なので、空になっているか確認する。メモリキャッシュは、Operaの挙動にもよるが、とりあえずは自動のままで。

  次は言語ファイル。9.25用までしか置いてなかったが、中身は単にメッセージ番号とテキストが対応して書いてあるだけなので、9.5特有の新機能以外はほとんど全部日本語化できる。安心して設定してやろう。

  で、タブの挙動のチューニング。「ツール、設定、詳細設定、タブ」から、うっとおしいタブのサムネイル表示をオフ。で、オプションの中の「タブをクリックすると最小化」をオンに「タブに『閉じる』ボタンを表示」をオフにする。最小化は、閲覧中のページのタブをクリックすることで「直前に閲覧していたタブに戻る」かのように使えるので、オイラにとっては必須設定だ。

  今や必須となったFlashプラグインも入れる。Operaとはいえ、公式サイトからrpmを落として普通に入れればよい。んが、音が出ない。話によると、オーディオ関係がPulseAudioというPCM8っぽいヤツ(?)になったせいだとか。これはFedoraから提供されているlibflashsupportを入れれば解決する。これでYouTubeやニコニコ動画もバッチリだが、Operaの場合はoperapluginwrapperというモジュールの安定度がいまひとつらしく、そこそこの確率で落ちる。これは9.5のリリース版で解決されることを願おう。

  でもって、バリバリと閲覧するために必須のキーボードショートカット設定だが、これはまだ熟成中。ただし、ショートカット設定の中に「Opera Standard for UNIX」という既存設定があり、これだけでちょっとEmacsっぽくできる。

  より、詰めるためには、この設定をコピーして、それをベースにするとよいだろう。設定ファイルは「~/.opera/keyboard/unix_keyboard_1.ini」として作られる。Opera上でチマチマ設定するのはうっとおしいので、これを直接編集するといい。しかし、Operaの起動中はイジるな、と書いてあるのには注意だ。なお、オイラの試した限りでは、「x ctrl, k=Close page, 1」のようにすることで、2ストローク設定も可能のようだ。Opera恐るべし。

  仕上げは、システムの標準ブラウザに設定する。「システム、設定、ユーザ向け、お気に入りのアプリ、ブラウザ」のFireFoxをOperaに変更しよう。

  オイラの場合、ブックマークは自作のcgiでサーバ上に置いてあるので、そこにアクセスするだけで普段通りにページが巡回できるようになってしまい……今日はここまで。


2008-06-05(Thu) Fedora9、SDカードチューン

  16GBというのは、多いようで決して十分ではない。でもって、X40にはSDカードスロットが付いているわけで……

  画像の説明

  ……もう16GBいってしまうのであった。そんなに高くはないしね。パーティショニングは以下とした。

Disk /dev/mmcblk0: 16.0 GB, 16071000064 bytes
4 heads, 16 sectors/track, 490448 cylinders
Units = シリンダ数 of 64 * 512 = 32768 bytes
Disk identifier: 0x0c2b7c5b
 
  デバイス Boot      Start         End      Blocks   Id  System
/dev/mmcblk0p1             465      429200    13719552   83  Linux
/dev/mmcblk0p2          429201      459824      979968   83  Linux
/dev/mmcblk0p3          459825      490448      979968   83  Linux

  例によって、先頭パーティションの開始シリンダを後ろにズラしてあるが、実はこの分割割合にもちょっとした工夫があるのである。

  というのも、起動ディスクにしているコンパクトフラッシュもそうだが、あまり細かく分割してしまうと、容量が逼迫してきた時にやっかいなことになる。LVMというテもあるが、緊急事態が発生した場合を考えると、オイラはあまり好きではない。

  だが、ベッタリ全域を確保してしまうと、ちょっとファイルシステム関係のテストをしたいとか、WindowsとやりとりするためにVFAT領域が必要だとか、そんな時に困るのだ。だからそこそこの容量(例えばCDのisoイメージが入る程度)を別に区切っておく。今回は1GBをふたつ確保してみた。なお、使わない時はスワップ領域にしておいてもいい。swapon, swapoffでいつでも付け外しできるからね。

  しかし、しかしだッ!! そんな細かい小手先技はどうでもいいッ!! それよりなにより、サスペンドする度にパーティションテーブルごとファイルシステムがブッ壊れるのはどういうことだよッ!!

  X40は、非常に安定してサスペンド、および、レジュームができて、大変によろしい。いまや、ノートPCにとってはサスペンド機能は必須機能ともいえる。しかしその都度、SDカードの領域がブッ飛んでしまっては致命的である。

  どうも、レジュームの際、SDカードドライブに新たに別のデバイス名が振られているあたりの挙動がアヤしい。別にデバイス名が変わっても、サスペンド前にアンマウントしておけば問題ないだろうが、オイラは電車の中でPCを使うので、降りる駅が近づくのを見越してアンマウント、なんてとてもやってられんのだ。

  逆転の発想で、可動部のないSSDなんだから「電源入れたまま持ち運ぶ」というのもアリだろうが、それもなぁ。フタ閉めると、熱が逃げないのもちょっとイヤンな感じだし。時々なら、コンパイル通勤、なんてもオツだけども。

  どうにかしたいので、下調べから始める。lspciすると、搭載されているSDカードコントローラはRicohのR5C822というヤツらしい。カーネルソースに潜ると、/usr/src/linux/drivers/mmc/hostの下にricoh_mmcってのがある。コレかな?

  どうにもならないような気もしながらも「grep -ri suspend *」みたいな悪あがきをすると……アレ? Suspending, Resumingみたいなシステムログを出すコードがあるんですが……もしかして機能は潜在してるの!?

  さらに、広くsuspendをキーにソースを漁ると/usr/src/linux/drivers/mmc/core/mmc.cの中にCONFIG_MMC_UNSAFE_RESUMEという定義の有無によって、suspend関係のコードのコンパイルを抑制している箇所が見つかった。これって、カーネルのコンパイルオプションでは!?

  カーネルのコンパイルオプションなら、Kconfigに説明があるはず……と、あったッ!! なになに……

# view /usr/src/linux/drivers/mmc/core/Kconfig
 
#
# MMC core configuration
#
 
config MMC_UNSAFE_RESUME
    bool "Allow unsafe resume (DANGEROUS)"
    help
      If you say Y here, the MMC layer will assume that all cards
      stayed in their respective slots during the suspend. The
      normal behaviour is to remove them at suspend and
      redetecting them at resume. Breaking this assumption will
      in most cases result in data corruption.
 
      This option is usually just for embedded systems which use
      a MMC/SD card for rootfs. Most people should say N here.

  ……DANGEROUSという単語が気になるが、サスペンド中に抜き差ししないことを前提にするよ、でないとデータ破壊が起きるよ、というだけのコトのようだ。つーか、現状でもサスペンド中に抜き差ししなくてもブッ壊れてしまうんですけど……。

  基本的にSDカードの抜き差しがない組み込み機器に対して使うオプションであり一般には使わない機能、ともあるが、オイラはHDDの代わりに使うのだから、そもそも抜き差しするつもりはない。やっちまえ。

  設定にはモジュールのコンパイルが必要になるが、縁起物なので、最新カーネルのソースRPMを持ってきて、ついでにカーネルのアップデートもしてしまおう。「# rpm -ivh kernel-2.6.25.3-18.fc9.src.rpm」としてソースを展開して「# vi /usr/src/redhat/SOURCES/config-generic」としてコンパイルオプションを手動で変更する。変更点は以下だ。

# CONFIG_MMC_UNSAFE_RESUME is not set
CONFIG_MMC_UNSAFE_RESUME=y ※追加

  でもって「# rpmbuild -ba --target=i686 --with baseonly --without debuginfo /usr/src/redhat/SPECS/kernel.spec 」でカーネルをコンパイル。

  ちなみに、オイラの環境では完了までに7時間かかった。サッサと終わらせたい人は、別のマシンでビルドするといい。別のマシンでなくても、USBのHDD上や、NFS上でコンパイルするだけでも相当違ってくると思われる。

  カーネルのRPMパッケージは「/usr/src/redhat/RPMS/i686」の下に「kernel-2.6.25.3-18.fc9.i686.rpm」として生成される。「# rpm -ivh kernel-2.6.25.3-18.fc9.i686.rpm」としてインストールし、再起動、新しいカーネルを選択して起動しよう。

  で、ドキドキしながら、サスペンド……レジュームッ!! 何度やっても壊れないッ!! やったーッ!!

  なお、ソースを見る限り出力されるはずのサスペンド、レジューム時のメッセージが出ないので不審に思って調べを進めたところ、そもそもRicohのR5C822に対応するモジュールは、ricoh_mmcではなくsdhciであった。

  とりあえずディスク領域が32GBに拡張され、現在至高のThinkPadであるX300の半分まで来た。こちとら、5万円ソコソコでメインメモリは1.5GBとX300より上どわッ!! と、異様に遅いSSDへの書き込み速度を棚に上げて悦に入りつつ、おやすみである。


2008-06-06(Fri) Fedora9、フォント&メディアチューン

  次第にLinux環境が快適になってきつつ、気づくとほとんどWindowsを立ち上げなりつつある今日この頃、皆さんどうお過ごしでしょうか。

  今日もコマゴマとした設定をツメツメしていくゼッ!! まずは、ディスクへの書き込みが増えるとウワサのSELinuxをオフにする。今回はインストール作業を通してSELinuxの有効/無効を聞かれなかったが、規定で有効になったのはいつからだ? しねっと「/etc/selinux/config」の記載を「SELINUX=disabled」に変更しておく。

  次は、bashの設定。好みで「~/.bashrc」に以下の記述を追加する。

# User specific aliases and functions
 
alias ls='ls -lrtF --color'
alias cp='cp -p'
alias ex='pushd +1'
alias less='less -X'
alias em='emacs -nw'
 
export EXINIT='set exrc number showmode tabstop=4 ignorecase'
export PAGER='less -X'
export MANPAGER='less -isX'
export LESSCHARSET='iso8859'
 
function uuenc () { gzip -c $1 | uuencode uuuuuuuu.gz | sed 's/$/!/g'; }
function uudec () { cat $1 | sed 's/!$//g' | uudecode; gunzip -N uuuuuuuu.gz; rm $1; }
PS1='\[\e[1;1m\]\n<\u> \d - \t\n\H:$PWD \$ \[\e[0m\]'

  脈絡はないが、お気に入りのOsakaフォントもインストールする。Xにフォントをインストールというと、見るからにおぞましいハナモゲラ怪獣「*-*-*」との格闘を予感させるがさにあらず。「/usr/share/fonts」の下にディレクトリを掘って、Windows向けのTrueTypeフォントファイル(ttf/ttc)をそのまま放り込むだけだ。

  しかし、Fedora9から標準になった「VLゴシック」フォントは、強力なOsaka信者であるオイラにも衝撃を与える美しさだよなぁ。ゼロとオーの区別も付きやすいから、コード書くにも適しているし。

  と、いいつつも僅差でOsakaだ。端末のプロファイルをイジり、フォント設定をOsakaの等幅10にする。でもって、好みである往年のプラズマディスプレイっぽいカラーに変更。文字が「#FF6020」背景が「#401800」。

  さらに脈絡なく、次はシステムの統計情報採取ツールであるsysstatの導入。しかし、これが規定でインストールされない……というか、そもそもインストールディスクに含まれないってどういうコトよ? 何か別の新しいパッケージに置き換わったのかと思ったぞ。入れ忘れか? yumでサクっとインストールする。

  翻ってエンターティメント関係の環境も整備する。Fedora9の音楽プレーヤである「Rhythmbox」は、驚くべきコトにiPodへの楽曲転送までサポートしているのだが、もっと驚くべきコトにmp3すらサポートされない。

  そのテのパッケージは、なんか権利関係が微妙だったりして、Fedoraのパッケージに含まれないらしいのだが、そのテのパッケージを補完してくれるリポジトリが外部にあるので、それを追加登録する。以前にちょっと出てきたlivnaである。

  しかし、一説によるとlivnaはFedoraと関係が深いとか。なにそれ。別に構いやしないけどさ、パチンコ屋の景品交換所じゃあるめぇし……と、首を傾げつつ、http://rpm.livna.org/に接続、livna-release-9.rpmを落としてインストール。

  mp3やAC3はgstreamer-plugins-uglyで、AAC(m4a)はgstreamer-plugins-bad で対応するらしい。どちらもyumで頭を使わずインストール可能だ。これらを入れると、メディアプレーヤであるtotemでmpeg動画も観られるようにもなる。しかし、なんつーパッケージ名だ……。

  と、mp3が再生できるようになったところで、後藤真希の曲のインポートやら、Podcastの登録やらを始めてしまい、今日はここまで。


2008-06-07(Sat) Fedora9、ATOKチューン

  さて、メディアファイルも扱えるようになり、マニョマニョとウェブを閲覧する限りは、かなり快適な環境を築きつつあるわけだが、ガッツンガッツンとメールを書くにはATOKによる日本語入力環境の構築、チューニングが必須である。

  と、ここまで触れなかったが、Fedora9には「普通にインストールすると日本語が入力できない」というなかなかにビッグな不具合があるらしい。オイラは、如何にしてATOKを導入するか、しか考えていなかったので、トンと気づかなかったわい。

  某掲示板では、これを持って「クソディストリ」と発言しているヤツがいたが、そういうあんた自身がクソ以下だと言いたい。誰が作っていると思っているんだ。タダで使わせてもらっておいて、しかもリリース直後に文句を言うな。あんたは開発に協力したのか? バグレポートのひとつも送ったのか? せめて少しでも金を払ってから言え。バカ。

  と、少々脱線したが、結論から言うと、Fedora9でも何の問題もなくATOK X3を使用できる。まずは、im-chooser, imsettings, imsettings-libsをインストールする。おそらく、yumでim-chooserをインストールすれば、続くふたつも入るはず。

  でもって、あとはマニュアルの手順通りにインストールする。具体的にはXからログアウト、黒い端末画面から、setupatok.sh, /opt/atokx3/sample/setting_redhat5.shを順に実行。アップデートモジュールが出ているので、ついでにsetupatok_up1.shも実行。

  で、問題は起動スクリプトである「/etc/X11/xinit/xinput.d/iiimf.conf」に記述されている「gnome-im-settings-daemon」。実はコレがFedora9には存在しない。Xのリングに登るとイキナリにドシロートのオイラなので、これにはかなり悩まされたが、某掲示板に「/opt/atokx3/bin/atokx3start.sh」を実行すればいいという情報があり、試したらアッサリとうまくいった。

  以下は、私のiiimf.conf。アップデートモジュールと併せ、JUSTSYSTEMのサイトで提供されている、iiimf_status_hideを実行し、ウィンドウの下にくっつく、ヘンなツールチップの非表示処理設定を加えてある。

XIM=iiimx
XIM_PROGRAM=iiimx
XIM_ARGS=-iiimd
GTK_IM_MODULE=iiim
QT_IM_MODULE=xim
#gnome-im-settings-daemon >/dev/null
 
export HTT_DISABLE_STATUS_WINDOW=t
export HTT_GENERATES_KANAKEY=t
export HTT_USES_LINUX_XKEYSYM=t
export HTT_IGNORES_LOCK_MASK=t
export JS_FEEDBACK_CONVERT=t
 
export ATOK_DISABLE_PALETTE=t
export ATOK_ENABLE_STATUS_WINDOW=t
 
/opt/atokx3/bin/atokx3start.sh
 
/opt/atokx3/sample/iiimf_status_hide

  なお、yumでまとめてアップデートをかけると、iiimf 関連パッケージのいくつかが勝手にアンインストールされてしまうようだ。未確認ながら「/etc/yum.conf」の「[main]」の段落に「exclude=iiimf*」を追加しておくといいかもしれない。

  で、ここからがオイラのオリジナルハック。ATOKは、IMのON/OFFのキーバインドに、規定で「Ctrl+Space」が割り当てられている。しかし「Ctrl+Space」といえば、emacsの「マーク」のキーバインドであり、当然のようにこれらは衝突してしまう。というか、ATOK側が食ってしまう。

  Linux版の入力環境を出しておきながら、emacsに楯突くとは神をも恐れぬ所業といえるが、あの神(ストールマン)は日本語を入力しないからなぁ……という都合を知ってか知らずか、このキーは設定で変更可能だ、が、しかしッ!! スーパースットコドッコイなコトに、選択肢は「Shift+Space」のみに限られるのであった。なんだそれはッ!? 責任者出てこいッ!!

  実は隠しキー(でもなんでもないかもしれないが、ちゃんとマニュアル読んでねぇの)で、全角/半角キーでもON/OFFすることはできる。とはいえ「Ctrl+Space」か「Shift+Space」のどちらかは有効にしておかねばならず、両方を無効にすることはできない。んにゅー、うっとおしいっちゅーの。

  どうにか無効にしようと、最初は添付のIIIMFのソースを直して、再コンパイルとかも試してみたのだが、ビルドには成功するものの、RPMパッケージが生成できない。別にmake installしてもいいのだが、使いもしないファイルが大量にバラ撒かれるのも気分が悪い。そこで、ピンポイントでバイナリパッチを当てることを思いついた。

  バイナリパッチといっても方法は簡単。viのバイナリモードを使って、一部をちょっとツメるだけ。vi -b /usr/bin/iiimdして「Zenkaku_Hankaku」をサーチすると、以下の2カ所が見つかるはず。

^@<Ctrl>space,Zenkaku_Hankaku^@Conversion...
^@<Shift>space,Zenkaku_Hankaku^@Language...

  これを、以下のように修正してしまう。

^@Zenkaku_Hankaku^@            Conversion...
^@Zenkaku_Hankaku^@             Language...

  注意する点は、後ろに続く「C」と「L」の「位置をズラさない」ようにスペース等で埋めること、だ。同様に/usr/lib/iiim/iiim-xbeも修正する。で、iiimdを再起動すれば、Ctrl+Spaceは無効になっているはず。ログインし直してもいい。

  なお、私のX40は英語キーボードなので全角/半角キーがない。IMのON/OFFを行うキーに適当な配置といえば、やはり右下周辺になる。ということで、右のAltキーを割り当てることにした。xmodmapに「keycode113 = Zenkaku_Hankaku」を食わせればいい。

  というわけで、これで日本語入力環境が整ったかといえば、実はオイラにとってはまだ全然で、ようやく日本語でググれるようになったね、程度でしかないのであった。自作メーラであるmave上でガッツンガッツンとメールを書くにはemacsからiiimecf経由でATOKに接続できねばならないのであるが……それはまた別のお話である。ではまた。


2008-06-08(Sun) USBメモリを素因数分解する

  Fedora9、××チューンシリーズはもう少し続くが、今日は小休止。ネタとしては似たようなもんだが。

  オイラは以前にSIRENというメーカのUM-100-512SというUSBメモリを名指しで購入したのだが、最近になってそのチップがSLC構造だと知った。かなりの時を経てのイキナリのポイントアップだ。

  オイラは過去に、特に下調べせずに買ったCD-RドライブであるCD-R56S-600、主力機が死んで慌てて買ったマザーボードであるCUB-Xと、かなり使い込んだ後で、それが名機であったことに気づかされることが度々あるが、それを想起させる。

  で、改めてそれをモバイルCVSレポジトリにしようと思い、ゴチャゴチャとした中身を吸い出して、フォーマットしようとしたのだが、悩んだのがvfat領域をどうするかということ。やはり、ちょっと使いたい時のためにWindowsからも使える領域があった方がいい。

  fdiskしてジオメトリを確認してみる。

Disk /dev/sdc: 523 MB, 523632640 bytes
255 heads, 63 sectors/track, 63 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

  全部で63シリンダだ。するってーと、ext3に49、vfatに14、あたりで割るのがいいかなぁ……っと、そうだ。その前に、スッキリとゼロクリアしておくか。ついでにパフォーマンスも計っておこう。

# time dd if=/dev/zero of=/dev/sdb
dd: writing to `/dev/sdb': デバイスに空き領域がありません
1022721+0 records in
1022720+0 records out
523632640 bytes (524 MB) copied, 248.831 seconds, 2.1 MB/s
real    4m8.864s
user    0m0.742s
sys     0m3.612s

  よし、改めてfdisk、と……あ、あれ?

Disk /dev/sdb: 523 MB, 523632640 bytes
17 heads, 59 sectors/track, 1019 cylinders
Units = cylinders of 1003 * 512 = 513536 bytes

  なんか、さっきとジオメトリが変わってるような……いや、さっきは間違いなく63シリンダだったハズッ!! なんだこれぇ!? ヘッドやセクタって装置に固有だったんじゃないのぉ!?

  こんなことが起きると、ちょっと計算してみたくなる。ヘッドxセクタxシリンダ数……いわゆるCHSで使える容量と、一番上のバイト数との差だ。

17 x 59 x 1019 x 512 = 523,293,184
523,632,640 - 523,293,184 = 339,456

  結構な差がある。つまり、この339KB強は端数であり使えない領域なわけだ。こんな無駄はなくしたい。つーか、もしかして、このあたりの数値ってfdiskで指定できたりなんかしちゃったりして……

# man fdisk
 
-H heads
 Specify the number of heads of the disk. (Not the physical
 number, of course, but the number used for partition tables.)
 Reasonable values are 255 and 16.
 
-S sects
 Specify the number of sectors per track of the disk. (Not the
 physical number, of course, but the number used for partition
 tables.) A reasonable value is 63.

  ……できるじゃんッ!? もちろん物理番号じゃないぜ、って書いてあるけど、もともとこれらは物理的な概念でしょーが。驚いたなぁ、もう。

  となると、うまくすれば、無駄な領域をゼロにできるんでない? manページには255と63がリィズナボォ(妥当)とあるけど、その論理がわからん。いいや、試しちゃえ。

  で、ここでリングに上がるのが素因数分解。昔、授業で習ったよね。523,632,640 をガッツンガッツンと2で割るぜッ!!

  2 x 2 x 2 x 2 x 2 x 2 x 2 x 2 x 2 x 2 x 2 x 2 x 2 x 2 x 2 x 2 x 2 x 5 x 799ッ!!

  799って素数っぽいけど、素数だっけ? 確かめるために「素数」でググる……わ。素数じゃないっぽいぞ。確か、デカい数値の素因数分解って、RSA暗号の基礎理論であり困難だと聞くが(ケタが違うって)……できるかいな。3で割って、7で割って……ダメだ。ヤケクソで17で割って……

  799/17=47

  ……あ、割れた。素数リストを見ると、17も47も素数だ。素因数分解完了ッ!!

  これの値をどう使うかというと、こう使う。

# fdisk -H 47 -S 17 /dev/sdb
Disk /dev/sdb: 523 MB, 523632640 bytes
47 heads, 17 sectors/track, 1280 cylinders
Units = cylinders of 799 * 512 = 409088 bytes

  どれどれ、シリンダ数は……1280か。17 x 47 x 1280 x 512は523632640……523632640ッ!! で、出たッ!! ホールインワンッ!!

  つーわけで、USBメモリの端から端までキッカリと確保することに成功したようだ。こりゃあ気分がいい。例によって、先頭をちょっと空けてふたつの領域に切る。

Disk /dev/sdb: 523 MB, 523632640 bytes
47 heads, 17 sectors/track, 1280 cylinders
Units = cylinders of 799 * 512 = 409088 bytes
Disk identifier: 0x00000000
 
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               3        1024      408289   83  Linux
/dev/sdb2            1025        1280      102272    6  FAT16

  1シリンダのサイズが400KB程度と小さいから、先頭に空けておく領域も1MB以下で済んでいる。なんだよー、こんなことなら、プライマリドライブとして使っているコンパクトフラッシュも工夫すればよかったよ。

  こっちは、16,240,345,088バイトだから……(2^27) x 11 x 11ッ!! こっちもキレイに割れるじゃんッ!!

  一方で、セカンダリドライブである16GBのSDカードは、16,071,000,064バイトだから……2^19×7×29×151……少し微妙だが、7と29を使えば、こっちもキッカリと使い切ることができる。うわぁ、フォーマットをやり直してぇ!!

  なお、このジオメトリという概念は、記憶領域の一部に記録されているものではなく、パーティションテーブルの「雰囲気」や、単純に固定値が採用されるようである。fdiskのソースは以下のようになっている……

    922     get_kernel_geometry(fd);
    923     get_partition_table_geometry();
    924 
    925     heads = user_heads ? user_heads :
    926         pt_heads ? pt_heads :
    927         kern_heads ? kern_heads : 255;
    928     sectors = user_sectors ? user_sectors :
    929         pt_sectors ? pt_sectors :
    930         kern_sectors ? kern_sectors : 63;

  ……ユーザが指定すれば、言い値が採用されることがわかる。しかし、CHSがここまで、観念的な概念に落ちぶれていたとは意外だなぁ。

  ひとつ疑問が残ったのは、そもそもフラッシュディスクの総容量がどう決まっているのか、ということ。相手が円盤なら端数も出そうなもんだが、ゴ盤の目のような構造(たぶん)のメモリで、こんな素数が出てくる道理がわからない。

  CRCや欠陥セクタの領域を除外した結果なのだろうか? どっちにせよ、フラッシュの内部的な物理記録の単位となんらかの関連があるかもしれない。キッカリ合わせると書き込みが効率化するなんて御利益があったりしたりしてね。ほんじゃ。


2008-06-12(Thu) Fedora9、端末チューン

  今日は、ハッカーのオペレーションには欠かせない「端末」、いわゆる「コンソールエミュレータ」、要するに「gnome端末」をチューンする。

  オイラは、Windows上では、日頃から比較的高機能なTERATERMを愛用、自作マクロまで組んでチューニングしていた。なので、正直、gnome端末には物足りなさを感じなくもないのだが、だからといって究極に機能が不足しているわけでもなし、それよりなにより「標準である」というのは結構な強みなので、こいつをそのままベースにしてチューニングを始めることにする。

  まず、手始めは、端末画面の色。白地に黒というのはごく一般的ではあるものの、コントラストが高すぎて目に痛い。長時間に渡ってニラめっこ、しかも端末画面では頭を酷使する作業を行う場合が多いので、もう少しリラックスできる暗めの色が望ましいのだ。いうなれば、ホテルの間接照明のような。

  というわけで、オイラのチョイスは往年のプラズマディスプレイを彷彿させるオレンジ〜茶系。カラーコードでいうと#FF6020と#481800だ。文字通り異色ではあるが、なかなかどうして、慣れると快適である。また、グリーンディスプレイ風味も悪くない。#40FF00と#204000という感じ。新しい人にはマトリックスっぽいなんて言われるかもしれないが。

  次はフォント。これは好みだが、標準のVLゴシックがかなりイイ。ゼロに斜線が入っているのもプログラマ向き……なのだが、オイラは僅差でOsakaの等幅。やはり、長年、見慣れているモノがいい。

  意外と重要なのがアイコン。デフォルトのデスクトップテーマであるFedoraは、モノトーン〜青系で統一されている……のは、決して悪くないのだが、タスクバーのアイコンがどれもモノトーンであり、パッと識別できないのはマイナス。特に「端末」と「ファイルブラウザ」は、形状も色配置も似ているせいもあって識別性が最悪で、これが両方とも複数が開かれる性格を持っているから始末が悪い。

  そこで、端末の実際の表示イメージに近い「プラズマ」と「グリーン」に色変換したアイコンに変更する。アイコンの編集の際には、ちゃんとGIMPを使うぞ。こういう場合、領域を区切って「着色」機能を使うといい。こんな感じ。

  画像の説明

  gnome端末には、プロファイルごとにアイコンを変更できる機能がついているので、個々に設定する。実際の端末の印象とも適合するし、これはなかなかにナイスなプチハックではないだろうか。

  次、ちょっとだけ深いハック。タブのクローズボタンがジャマだという件。

  gnome端末は、ウィンドウ+タブと、Operaと同様のウィンドウ構成をとることができる。これは、アカウントごと、ホストごと、用途ごと、など、うまくルール付けをすることで、とても便利に使えるのだが、惜しいのがタブにクローズボタンが「付いている」こと。

  単純に、誤ってボタンを押すと、問答無用でタブがクローズしてしまうのだ。動いていたプロセスは置き去りで、元に戻す方法がない。これは困る。TERATERMだったらクローズの際には確認を求められるし、Operaはゴミ箱から元に戻せる。これらは後から、必要にかられて実装された機能なのだと思う。

  そもそも、タブはそれ自体がボタンなわけで、その上にボタンつけるのはナンセンスだ。Operaもこの状態がデフォルトになってはいるが、ボタンを取り外す設定も可能なので問題ない。そもそもジェスチャーでクローズできるならそっちを使うべきだ、頻繁に利用するタブ切り替えの都度、イラッとくる必要はない。gnome端末だって、通常はCtrl+Dで閉じることができる。

  と、ここで、オープンソースであることを活用するのである。気にくわないなら改造してしまえばいいのだ。Windowsではこうはいかない(場合が多い、アプリがオープンソースでも開発環境が有償である場合が多いし)。

  まず、Fedoraのサイトから最新のソースコードを入手する。Fedora上で扱う以上、形式はsrpmが望ましい。rpmbuild -bpでソースパッケージを展開し……ようとしたら、大量の開発関連パッケージが必要だと怒られた。そっか、GUI開発なんてするつもりなかったので、開発関連パッケージは入れてなかったっけ。yumで丸ごと導入す……

# yum grouplist
# yum groupinstall "X ソフトウェア開発" "GNOME ソフトウェア開発"

  ……ぷはぁ、2時間もかかったぞ。安いフラッシュを使ったSSD環境では、パッケージインストールがガンだなぁ。それ以外では概ね、不満なく使えているのに。

# rpm -ivh gnome-terminal-2.22.2-1.fc9.src.rpm
# cd /usr/src/redhat/
# rpmbuild -bp SPECS/gnome-terminal.spec

  rpmbuildでrpmパッケージを作る都合上、変更部分はパッチファイル化する必要がある。独立したパッチファイルを作るのは面倒なので、既存のパッチに紛れ込ませる。具体的には、以下のようにする。

# vi BUILD/gnome-terminal-2.22.2/src/terminal-window.c

  以下の3行を殺すことで、クローズボタンを「バカ」にし……

   1430 //  g_signal_connect (G_OBJECT (close_button), "clicked",
   1431 //          G_CALLBACK (close_button_clicked_cb),
   1432 //          screen);

  ……この変分ごと、既存のパッチファイルとスリ替える。

# diff -U 3 BUILD/gnome-terminal-2.22.2/src/terminal-window.c.338913-revert-336325 BUILD/gnome-terminal-2.22.2/src/terminal-window.c > ../SOURCES/gnome-terminal-2.15.0-338913-revert-336325.patch

  で、パッケージビルド。

# rpmbuild -ba SPECS/gnome-terminal.spec

  しばらくして正常終了したら、RPMS/i386の下にRPMパッケージができているはずなので。アップデートインストールする。

# rpm -Uvh RPMS/i386/gnome-terminal-2.22.2-1.fc9.i386.rpm

  gnome端末が動いている状態でもインストールはできそうだが、全インスタンスを終了して立ち上げ直すまで、新しいプロセスでは動かないはず。縁起物なので、いったんログアウトして、黒い端末画面からインストールすることをお勧めする。

  改めてログイン後、タブのクローズボタンが動作しなくなっていることを確認しよう。ホントはこのようにボタンを「バカ」にするのでなく、ボタン自体を消し去ってしまう改造の方が望ましいが、これ以上、試行錯誤するのは面倒なのでこれでよしとする。

  つーわけで、気にくわないなら改造できるのが、オープンソースの醍醐味である。他にナイスなハックがあったら、教えて欲しい。んじゃ。


2008-06-13(Fri) Fedora9、アイコンチューン

  前回の端末チューンの際、gnome端末のアイコンを変更したが、どっちかというと気にくわないのは「ファイルブラウザ」のアイコンの方だったりする。ド正面からのマ四角で、オマケにモノトーンではオモシろみのないことこの上ない。

  つーわけで、気にくわないなら改造、である。問題はこのアイコンパターンがどこに置いてあるのか、だ。

  ルック&フィール、外観の設定、から、アイコンテーマを変更できることはわかっている。デフォルトはFedora。テーマがRPMパッケージで提供されていることもインストール時に確認済みなので、まずはそこに取っかかりを求める。

# rpm -qa | grep theme
fedora-gnome-theme-8.0.0-1.fc8.noarch
gnome-icon-theme-2.22.0-6.fc9.noarch
nodoka-metacity-theme-0.3.90-1.fc9.noarch
gnome-themes-2.22.0-1.fc9.noarch
fedorainfinity-screensaver-theme-1.0.0-1.fc8.noarch
hicolor-icon-theme-0.10-4.noarch
fedora-screensaver-theme-1.0.0-1.fc8.noarch
fedora-icon-theme-1.0.0-1.fc8.noarch
bluecurve-icon-theme-8.0.2-1.fc9.noarch
nodoka-theme-gnome-0.3.90-1.fc9.noarch

  おぉ、fedora-icon-themeがイカにもクサい。中身を確認。

# rpm -ql fedora-icon-theme-1.0.0-1.fc8.noarch | head
/usr/share/doc/fedora-icon-theme-1.0.0
/usr/share/doc/fedora-icon-theme-1.0.0/AUTHORS
/usr/share/doc/fedora-icon-theme-1.0.0/COPYING
/usr/share/icons/Fedora
/usr/share/icons/Fedora/16x16
/usr/share/icons/Fedora/16x16/apps
/usr/share/icons/Fedora/16x16/apps/openofficeorg-base.png
/usr/share/icons/Fedora/16x16/apps/openofficeorg-calc.png
/usr/share/icons/Fedora/16x16/apps/openofficeorg-draw.png
/usr/share/icons/Fedora/16x16/apps/openofficeorg-impress.png

  なんだ、/usr/share/icons/Fedoraの下にあるアイコンパターンをイジるだけじゃん……と思ったら甘かった。ファイルブラウザらしきアイコンが見あたらないのだ。

  闇雲に探し回ったところ、/usr/share/icons/gnome/16x16/appsの下の、system-file-manager.pngがそれっぽいコトに気づいた。

  どうやらこれは……

# cat /usr/share/icons/Fedora/index.theme | head
[Icon Theme]
Name=Fedora
Comment=Fedora Icon Theme
Inherits=Mist ←コレコレ
Example=x-directory-normal
 
# KDE Specific Stuff
DisplayDepth=32
LinkOverlay=link_overlay
LockOverlay=lock_overlay

  ……Fedoraに用意されていないアイコンは、Mistのモノを継承(Inherits)する設定になっており……

# cat /usr/share/icons/Mist/index.theme | grep nherits
Inherits=gnome

  ……Mistはgnomeのモノを継承する設定になっていることによるらしい。

  早速、GIMPでsystem-file-manager.pngに色をつけた。こんな感じ。

  画像の説明 

  編集が終わって上書き保存する。もちろん、それだけではアイコンは変化しない。いったん、ログアウトする。が、それでもアイコンは変化しない。再起動する。んが、やっぱりアイコンは変化しない……なっ、なんでぇ?

  これには、相当に悩まされたが、要するにキャッシュが効いていた、というだけのことであった。こんな時、キャッシュを削除してしばらく待つ、なんてのが世の常だが、gnomeのアイコンに関しては、キャッシュは完全にスタティックなようで、以下のコマンドを実行する必要がある。で、これを一発かませば、その場で即座に変わるようだ。

/usr/share/icons/gnome # gtk-update-icon-cache .

  おぉ、エエ感じッ!! ついでに、マウント中なのか、未マウントなのか、これまた区別が付きづらい、パネルの「ディスク・マウンタ」のアイコンも変更してしまおう。マウント中は赤く光っている感じなんてどうだろうか。こんな感じ。

  画像の説明

  期せずして、ザクっぽくなっている気がするが、悪くない。

  画像の説明

  つーわけで、細かいチューンだが、今後、長らく、気分よく使うためにはこんなことも重要だと思う。そう、実はココまできて、かなり気分よく使えるようになってきているんだよね。ヘタをすると、Fedora9から先へ(Fedora10とかへ)進むのは、数年後になるかもしれないと思っているほどだ。

  そもそも、Windowsだって、ノートPCの新調に伴い、仕方なくXPに移行したのであって、今、突然、2000に戻されたとしても、たいして不満は感じはしない(ハズ)。

  Fedora9、×××チューンシリーズも佳境に入ってきた。次回はとうとうアレに手をつける予定である。では。


2008-06-17(Tue) Fedora9、GIMPチューン

   次回はとうとうアレに手をつける予定、などと書きつつ、ちょっと小休止。今日はGIMPをチューンしたい……

  ……と、思っていたのだが、最近、特に大きな違和感なく使えるようになってしまったんだよねぇ……件のPhotoshopとは、フィルムスキャナに添付されてきた都合で入手したPhotoshop4LEから、かれこれ10年以上の付き合いなので、自分の体はPhotoshopしか受け付けないと思っていたのだが、自分が思うほどにベッタリではなかったようだ。つーわけで、チューンというほど大げさな作業は必要なさそう。

  むしろ、機能的にも十分どころか、明示的に設定を記憶できたり、GIMPの方が便利なところも多い。しかしながら、キツいのは画面の狭さ。なんというか、ポップアップするダイアログがどれもデカすぎる。Gnome自体が万事、といえばそうなんだけれど。

  画像の説明

  また、デフォルトの作業レイアウトが、左右に縦に長いドックふたつというのも困ったもの。重ならないように真ん中に編集対象を配置すると小さすぎる。重ねて配置すると、ウィンドウ切り替えがうっとおしすぎる。

  つーわけで、思い切ってメインのドックを上に寄せてしまうことにした。まず、メインのドック下部の「ツールオプションタブ」を、サブのドックの下部に移動する。具体的には、メインのドックの、下のペインの三角をクリックしてタブを閉じ、サブのドックの、下のペインの三角をクリックして、タブに追加、から「ツールオプション」を選択する。

  メインのドックに残った、描画色/背景色の選択ツールは、サブのドックのものを使うことにして削除。これは、ファイル、環境設定、道具箱、から「背景色と背景色を表示」(?)のチェックを外すことで可能。

  これでメインのドックはボタンアイコンだけになった。サブのドックを右にいっぱいまで寄せて、メインのドックを横長にリサイズしつつ、最上部に配置する。

  アイコンが2列配置なのはイマイチなので、いくつか減らして1列にしたいところだが、その前にアイコンサイズを小さくして1列中の数を稼ぐことにする。ファイル、環境設定、テーマ、から「Small」を選択だ。

  と、ここでちょっと深いハック。以下の記述を、ホームディレクトリ下の「.gimp-2.4/gtkrc」に追加してGIMPを再起動しよう。すると、フォントが小さくなり、ウィンドウの余裕領域がカツカツまで削られ、各ダイアログのサイズを小さく抑えることができる。

style "gimp-large-preview"
{
  GimpPreview::size = 384
}
class "GimpPreview" style "gimp-large-preview"
 
style "gimp-my-style" = "gimp-default-style"
{
  font_name = "sans 6"
 
  GtkOptionMenu::indicator_size    = { 0, 0 }
  GtkOptionMenu::indicator_spacing = { 0, 0, 0, 0 }
 
  GtkPaned::handle_size             = 0
  GimpDockSeparator::height         = 0
  GimpDockable::content_border      = 0
  GimpEditor::content_spacing       = 0
  GimpEditor::button_spacing        = 0
  GimpFrame::label_spacing          = 0
  GtkDialog::button_spacing         = 0
  GtkDialog::action_area_border     = 0
}
class "GtkWidget" style "gimp-my-style"
 
style "gimp-tool-dialog-style" = "gimp-my-style"
{
  GtkDialog::action_area_border = 0
}
class "GimpToolDialog" style "gimp-tool-dialog-style"

  最後に仕上げに、サブのドックの幅を適当なサイズに調整、メインのドックをいっぱいまで横に広げ、アイコンが1列に収まるよう、ファイル、ダイアログ、ツール、から取捨選択する。オイラは、とりあえず使用頻度の低いモノを削り「レベル」と「色相-彩度」を追加した。ホントはこのヘンはキーボードショートカットに設定すべきかもしれないが。

  画像の説明

  ダイアログの配置が一段落したところで、次は個人的によく使う必須ともいえる機能を補完する。それは、矢印の描画機能。

  Photoshopには、直線や円などの簡単な図形を描画する機能があって、直線のオプションに矢印の描画機能があった。どうも、これに類する機能はGIMPには存在しないようである。

  いろいろ探すと、完全に代替になるモノではないものの「矢印スタンプ」を公開しているサイトが見つかった。「スケーラブルじゃなく、固定サイズかよ、使えねぇ……」と、思ったのもつかの間、すべての画像編集を終わらせ、Web用にリサイズした後に「ペタッ」と貼る分にはぜんぜん問題なかった。

  また、最初、どうやったら色が着くのかわからなかったが、ブラシを指定した後に「絵筆」のドックから「グラデーションの色を使う」をチェックし、描画色を好みの色にすればよいようだ。

  矢印を目立たせるためには「フィルタ」「光と影」「Drop Shadow」で、パラメータは以下のような感じにすればいい。

  画像の説明

  最後はどうでもいい、もしくは、最重要ハック。それは……スプラッシュスクリーン。出てくる犬の絵が、いくらなんでもマヌケすぎる。気分よくない。

  画像の説明

  これを変更するのは、Photoshopに比べればはるかに簡単。ユーザディレクトリの下の「.gimp2.4」の下に「gimp-splash.png」として置いておくだけだ。

  で、スプラッシュといえば、以前に無理矢理改造して、かなり気に入って使っていたPhotoshopElements用のスプラッシュがある。もったいないので、それを改造して流用することにする。いったん気に入ったら、トコトンしつこいのだ、オイラは。

  一応、GIMPのロゴを入れたかったのだが、公式なロゴはなさそうなので、自分でそれっぽくデッチ上げる。フリーのフォントを探していたら、ちょうどよいサイトがあり、なんかすっげぇアグレッシブなのが見つかったのでそれを採用した。

  画像の説明

  で、完成したのが以下のスプラッシュスクリーン。ちゃんとGIMPで編集したぜ。

  画像の説明

  つーわけで、これにてフォトレタッチツールにおいても、プロプラからの独立に成功してしまったワケだ。さらば、PhotoShop。キミのコトは忘れない。