2009年10月30日金曜日

aweomeとluaの参考書

S101では、gnomeやkde、いわゆるデスクトップ環境(DE)を起動しない、ウインドマネージャ(WM)のみを利用している。そして、そのWMには、タイリングWMの一つ、awesomeを使っている。

以前にもメモした通り、awesomeの設定ファイルはlua言語で書かれていて、その内容は、tagやウインドウの動作に関するルール、キーバインド、ステータスバーやこれに含ませるコンテンツの動作等、awesomeの動作のほぼすべてに渡っての設定を行う事になる。

これは何も設定をしなければ、デフォルトの規定で動くというものではなく(3.4以降はフォールバック機能がありそう)、まさに、何も書かれていないという設定どおりに何もしてくれない。このため、awesomeの設定ファイルには、WMとして動作するための必要最低限の動作のための設定項目が全て書かれており、その設定の内容についても、動作の規定については、フラグ変数でオンオフを書き換えるというようなものでなく、Luaを使ったawesomeのAPIを経由するプログラムを書き換える作業が必要になるため、awesome自体を楽しもうとするならば、Lua言語の知識も多少なりとも必要になる。

以前のメモの時に購入したluaに関する入門書は、プログラミング自体が初めてという感じの初心者向けの本で、言語の事自体を体系的に述べられておらず、「こういう場合はどうなんだろう?」という好奇心が沸いた時には参考にする事が出来ないものだった。

ところが、こないだたまたま本屋に立ち寄った時に、

「Programming in Lua プログラミング言語Lua公式解説書」

という本を見つけた。新しく出版されたらしい。もともと、原文での解説は、前にも紹介したとおりweb上でも公開されている。けれどボリュームがあるので、やっぱり日本語で読めるとありがたい。特に、初めて触れる言語なら、尚更そう思う。実際にこの本を読んでみると、言語自体について、開発者が解説しているためとても分かりやすい。初めてLuaに触れる、若しくは、興味ある人にとってはお勧めの一冊だと思う(必携でもいいと思う)。

2009年10月25日日曜日

S101近況


みんな、ホスト名ってどうやって付けているんだろう??
うちのは、むかーーし、インターネットを始めた頃、今の「メル友」ってのとは、少しニュアンスの違う昔の文通友達に近いような「メールフレンド」が出来て、その人のペンネームが「madokita」だった。この、「まどきた」っていうのは、どこかの言葉で「マドンナ」と同じらしいって事を聞いた。「マドキータ」とか読むらしい。それ以来、なんかこの単語を気に入って、メインのパソコンのホスト名はいつもこれだ。で、今はこのS101がmadokitaを名乗っている。

当のまどきたさんとメールのやりとりをしていたのは、かれこれ14、5年位前になるけれど、元気にしているのかなぁ?と、たまに思い出す。

おいらをlinuxの世界に引き込んだ友達は、飼い猫の名前をホスト名にしていた。彼とも長いこと連絡をとっていないけれど、今でもそうなのかなぁ?もし、このメッセージをみたら、連絡をよこすように!!!w

さて、オークションでゲットしたintel wifi link 5300っていう無線lanデバイスをとりつけてみた。調子の方は上々。一旦つながってしまうと勝手に切断されてしまうことはないようなかんじ。ただ、サスペンド等、デバイスの電源を落とした後の、デバイスの再起動の時はいまいち動作が安定しないかんじ、、、pm-utils用のスクリプトも書いてみたけど、イマイチ。もういちど、ちゃんと動作させようと思うと、一旦、システム自体の電源を落とした後に、立ち上げなおすと、普通に動く。まぁ、、前よりは普通に使えるようになったので満足。

数日前にawesomeが3.4にアップデートされていた。
もともと、gitの方で3.4も試してみていたんだけれど、モジュールが一新されていて、3.3以前のコンフィグファイルだと立ち上がらない。書き換えるのがじゃまくさいってのは、書き換えたら済むはなしなんだけれど、別の点で困ったことに、xcompmgrとの相性が悪くなっていた。

公式リポジトリにアップデートされるまえのgitの状態では、画面表示が思いっきり重くなってて、実用レベルじゃなかった。その時点では、xcompmgr-gitは、xorgの公式リポジトリのバージョンが低くて、コンパイルが弾かれてた。

で、公式リポジトリにアップデートされた今、awesomeを3.4にして、xcompmgr-gitもコンパイルが通るようになったので、それを導入してみた。通常は普通に使えるけれど、同じタグ内に複数のウインドウを開くと、重くなる症状がでたりする。一旦タグ移動したあと、戻ると、治ったりするけれど、イマイチ不安定。

せっかく、3.4用のrc.lua書いたけど、一応3.3に戻して様子見かなぁ

あと、しばらくxorg入れてなくて、コンソールで作業してることが多かったので、バッシュのプロンプトも適当に書いてみた。acpiコマンドからバッテリーの様子を引っこ抜く関数を適当に書いて呼び出してるせいか、プロンプト表示にワンテンポかかる(^^;
っていうか、.bashrcにいろいろとかくと、ターミナル起動時にプロンプトがでるまでに1秒くらいかかってるかも、、

2009年10月12日月曜日

ヤフーオークションやってみた!

節電術のPM-Utilsのメモ書こうとおもってたんだけど、インストールするだけで動いてるからイマイチ色々試してみる気が起こらない。

唯一引っかかるところは、無線LANが繋がってる状態で、サスペンドして、リジュームすると、上手く元に戻らないんだけど、、pm-utilsには、一般的に必要になりそうな、サスペンド前処理スクリプトと、リジューム後スクリプトが用意されていて、netcfgを使っている場合には、これらの処理を上手くこなしてくれるスクリプトも用意されている。

そんで、無線LANについて、上手くいかないのは、pm-utilsの問題じゃなくて、やっぱり、S101の無線LANのデバイスなんじゃなかろうか?って感じ。acpi関連のメモを書き始めた時のカーネルバージョンでいつの間にか無線LANがまた使えるようにはなっていたんだけれど、イマイチ動作が不安定だった。だいたい、10分間、何もしないでいると勝手に回線が切れちゃうっていう症状がある。

前と違って、ifconfigでデバイスアップした後は、iwlist scanが必ず出来るようになっていたので、wpa_suplicantでの制御がおかしいのかなぁ、、と、接続にWPAを使わず、認証無し状態だと、どんな感じか試しているところなんだけれど、回線が切れない状態が続くような感じ、、でも、勝手に切断もあった。

そんなこんなしている最中に、なんとなくシステムのアップデートをしてみたら、カーネルの.31がtestingからcoreに来ていた!!カーネルのアップデートはだいたい、無線LANに影響があるからignoreしていたんだけれど、.31はやっぱり試したくなる!w

早速 pacman -Syu して、再起動してみたら、、、いつもは起動時にUDev ueventsなんとかいう処理で結構待ったんだけれど、その待ち時間があんまりなくなって、すぐにログインプロンプトが出てきた!!

おおお!!!いいぞーーー!!とか、ちょっと興奮したw

で、、問題の無線LAN。恐る恐る、Fn+F2ボタンを押してみる。こないだ、メモに書いた時は、立ち上げ後処理でnetcfgとか登録してたけれど、今は外してあって、ifconfigでのデバイスのupまでにしてある。つまり、ifconfigで確認したらwlan0があるはずなんだけど、、、ない!!

iwconfigで見ると、あるので、手動でifconfig wlan0 upとしてみると、見たこと無いエラーが出現。。。。トホホ

いつものように、archlinuxのフォーラムでath9kで検索すると、ひっかかった。
みんな、うちとまったく同じ状況らしいw結構レスがあったけど、チラッと見る感じみんな不具合の症状ばかりかいてるみたいなので、めんどくさくなって、あまり読まずに、カーネルを.30のに戻して終了(^^;

どうも、無線LANの不安定さはいつまでたってもひっかかるので、googleで「s101 無線LAN」とか何気なく検索すると、やっぱり、無線LANデバイスの換装の話題が引っかかる。あれこれ読んでいると、前に探してたintel wifi 5300とかいう、ノートに内蔵できるカードがオークションで安く手に入るらしい事が書いてあり、ヤフーオークションで見てみると、5300以外にも結構な品数があった。最近の流行はwimaxが使えるやつらしく、ニセモノとかも出回る大賑わいらしかったw

ヤフーオークション自体は、ずーーっと前に、缶コーヒーのおまけについてるミニカーコレクションをしていたら、全部集められなくて、足りないのをオークションで買ったw

だけど、だいぶん昔に1度やってみただけなので、取引のやり方とかイマイチよくわからない。まぁ、何とかなるかと思いながら、オークションに参加。ボタン押したら即決だったらしく、そのまま終了しちゃった。そっから、先がまたよくわからないので、画面の指示通りなんとなく、出品者に「落札しました」ってメッセージを送ってみたけど、それでいいのかな?

上手く取り付けられるかわからないけれど、早く試してみたいな~!!快適wireless生活になるのかな??w上手くいったらionノートにもつけてみよーっと!

2009年10月7日水曜日

CPUの節電

acpi絡みでCPUの節電ってのを始めて知ったのでメモ。

CPUの節電のために、パワーを制御することが出来る。S101のCPU、Atom N270はデフォルトで1.6GHzで駆動しているが、あまり作業をしていないときなどにクロック数を下げて節電する仕組みがある。archlinuxのWikiで見かけるこの種のユティリティは、CpuFrequtilsとPowernowdの2つ。

CpuFrequtilsの方が[Extra]リポジトリにあるので、こっちを導入してみたが、powernowdの方が設定は簡単っぽい。

パッケージ「cpufrequtils」
インストールはpacmanから。

前準備として、acpi-cpufreqモジュールをロードする。
#modprobe acpi-cpufreq

常時読み込みのため/etc/rc.confのMODULES配列に加えておく。
MODULES=(acpi-cpufreq ...)

モジュールが読み込めたら、以下のコマンドでS101のCPU情報を見ることができる。
$cpufreq-info

N270については、cpu0とcpu1の二つの情報がみれて、
そのそれぞれについてセッティング出来るクロック数や現在のクロック数がみれる。

1.cpuの設定モジュール「scaling govenor」
通常、CPUはいつも最大出力で動いている。しかし、cpufrequtilsは、あまり働かない時にはクロック数を下げる等のいくつかの決まった節電パターンで動かすためのモジュール(govenor)を提供してくれる。モジュールの種類は以下の通り

performance
 いつも最大クロックで駆動する。(カーネル付属のデフォルトモジュール)
cpufreq_ondemand
 システムロードに従って、クロック数を変化させる。(お勧めモジュール)
cpufreq_conservative
 ondemandと似ているが、保守的でクロックスピードは上品に変化する?
cpufreq_powersave
 最小クロック数で駆動させる。
cpufreq_userspace
 ユーザーがルールを定義できる。

これらのうち、好きなモジュールを(全てでも良い)ロードする。
 ※modprobe、恒常的には/etc/rc.confのMODULES配列で読み込み。

読み込んだモジュールのうち一つを選択してcpufreq-setコマンドを使い、対応したパターンでCPUを動かすことが出来る。

#cpufreq-set -g ondemand

使い方は、-gオプションでgovernor名を指定する。
ロードしていないモジュールのgovernorは選択できない。

2.しきい値の変更
ondemandモード等でCPUが動いている場合、CPUの使用率が低い時にクロック数は最小値で動いている。そしてデフォルトではこの状態からCPUの使用率が95%を越えると、クロック数が変更されるようになっている。この95%のしきい値を変更する事も出来る。

現在のしきい値は/sys/devices/system/cpu/cpu0/cpufreq/ondemand/up_thresholdファイルに記されているので、catコマンド等で確認できる。もう少し機敏に反応したい場合は50程度の数値を設定しても良いらしい。

#echo 50 >/sys/devices/system/cpu/cpu0/cpufreq/ondemand/up_threshold

但し、これらはリブート時にリストアされないので、/etc/rc.local等で設定して置くと良いらしい。

3.デーモン
/etc/conf.d/cpufreqを設定ファイルとして、/etc/rc.d/cpufreqをデーモンとして動かすことが出来る。

設定ファイルでの設定は、governorパターンの選択のみでOK
governor="ondemand"

最小クロック数と最大クロック数の部分はコメントアウトして自動認識に任せる。
#min_freq="1GHz"
#max_freq="2GHz"

設定ファイルの書き換えがおわったら、rc.confのDAEMONS配列にcpufreqを加えて置く。

2009年10月6日火曜日

alt+→とか

バーチャルコンソールの移動って、ずっとalt+F?キーでやってた。
ネット接続の検証用に、テキストブラウザを入れたんだけど、キー操作が分からなくて、色々試していたら、、、alt+カーソルキーの横矢印でコンソールが移ってびっくり!!w
ずっと、しらなかった、、、
けど、感動したw

今日は、仕事で秋葉原まで行った!生まれて2回目くらい。
でも、時間が無くてまったく店とか物色できなくて、しょんぼり、、、
前に行ったのってもう10年くらい前かなぁ?
その時は、あちこち歩いてみたんだけど、何処に何があるのかさっぱりわからんうちに日が暮れて、友達が迎えに来たw

とか、どうでもいいんだけど、、、
自分のブログ読み返すと、誤字脱字多いなぁ~
あと、内容で嘘っぽいのもありそう(^^;
今、S101にはX入れてなくて、ブログは別パソコンから書いてたりするので、パスとか変数名とか手打ちしてて、なんか写し間違いとかいっぱいありそうな予感。
もし、参考にしてる人がいたら注意してみてくださいねー

無線LANとacpiの連携

acpiの仕組みとかの続き、無線LAN編のメモ

eeepc用のパッケージ「acpi-eeepc-generic」に乗っかってみる。
たぶん、デフォルトでFn+F2キーで無線LANデバイスのオンオフが可能になっているはず。

無線LANの扱い方についての基本は以前のブログ
無線Lan(手動)
ネットワーク(半自動)
辺りのメモが参考になるかも?

以前から「rfkill」とは何ぞや?!と思っていたんだけれど、acpi-eeepc-generic内のスクリプトを覗き見ていて、初めてちょっと理解。無線デバイスの電源のオンオフを行えるモジュール(?)らしい。S101はこの仕組みが使えるようだ。

/sys/class/rfkill以下に、rfkill*ディレクトリがあり、その中に幾つかのファイルがある。nameの中にはそのデバイスの名前があり、rfkill0/nameはeeepc-wlan、rfkill1/nameはeeepc-bluetoothとなっている。そして、同じディレクトリ内のstateファイルには0か1の数字があって、これを変更することでそのデバイスの状態を変更できるらしい。

というわけで、節電術については、この仕組みを使って無線デバイスの電源のオンオフを出来るようにすると良い。そして、無線LANについては、この電源のオンオフに連動してネットにも繋がるようにすれば便利になる。

今までの知識と一緒にまとめると、無線LANデバイス起動の処理は、次の通り。

 rfkillスイッチを使って、無線LANデバイスの電源を入れる。
 (キーボードの上の無線ラン用表示ランプ点灯)
  ↓
 S101用無線LANドライバath9kのロード
  ↓
 ifconfigによるデバイスの準備
  ↓
 wpa_supplicantによる、回線の接続
  ↓
 dhcpdでのIP取得(もしくは、デバイスのルーティング)

無線LANデバイスの終了は、上の処理を逆順にすることになる。

この手続きを実際に行う手伝いをパッケージ「acpi-eeepc-generic」同梱のスクリプト/etc/acpi/eeepc/acpi-eeepc-generic-toggle-wifi.shが行ってくれる。現実には、このスクリプトの中から、/etc/acpi/acpi-eeepc-generic-functions.sh内の関数を呼び出している。

そこで、まず、/etc/conf.d/acpi-eeepc-generic.confのCOMMANDS_WIFI_TOGGLE変数の値にこのスクリプトを指定する。acpi-eeepc-generic-toggle-wifi.shは、引数を付けずに呼び出した場合、状態のトグルを行うことになる。そして、その内容は、電源が入っていなかった場合、電源を入れて、ドライバをロードし、ifconfigでデバイスの準備をしてくれるまで、逆に、デバイスが起動している状態だと、デバイスを終了させて、ドライバをアンロードし、電源を落としてくれる。

但し、acpi-eeepc-generic-functions.shで定義されているdevice_onの流れを見ると、ドライバをロードする前にifconfigでデバイスをupしようとしているので、このままでは、デバイスがいつもupしないような気がする。ただ、電源管理については、電源を切ってくれるかどうかが重要なだけなので、いつものように他の好きなツールで行うことが出来るので、仕組みさえ分かれば、これで十分。

ここで、/etc/conf.d/acpi-eeepc-generic.confには次の変数が用意されている。

COMMANDS_WIFI_PRE_UP
COMMANDS_WIFI_POST_UP
COMMANDS_WIFI_PRE_DOWN
COMMANDS_WIFI_POST_DOWN

これらの変数にコマンド文字列を定義しておくと、それぞれ、電源を入れる前、入れた後、電源を落とす前、落とした後に実行してくれる。

そこで、以前に紹介したプロファイルを使うnetcfgをここで呼び出す設定をうちではしてみた。こうすることで、Fn+F2を押すたびに、デバイスの電源の入る切るに連動して、自動でネットワークに接続してくれる。

COMMANDS_WIFI_POST_UP=("netcfg myprofile")
COMMANDS_WIFI_PRE_DOWN=("netcfg -d myprofile")

さて、S101の無線LANは、現在の最新のカーネルパッケージでは、ちゃんとネットワークに繋がるようになっているので、ここまでの設定をすることで、快適に無線LAN生活が可能っぽい。

最後に、補足として、やっているうちに気がついた点をメモ

・サスペンド
現在、サスペンドの方はpm-utilsを使っているけれど、スリープとレジーム時の設定をまだしていないので、レジームした時のLANの挙動がおかしくなる。ただ、Fn+F2で一旦切って、立ち上げなおせば、またちゃんと繋げることができる。
pm-utilsについても、電源管理メモとしてまとめる予定。

・netcfgのタイムアウト設定
netcfgで回線接続を行う時、timeoutの設定時間が短いと、1度認証に失敗するとそのまま回線接続も失敗してしまってnetcfgが終了してしまうことが多い。wpa_supplicant自体は何度かトライしてくれるので、少し長めの(20秒位?)timeout時間の設定を明示しておく方がよさげ。
一方で、この間に電源オンオフ操作をすると、またおかしなことになる、、この辺りの挙動は/var/log/messeges.logへのacpiからの出力をみれば、ちゃんとデバイス起動の操作が完了したとかわかるんだけど普段はわからないので、あんまり短期間にFn+F2をプチプチ押さないようにするw

・S101の無線デバイスランプ
このランプは、LANとブルートゥースが兼用になっていて、両方の電源が落ちている場合のみ、消灯し、どちらかでも電源が入っていると、点灯する。うちでは、ブルートゥース機器は使ってないので、常時電源を落としてあるので、点灯時は、LAN有効、消灯時、LAN無効となっている。

2009年10月4日日曜日

acpiの仕組みとか

S101はネットブックなので、電源管理が上手に出来るようにする仕組みを色々調べてたのでまとめてメモ。サスペンドと無線LAN制御の具体的な部分は別メモの予定。

1.acpid
まず、基本はパッケージ「acpid」
acpiイベントに対応した処理を行う仕組み。
http://wiki.archlinux.org/index.php/Acpid
もしくは、man acpidの方が仕組みはよくわかる。

インストールはパッケージ「acpid」が公式リポジトリ[extra]にあるので
pacmanでインストール。
そして、/etc/rc.confのDAEMONS配列にacpidを追加する。
但し、halを導入していている場合、halが自動的に呼び出すので
/etc/rc.confでacpidを呼び出す必要は無い。


acpidは、Adbanced Configuration and Power Interface evet daemonってことらしい。acpidは、/proc/acpi/eventを監視していて、ここにイベントの行が追加されるとこれを読み込んで、/etc/acpi/eventsディレクトリの中にあるファイルで定義されたイベントに対応する処理を検索して実行する仕組み。

/etc/acpi/eventsディレクトリの中のファイルの書式は、「event=」行と「action=」の二つを定義する。eventで捕まえるイベントを定義して、それに対応するコマンドをactionに定義する。
acpidに付属しているanythingを例にみると

event=.*
action=/etc/acpi/handler.sh %e

となっている。
eventについては、正規表現(manによればsee regcomp(3)となっている)を用いることができるらしい。また、action行にある%eはacpidからの渡されるイベントの文字列に展開されて、上の例ではスクリプトの引数として使われている。

archlinuxのwikiでは、

event=button sleep.*
action=/etc/acpi/actions/sleep-button.sh "%e"

という風に、イベント毎に実行スクリプトを個別に定義する方法も紹介されているが、anythingのようにすべてのイベントをひとつのスクリプトに投げてそこで、場合分けするほうが単純でよさげ?

その他のTipsとしては、次のものがあるらしい。
・acpidの処理を一旦中止させる。
 /var/lock/acpidというファイルが存在すると、acpidはすべてのイベントを
 無視するため、acpidの働きを止めることができる。
・ソケット
 /var/run/acpid.soketを通じてAPCIイベントのテキストを受け取ることが
 できるので、このソケットに繋がるクライアントプログラムを書ける。

さて、acpiイベントとは具体的には、

 電源ボタンを押した
 Sleep/Suspendボタンを押した
 特定のファンクションボタン+ファンクションキーを押した
 ノートパソコンの蓋を閉めた
 ノートパソコンのACアダプタを接続した(外した)

みたいなもの。

もともとは、ノートパソコンの様にバッテリーで動いてたりする場合、出来るだけ電気を使わないようにするための仕組みで、蓋を閉めたり、ACアダプタ接続の状態をシステムが把握して状況に応じて自動で節電しようとする仕組み。キーに対応する処理も出来るのは、特別なキーに対応して、WiFiデバイスの電源を落としたり、ユーザーの意思でサスペンドやハイバネートも出来るようしたりするためかな。S101でもFnキーとファンクションキー(F1とかのキー)の組み合わせでこれらの処理をするようになっていて、ファンクションキーの上にはこれらのイメージが書いてある。

以上がacpidの基本的な仕組み。
システムが発信するacpiイベント、特に何のキーが押された等のイベントは、パソコン毎に違う。eeePCでもモデルによって、特殊なボタンの数も違う。S101では、キーボードの上に銀色のボタンで、左に人が走ってるイメージのボタンと、右には電源ボタンの二つがあるが、他のモデルだともっと他にもあるらしい。

ここで、acpidの活用をするためには、じぶんのパソコンに適した設定をする必要がある。そして、もうひとつの注意は、acpidはイベントに対応した処理を定義するだけの仕組みなので、処理の内容についても、システムのアプリの導入状態によって各パソコン毎に違う。なので、acpid付属のhandler.shやacpi-eeepc-generic付属の定義そのままで動く分けではない。特にサスペンドやハイバネートの処理については、色々な方法がある。そこで、ここらへんは別途、自分のシステムに合うものを検討して、一番よい方法を見つけた後、それをacpidの処理に組み込む事が必要。

2.acpi-eeepc-generic
eeePCシリーズの場合、以上のような状況に対応してくれるのがパッケージ「acpi-eeepc-generic」
但し、eeePCシリーズ汎用であるため、スクリプトは結構複雑になっていると同時に、
S101の場合(S101でもロットによるの?)多少手直しが必要な部分もある。
インストールはパッケージがAURにあるので、yaourt等を使う。

(1)概要
acpi-eeepc-genericの主な仕組みは次の通り。

・acpid用の定義
 /etc/acpi/events/acpi-eeepc-generic-events
acpidパッケージ付属のanythingで定義されている定義に代えて(コメントアウト)、
このファイルで処理の定義(呼び出すスクリプトファイルの指定)をしている。
具体的には、すべてのイベントについて、/etc/acpi/acpi-eeepc-generic-handler.shを呼び出している。

・処理の定義
/etc/acpi/acpi-eeepc-generic-handler.sh
このファイルで、イベントに対する処理の定義を行っている。
実際には汎用的な定義になっており、イベント及び処理はすべて変数が使われていて、その具体的な定義は別ファイルになっている。
また、これらの中で使われているシェル関数の定義も別ファイルに集められ、その他のユティリティ的なプログラムファイルも別に同梱している。
これらの別定義ファイルをまとめると以下の通り。

キーイベントの定義:/etc/acpi/eeepc/models/以下の各モデル名のファイル
処理の具体的なコマンドの定義:/etc/conf.d/acpi-eeepc-generic.conf
シェル関数の定義:/etc/acpi/eeepc/acpi-eeepc-generic-function.sh
その他のユティリティプログラム:/etc/acpi/eeepc/以下の上記以外のもの

これらのファイルを使ってacpi-eeepc-genericは構成されて動いている。
eeePCシリーズでこのパッケージを使う場合には、モデルが自動で決定されて、それに対応するキーイベントが読み込まれて、処理の内容も一般的なものがデフォルトで定義されており、だいたいは使えるようになっている。
カスタマイズは、/etc/conf.d/acpi-eeepc-generic.confファイルのみで一元管理する仕組みになっている。
acpi-eeepc-generic.confでは、変数の値として具体的なコマンド文字列を定義する(配列として複数コマンドもOK)。

(2)キーイベントの修正
キーイベントとキーの対応について、S101の場合、/etc/acpi/eeepc/models/acpi-eeepc-S101-events.confで定義されている。
ここでの定義は、前半と後半の2段階の定義になっている。前半は、コメントされている「Silver buttons」と「Fn+F? conbination」の部分で、実際のボタンが押された場合にシステムから送られてくる文字列(数字)とボタン名の対応の定義、後半は「Match previous to functions」で、このボタン名の変数とボタン名に対応したイベント名の対応の定義になっている。

まずは、前半のボタンとシステムが送ってくる文字列の関係については次のようになっている。先に述べたとおり、acpidは/proc/acpi/eventを監視して、イベントが起こるたびに/etc/acpi/events以下の定義を実行する。acpi-eeepc-genericパッケージを導入すると「/etc/acpi/acpi-eeepc-generic-handler.sh %e」が実行される。この「%e」の部分がイベント文字列に展開され、acpi-eeepc-generic-handler.shはこの文字列を分析して、場合分けを行って処理している。

イベントに対する「%e」の内容を具体的にみてみる。
例えば、以下のようにしてみる。

/etc/acpi/events/acpi-eeepc-generic-eventsのaction行を一旦コメントアウトして、

action=/etc/acpi/test-handler.sh %e

を追加。
以下の内容で、/etc/acpi/test-handler.shファイルを作成して、実行権限をつける。

#!/bin/sh
echo "$1:$2:$3:$4:$5:$6:$7" >>/etc/acpi/test.log

次に、/etc/acpi/test.logを空のファイルとして作成しておく。
以上の準備ができたら、acpidを再起動する。

# /etc/rc.d/acpid restart

これで、イベントが発生するたびに、acpidが渡してくる文字列が/etc/acpi/test.logに記録される。実際にFn+F1を押してみるとlogファイルには次のような行が追加される。

button/sleep:SLPB:00000080:00000001:::

他のキーを押してみたり、蓋を閉じてみたり、ACアダプタを付けたり外したりして試すと
色々なイベントが追加されるので試してみる。テスト用のスクリプトファイルは、検証のために7つ分の文字列を用意したけれど、送られてくる文字列は、4つの部分に分かれた文字列が送られてくることが分かる。また、4番目の要素は、そのイベントが呼ばれるたびに増えたりするらしいこともわかる。

これらのうち、特にS101でキーを押した場合の%eの3つ目までの要素の対応をまとめてみると以下の通り。

fn+F1 button/sleep SLPB 00000080
fn+F2 hotkey ATKD 00000010
fn+F3 hotkey ATKD 00000037
fn+F4 hotkey ATKD 0000001b
fn+F5 hotkey ATKD 0000002* (押すと数字が下がる)
fn+F6 hotkey ATKD 0000002* (押すと数字が上がる)
fn+F7 hotkey ATKD 00000016
fn+F8 hotkey ATKD 00000030
fn+F9 hotkey ATKD 00000012
fn+F10 hotkey  ATKD 00000013
fn+F11 hotkey ATKD 00000014
fn+F12 hotkey ATKD 00000015
fn+space hotkey ATKD 00000039

left_silver hotkey ATKD 00000039
right_silver button/power PWRF 00000080

fn+F5とfn+F6は3つ目の要素が変則的

ここで、acpi-eeepc-S101-events.confと見比べてみると、前半部分の定義は%eの第3要素についての定義をしているのが分かる。そして、定義の内容が多少ずれているのも分かる。また、配列定義になっている部分も、後半部分の定義で第1要素のみを定義しているため不必要っぽい。

そこで、実際に自分で試した結果で前半の定義を書き換えると次のようになる。

#Silver buttons
KEY_SILVER1="00000039"
KEY_SILVER2="00000080"
KEY_SILVER3=NONE
KEY_SILVER4=NONE

#Fn+F? combination
KEY_Fn_F1="00000080"
KEY_Fn_F2="00000010"
KEY_Fn_F3="00000037"
KEY_Fn_F4="0000001b"
KEY_Fn_F5="0000002*"
KEY_Fn_F6="0000002*"
KEY_Fn_F7="00000016"
KEY_Fn_F8="00000030"
KEY_Fn_F9="00000012"
KEY_Fn_F10="00000013"
KEY_Fn_F11="00000014"
KEY_Fn_F12="00000015"
KEY_Fn_Space="00000039"

そして、これに対応して、後半部分も書き換えるが、もともと定義されていない部分、
F3,F4辺りも追加して整理してみると次の通り。

#Match previous to functions
EEEPC_BLANK=$KEY_SILVER1
EEEPC_RESOLUTION=NONE
EEEPC_USER1=$KEY_Fn_F3
EEEPC_USER2=$KEY_Fn_F4
EEEPC_USER3=NONE

EEEPC_SLEEP=$KEY_Fn_F1
EEEPC_WIFI_TOGGLE=$KEY_Fn_F2
EEEPC_WIFI_UP=NONE
EEEPC_WIFI_DOWN=NONE
EEEPC_TOUCHPAD_TOGGLE=NONE
EEEPC_BRIGHTNESS_UP=$KEY_Fn_F5
EEEPC_BRIGHTNESS_DOWN=$KEY_Fn_F6
EEEPC_XRANDR_TOGGLE=$KEY_Fn_F8
EEEPC_XRANDR_TOGGLE_0=NONE
EEEPC_XRANDR_TOGGLE_1=NONE
EEEPC_XRANDR_TOGGLE_2=NONE
EEEPC_TASKMAN=$KEY_Fn_F9
EEEPC_VOL_MUTE=$KEY_Fn_F10
EEEPC_VOL_DOWN=$KEY_Fn_F11
EEEPC_VOL_UP=$KEY_Fn_F12

以上がacpi-eeepc-S101-events.confの修正になるが、注意点がある。
/etc/acpi/acpi-eeepc-generic-handler.shを読み解けば、処理の場合分けの仕組みは、まず、%eの第1要素で大きく分けられている。このうち、acpi-eeepc-S101-events.confの設定は、第1要素が「hotkey」の場合の第3要素の振り分けに用いられている。

つまり、fn+F1と電源ボタンについては、S101の場合ここでの設定は意味が無いことになる。

(3)具体的なコマンドの呼び出し設定。
キーの対応付けが修正できたら、次は/etc/conf.d/acpi-eeepc-generic.confで自分のシステムにあった設定を行うことになる。設定の仕方は、ファイルのコメント部分に記載されている。

・Xアプリの権限 XUSER
XUSERの値として、Xアプリ実行者権限を入れておく。

・お知らせ機能 NOTIFY
NOTIFYの値は、コメント通り
gnome系ならlibnotify
KDE系ならkdialog
汎用のdzenならdzen
特に必要ないなら、NONE

・無線ランドライバ WIFI_DRIVERS
S101の場合、ath9kなので
WIFI_DRIVERS=("ath9k")

・設定完了のしるし EEEPC_CONF_DONE
この変数の値がnoの間、お知らせメッセージに設定未完了の旨の表示がでる。
no以外なら出ないので、設定が終わればこの行をコメントアウトする。

・デバイストグルのリストア
RESTORE_hogehoge変数は、システム起動時に、前のデバイスのオンオフ状態を引き継ぐかどうかのフラグ。1で引継ぎ、0でシステムの初期値

・COMMAND_hogehogeによる、コマンド設定
変数の値は配列も可、コマンドの先頭に@をつけると、ユーザー権限で実行。変数名でおおよその対応イベントが分かるが、詳細な対応は/etc/acpi/acpi-eeepc-generic-handler.shファイルをみて直接確認する。また、実は変数の入れ子や、他のユティリティファイルそのものの変数も混在していて、結構読み解くのはめんどくさい。

デフォルトのままで、画面輝度の調整やボリューム調整はできるとおもう。


3.電力節約術
ACPIは結局のところ、ノートパソコン等で電源を長持ちさせるための仕組みなので、これを実現する幾つかの点に絞ってその設定を検証する。

・サスペンド、ハイバネート
サスペンドはメモリに情報を退避して、休眠状態にする方法
ハイバネートはHDDに情報を退避して、休眠状態にする方法
通常、acpiイベントのsleep/suspendイベントに対応して、処理を行うことになる。
acpi-eeepc-genericでは、sleep/suspendイベントに対応して、COMMANDS_SLEEP変数の値が呼び出される。サスペンド、ハイバネートについては、acpi-eeepc-generic同梱のスクリプトとしてacpi-eeepc-generic-suspend2ram.shがある。

サスペンド、ハイバネートについては、いろいろな方法があるが、pm-utilsを使うことにする。そのあたりは、別文書で記載

・画面表示の電源
Xの場合、画面表示のLED電源を落とすことができる?
未検証

・ワイヤレスデバイスの電源を落とす。
無線ランやブルートゥースデバイスは、よく電気を食うらしいので、これらを使っていないときにデバイスの電源を落とす。特に、無線ランについては、デバイスの制御と共に、ネットワークへの接続も含めてボタンでオンオフ出来るようにすると便利なので、その当りを別文書で検討する。
acpi-eeepc-generic同梱のユティリティスクリプトはacpi-eeepc-generic-toggle-wifi.shだが、そのままではS101の場合上手く働かないように見える。
イベントの対応は、無線ランがCOMMANDS_WIWI_TOGGLE。
ブルートゥースは直接の対応がないので、Fn+F3(上記の設定でCOMMAND_BUTTON_USER1)辺りに割り振る。

2009年9月29日火曜日

halevtでマウント

仕事が暇になっちゃったので、久々にメモ

リムーバブルメディアのマウントについて色々みてみた。

S101ではpcmanfmファイラを使って、USBメモリとかSDカードをマウントしてた。

デスクトップで使っている場合、gnomeやkdeがいろいろと面倒をみてくれるし、それに乗っかってるのが楽だけれど、netbookのS101で遊ぶには、ファイラに依存したり、そもそも、Xを立ち上げてるかに関係なく、リムーバブルメディアを差したらマウントしてくれる方が便利。

ここで、整理しておくことは、システムが機器を自動的に認識する仕組みとマウントをする仕組みは別々に考えること。その上で、リムーバブルメディアのマウントについて見てみると次の様な方法がありそう。

(1)udev
 udevはデバイスファイルの作成とモジュールのロードを担当する仕組み。
 オプションの機能で外部プログラム呼び出しが出来るので、
 これでマウントをする事ができるかもしれない。

(2)hal
 halはホットプラグに関連して、デバイスの情報データベースを持って
 整理し、 これを利用してアプリケーションにデバイスの追加や削除を
 含んだ情報配信をしている。
 hal自体にオートマウントに機能は無い。(はず)
 主にX上のデスクトップアプリケーション(主にファイラ)が
 halからのD-busメッセージを経由して、自動的にマウントを行う。

(3)autofs
 autofsはそれ自体が、自動的にマウント制御をするもの。

(4)ivman
 halとD-busを利用したボリュームマネージャだったが、2007年頃から
 開発が停滞。halのアップデートに伴い、pathcが必要。
 archではAURのメンテナも撤退?
 現在、適切に動くかどうか不明(将来的にはオブソレート?)

(5)halevt
 ivmanの後継的位置づけ(?)

halを使わないなら、udevのみでも出来そうな気もする。
autofsはリムーバブルメディアよりも、ネットワークファイルシステムの
自動マウントに昔から使われている仕組みらしい。
で、結局うちで試してみたのはhalevt。

ホームページ:http://www.nongnu.org/halevt/
AURのページ:http://aur.archlinux.org/packages.php?ID=24244

ドキュメントとしては上のホームページに設定の仕方が載っているが、元のソースファイル農中にあるREADMEも参照すると分かりやすい。AURのパッケージをインストールするとその辺のドキュメントはインストールされないので、別途拾ってきて見る方がお勧め。

halevtはhalを利用してデバイスの検知を契機に、任意のアクションを起こす仕組みを提供してくれる。

とりあえず、使いたい場合は以下の設定をする。

1.パッケージインストール
 archではAURにあるので、パッケージ「halevt」をyaourt等でインストールする。

2.設定ファイル
サンプルの設定ファイルが/usr/share/halevt/examples/以下に配置されている。
examplesディレクトリにあるautomatic_sync_mount.xmlを
/etc/halevt/ディレクトリに置く

設定ファイル内のhalevt-mountの-mを000で読み書き実行全て可能

3.マウントの権限
/etc/PolicyKit/PolicyKit.confに以下を追加。

<config version="0.1">
<match user="halevt">
<return result="yes"/>
</match>
</config>


4.デーモン
halevtはhalを利用するので、rc.confのDAEMON配列にhalとhalevtを加える。

以上の設定をしておけば、とりあえず、差したらマウントしてくれる。

その他の方法としては、上の様にシステム側でのデーモンとして動かさないで、ユーザー権限で動かすこともできる。設定ファイルを書いていく上でのとっかかりとして押さえておくオプションは以下のもの。

-f オプションでフォアグラウンドで動く。
-i オプションでモニタモードで動く。
-c オプションで設定ファイルを指定する。

自分で設定ファイルhogehogeを書いて試すときは、次のコマンドでhalevtからの出力も見ることが出きるので調整しやすい。


$ halevt -f -c hogehoge


-cオプションが無い場合、以下の順番でディレクトリを検索。
(aurパッケージの場合)

$HOME/.halevt/
/etc/halevt/
/usr/share/halevt

これらのディレクトリの中で、.xmlで終わるファイルを設定ファイルと
みなして読み込んでくれる。
(同一ファイル名の場合、順序が先のディレクトリにあるものが優先)

xmlの事はあまり詳しくないけれど、設定の基本はmatch要素でデバイスを
マッチさせてそのターゲットについて、OnInit(halevt立ち上げ時),
Insertion(デバイス認識時),Removal(デバイス削除時)等に、
対応したコマンドラインを設定するらしい。

halevtパッケージにはhal経由でマウントしてくれるhalevt-mount等の
ユティリティが同梱していてこれを利用する。hal経由のマウントについては、
先の設定で紹介したように権限の問題があるので、ユーザー権限で利用する
場合は/etc/PolicyKit/PolicyKit.confにユーザーを登録する必要がある。

その他の注意というか勉強TODOとしては、halが管理する情報のコンフィグ
の仕方の情報ポインタがよく分からない、、
mountポイントの名前付けルール等はhal側の設定になってると思う。
権限の扱いに付いても、イマイチ、、、

自動でマウントは出きるようになった。
しかし、USBメモリを抜く前にumountすべきなんだろうけど、
どういう作法が良いのかよくわからない。
シンクロはしてるようなので、ファイル扱った後、
ちゃんと閉じて、暫くしたら気にせず、ぶっこ抜いとけばいいのかな?w

後はぁ、、halevtとgnome上のファイラとか機能がかぶってるとどうなるのか不明。
まぁ、そのときはhalevtデーモン切ればいいか。。

2009年8月31日月曜日

次スレが出来てた

2ちゃんのarchスレがいっぱいになって、次のスレに移行してた。

夏は結局仕事が忙しくて盆休みどころか、土日も無くトホホ。。。
その割には、仕事から帰ってから夜な夜なWiiのモンハン3にハマったw

s101の方は、相変わらず無線LANが繋がらなくて、どうにかならないものかと
ごちょごちょやってみてた。
デバイス自体はずっと認識されてるから、ドライバの問題なんだろうけど、、
acpi経由(?)でいったん、無線LANデバイスを落としてから、もう一度立ち上げて、
それから、接続手順を踏むと、たまに繋がったりする。
ちゃんと繋がってたカーネルのバージョンもあったので、モジュールのソースの違いを
確かめたらいいのかなぁ、、

で、仕事が一段落したので、なんとなく本屋さんにあったRubyの本を買ってみた。

2009年7月17日金曜日

texとか

最近、暑すぎる!!
仕事で外に出ることが多くてくたくた><

昔texで仕事の書類を作って見たことがあったので、またやってみようかなぁ〜とか思い、埃をかぶったLatex2eの本達を引っ張り出してきてツラツラ読んだりしてた。
当時使ってたのって、vineかDebianJPで日本のディストリだったから、勝手にインストールされてたんだけれど、、Archの場合、パッケージをインストールして、、ってわけにはいかないのね(^^;

なにやら時代はLatex3を通り越してtexLiveとかいうのに進化してるの??
そもそもtexそのものについて詳しいわけではなく、ディストリに入ってたLatexを使ってただけなので、なんのことかさっぱり分からん。Webで検索してみるとptexliveってのがあって、wiki上で日本のtexのこれからの方向性とか熱く議論されてた。んで、やっぱりわからんw

windozeで昔の本の付録についてるCDからインストールして使うのがお手軽かな

2009年7月2日木曜日

xtermでuim編集時の文字化け

IONノートの方にはなんとなくuim入れたんだけど、xterm上で使うと日本語入力してる最中の編集部分?が文字化けしてた。gtkアプリは問題ないみたい。

解決策はuim-jaっていうメーリングリストの「[uim-ja 142] Re: Mandriva 200 9.1 上でクラッシュ」で紹介されていた。

xterm*ximFont: -misc-fixed-medium-r-normal--14-130-75-75-c-140-jisx0208.1983-0

を~/.Xdefaultsとか~/.Xresourcesとかで読み込ませる。


2ちゃんで質問してみたら、同じ症状の人とかいた。
だけど、多分、普段みんなDE付属のgtkとかqtベースのターミナル使ってるだろうし、今更xtermとかでの不具合に気がつかなかったのかもしれないw
文字化けしてないよーって人が自分の設定とか紹介してくれたけれど、うちでは上手くいかなかった。
結局、文字化けする人としない人の違いって何処だったんだろう?
vineからビットマップフォント流用してみてるって人のを試したら上手く行ったのかな?

XTerm*font: とXTerm*fontDoublesize: で適切なフォントしていしたらxterm*ximFont: もそのフォントになるのかな?リソースの階層?のこととかいまいちよくわからん。

それ以前に、xrdbってのをすっかり忘れてた。はじめ~/.Xdefaultsにカキカキしてて、あれれ??だった。
Xの起動の仕方によるんだろうけど、うちではstartxでxrdbされてるらしい。
.xinitrcの先頭で

xrdb -merge $HOME/.Xresources

して、リソース設定は~/.Xresourcesに書くようにした。

すぐ忘れるので適当にググってメモ
UNIXの部屋 コマンド検索: ~/.Xresourcesとか?

2009年6月30日火曜日

IONノート(その3)

すっかりとIONノートを気に入ってしまった。

このノートの画面サイズは12.1インチモニタで1368x768、S101の10.2インチで1024x600よりちょっと広いだけなんだけど、すごく広く感じる!!GNOME&Compiz Fusionの組み合わせも普通に動いてると思う。

不満は、、、無線LANがよく切れちゃうことかなぁ。。
lspciするとAtheros Communications Inc. AR9285 Wireless Network Adapterって出てて、ドライバはath9kでS101とおなじやつ。S101と違うのは、iwlistとかのスキャンはちゃんと出きるし、アクセスポイントにすんなり繋がるんだけど、暫くすると接続がきれちゃうっぽい、、windozeの方でも同じような感じで、こっちはS101の時よりも繋がりも通信速度もなんとなくイマイチ。。。
もうひとつは、ノート用の2Gメモリが一個余ってた。ドスパラのページのスペックみてみると、メモリ最大4Gとか書いてるから、メモリのスロットがもう一個あるんだろうとおもって、裏蓋あけてみたら、確かにメモリ用の空きスロットらしいところがあったので、取り付けてみたんだけど、どうも上手く認識してくれない、、、相性がわるいのかな、、、

2009年6月29日月曜日

IONノート(その2)



実はS101ではGNOMEを一回も試してなかった。S101のWikiとかみると、GNOMEとかやめといた方がいいよ的なコメントがあったから、、だから、入れたらどれくらいの重さなのかわからないんだけれど、とりあえずIONノートはグラフィック処理がお得意っぽいし、ATOM330はデュアルコアなので、ちっちゃいノートでもきっと大丈夫だろうと思いGNOME入れてみた!

Xorg導入して、GNOMEインストールして、UIM入れて、、割とあっさり、普通にブログには書き込める環境はできちゃった。例のCompiz-Fusionもちょこっと試してみるとデスクトップがクルクル快適に回った。

そういえば、カーネルが.30にアップデートされてて、またS101の無線LANが死んだ><

2009年6月28日日曜日

Nvidia IONのノート買っちゃった

少し前からドスパラからのメールで「日本初、NVIDIA® ION™搭載ノートパソコン」なんてのが紹介されていた。今日なんとなくドスパラのホームページを見たら「入荷しました!!」なんてかいてあるものだから、仕事帰りに寄って、、、触ってるうちに欲しくなって、衝動買いしてしまった(^^;

買ってみてあらためて気がついたのは、、、ほんとS101って静かなんだ、、、ってこと。
この新しいIONノートは音がするw多分、うるさいわけではないんだろうけど、初めて買ったノートがS101だったから、他のがこんなに音がするとは知らなかった!

逆にS101は薄くて軽くていい!!って思ってたけれど、多少厚みがあっても少し重くてもあんまり気にならなかった。

とりあえず、性能はS101より上っぽいし、画面も少し広くてDVDドライブもついてて、HDDで容量も多いからWindozeとデュアルブートにしてみた。
しっかし、もってたXPは出た当初のやつなのでインストールが面倒だった><
archもコアだけインストール完了!

んーー、、ノートの左側に排気されるみたいで、左手をパソコンの横に置くとすごーーく熱いなぁ。。後ろに排気してくれたらいいのに、、、っていうか、こんなに熱いんだ(^^;

2009年6月14日日曜日

ABSでnavi2ch


昨日、jnethackをパッケージ化してから、色々試して遊んでみた。
結果、あまり難しいことを考えずに、個人用のArchLinuxパッケージを作るのは面白い。

デスクトップパソコンの方では2ちゃんねる見るのにJDを使っていたが、S101にはnavi2chをパッケージ化せずにインストールして使っていた。何故にnavi2ch如きがAURに無いのかが不思議と思っていたが、、、きっと、みんな簡単にパッケージ化出来るから、わざわざ誰もメンテナーになりたくなかったに違いない。

そこで、navi2chのPKGBUILDのメモ

pkgname=navi2ch
pkgver=1.8.3_BETA
pkgrel=1
pkgdesc="navigator for 2ch which works on many Emacs"
arch=(i686)
install=navi2ch.install
url="http://navi2ch.sourceforge.net/"
license=('unknown')
source=(http://navi2ch.sourceforge.net/beta/navi2ch-1.8.3-BETA.tar.gz)

build() {
cd $startdir/src/$pkgname-${pkgver//_/-}
./configure --prefix=/usr
make || return 1

make DESTDIR=${pkgdir} install

rm -rf ${pkgdir}/usr/share/info/dir
}

幾つかのTips

(1)バージョン番号に「-(ハイフン)」が使えない。
バージョン番号にハイフンがあると使えないので、pkgverには「-(ハイフン)」の代わりに「_(アンダーバー)」を使うらしい。ところがこのままだと、ソースディレクトリに入る時に変数名で入れないので、上記で使っている様に${pkgver//_/-}と書くと良いらしい。


(2)prefixはusrらしい
個人用のは区別して/usr/localもありなのかもしれないとwikiには書いてあるのかもしれないがニュアンスがよくわからなかった(^^;
とりあえず、usrにしておけば普通にパスの通ったとこにおいてくれる。

(3)パッケージングするときの出力パス
Makefileに目を通して、DESTDIRがあれば、上の用に
make DESTDIR=${pkgdir} install

で、良いらしい。pkgdirはmakepkgが管理してるのかな?とりあえず、作業ディレクトリ以下のpkgディレクトリを指してくれるみたい。


(4)infoのdirファイルを削除しておく
普通既にinfoのTop(?)になるdirファイルはシステムに存在するので、パッケージの中にdirファイルがある場合は、消しておかないとファイルがコンフリクトしてインストール時にエラーになる(なってくれないと、勝手に上書きしちゃう)
そこで、一旦、pkgディレクトリ以下にインストールされたdirを上の様に削除するのが良いらしい。
確認の仕方は、一旦出来上がったパッケージファイルを

tar tzvf hoge.pkg.tar.gz

とか??適当に確認。

(5)んじゃ、dirファイルへの登録は?

infodir=/usr/share/info
filelist=(navi2ch.info)

post_install() {
for file in ${filelist[@]}; do
install-info $infodir/$file $infodir/dir 2> /dev/null
done
}

post_upgrade() {
post_install $1
}

pre_remove() {
for file in ${filelist[@]}; do
install-info --delete $infodir/$file $infodir/dir 2> /dev/null
done
}

このスクリプトがinfo登録用の雛形らしい。
filelistの配列にインストールされるinfoファイル名をスペースで区切って列挙するだけ。
そして、このファイルを作業ディレクトリに置いておく。
PKGBUILDファイルにはinstall=行に、このスクリプトファイル名を書いておく。
今回の場合だとスクリプトファイル名はnavi2ch.installにした。


やってみると、./configureで簡単にmakeできるやつは、すぐパッケージに出来る感じ。
昨日やってたjnethackとかだと、もとのnethack自体、Makefileをsed使ってガシガシかきかえてあった。。。暗号みたいでああいうのは嫌だ、、自分で絶対できん!!><

それと、個人用のパッケージングなら、インストール後になんか必要な作業がいる場合もわざわざ頭をひねってそこまで自動化したり、コメントしなくてもいいから気楽。
.emacsに(autoload 'navi2ch "navi2ch" "Navigator for 2ch for Emacs" t)を書きましょうとか、、

というわけで、ABSがちょこっと使えるようになって幸せ♪

2009年6月12日金曜日

ABSでjnethack

ABS - The Arch Build Systemを始めて体験してみた。
ソースからビルドしてパッケージングするための仕組みってのは、あちこちに書いてあるからうっすら知ってたんだけれど、具体的にどうやって使うのかイマイチ分からなかった。

そこで、Wikiを見ながら適当に実践してみたら、なんとなく理解。


1.PKGBUILDファイルの謎とパッケージabs
yaourtとか使ってAURを利用するとPKGBUILDファイルを使ってmakepkgがパッケージングを勝手にやってくれるってのが見ててわかったんだけれど、公式レポジトリ(っていうの?)のPKGBUILDファイルってどこにあるのかなぁ?って探したことがあった。ArchLinuxのTopページの右上の「Package Search」からパッケージを見つけると、説明ページからPKGBUILDファイル見れたりして、これをコピーして使うのかなぁ?とか思っていた。

しかし、実際にはそうじゃなくて、absというパッケージをダウンロードしてabsコマンドを発行すると、archlinuxのレポジトリに含まれるすべてのパッケージのPKGBUILDファイルの最新のものがダウンロードされる仕組みになっていた!!


2.ABS tree
absコマンドによってダウンロードされるPKGBUILDファイル等(パッケージによってはパッチファイルやインストール用の別のスクリプトファイルも入っている)は、/var/abs/以下にレポジトリ毎に区分されパッケージ毎のディレクトリに各々入っていて、「ABS tree」と呼ばれているらしい。また、このtree構造の中に配置された各パッケージ用のディレクトリの中にはソースファイルは入っていない。archlinuxのパッケージングは、ビルドの際にソース配布元から直接ダウンロードするようになっている。

で、このABS tree自体はPKGBUILDファイル群のデータベースみたいなもので、このtree以下の各パッケージディレクトリの中でビルドやパッケージングを行うものでは無い。このABS treeはrootになってabsコマンドを発行する度にサーバー側の最新のPKGBUILDファイルと同期してくれるんだと思う。


3.パッケージング作業の場所は、ホームディレクトリ内でする
そこで、実際のパッケージングは、/var/abs/以下のABS treeと全然関係なく、適当なディレクトリを作ってその中で行う。ABSのwikiをみるとホームディレクトリの中にabsとか名づけた適当なディレクトリを作っておき(自分で作るパッケージ用のディレクトリを作って整理するだけで別に必ずこういうディレクトリがいるわけではない。)その下に作りたいパッケージ毎のディレクトリを用意して作業をはじめる。

ABSの仕組みは、PKGBUILDファイルにビルド用の手順を書いて、makepkgコマンドを呼び出すだす。試しに、適当な作業ディレクトリを自分のホームディレクトリに作って、ABS tree内の適当なパッケージのPKGBUILDファイル(それ以外のパッチやスクリプトがあれば全て)を作業ディレクトリにコピーし、その作業ディレクトリに入って

$makepkg -s

してみるといい。勝手にソースファイルを配布元からダウンロードして来て、ビルド作業を行い、最終的にhogehoge.pkg.tar.gzというarchlinux用のパッケージファイルを作業ディレクトリに作ってくれる。


4.jnethackを作ってみる。
まずは、作業用のディレクトリを作成。

$mkdir ~/abs/
$mkdir ~/abs/jnethack/


jnethackは元のnethackにパッチをあてて日本語化したものなので、nethackパッケージ内のファイルを作業ディレクトリにコピーする。nethackの場合はPKGBUILDファイルのみ。

次にパッチファイル。JNetHack Projectからダウンロードして、作業ディレクトリに入れる。

ここで、PKGBUILDファイルの中身を見てみる。

build(){}内の部分で、元のソースからコンパイルがちゃんと通るようにソースファイルの適当な箇所に手がいれられている。
そこで、これをベースに新たな「jnethack」パッケージになるように、いくつかの修正をくわえてみる。

(1)パッケージネームをjnethackにして、バージョンナンバーを付ける。

pkgname=jnethack
pkgver=3.4.3_0.10
pkgrel=1

しかし、変数pkgnameとpkegverは元のnethackのソースファイルやディレクトリ名の指定に使われているので、これらの部分のために

orgpkgname=nethack
orgpkgver=3.4.3

とうい変数名を追加して、ソースファイルやディレクトリ名の指定の所をorgpkgnameとorgpkegverに書き換える。
具体的には、
 source=で始まる行
 cd $startdir/src/$pkgname-$pkgver/が含まれているいくつかの行

但し、最後の方のライセンスファイルの所はorgpkgnameには変えない

(2)パッチを当てる
build(){}の一番最初に

cd $startdir/src/$orgpkgname-$orgpkgver/
zcat $startdir/jnethack-3.4.3-0.10.diff.gz | patch -p1

を追加

(3)jnethackパッチがあたったことによる修正
次に、元々のファイルに対する訂正がjnethackパッチがあたったために上手く働かない部分を修正する。

sed -e '/define HACKDIR/ s|/usr/games/lib/nethackdir|/usr/share/nethack/|' \

と言う行を

sed -e '/define HACKDIR/ s|/usr/games/lib/jnethackdir|/usr/share/jnethack/|' \

に修正する。(nethackがjnethackになったため、ひっかからなくなっている)

もう一つ、jnethack起動スクリプトの部分

-i $startdir/pkg/usr/bin/nethack

という行を

-i $startdir/pkg/usr/bin/jnethack

に修正する。

(4)パッケージを作る
PKGBUILDの訂正が終わったら、makepkgコマンドでパッケージ作成。

$cd ~/abs/jnethack
$makepkg -s

そしてインストール

$sudo pacman -U jnethack-3.4.3_0.10-1-i686.pkg.tar.gz


多分、以上の修正で、素のnethackともコンフリクトしないjnethackパッケージが出きると思う。

最後にjnethackで遊ぶときはターミナルの設定をEUC-jpにしないとダメ!更に色に関しては、黒背景に白文字、gnome-terminal等の場合色のパレットをxtermにすると良いらしい。

2009年6月10日水曜日

銀魂おもしろい

PCの話とは関係ないんだけど、しばらく前にケーブルテレビでやってた「銀魂」っていうアニメをたまたま見て気に入ってしまい、DVDとか借りてきちゃったりしてます。子供の頃に毎週楽しみにみてた「うる星やつら」に似てるところがあるのかなぁw で、S101でも試しに見てみたら普通に見れました。DVDドライブ繋げてわざわざ見るのは面倒だけどね(^^;

さて、仕事の机の上にちょこんと乗っているS101なんだけど、IRC画面ばっかりってのも飽きたので、nethackを入れてみた。yaourt rougelike ってすると、結構いっぱいひっかかる。
angbandの日本語版を昔やったことがあるけれど、slash'emとかってのも有名っぽかった気がする。

nethackは一時期スポイラー見ながらクリア頑張ったけど、出来なくて挫折した。クリアを目標にしていて結構、進めた後に事故的な意味不明な死を迎えると、次に立ち上げる気力がなくなるゲームだwこのゲームはきっと、クリアよりも様々な死に方を楽しむっていう気持ちでやらないといけないにちがいない(^^;

AURにjnethackがなかったのが残念。nethackのコンパイルとかってコンフィグがめんどくさそうなので、腰が引ける、、、



遊びながら、nethack系のページを散策していたら。面白いのがあった。

Public NetHack server at nethack.alt.org (NAO)

nethackのためのパブリックサーバーらしい。

$ktelnet nethack.alt.org

ユーザー登録して参加できるらしいが、それより面白そうなのは、サーバー上で他の人がやってるのを観戦することができる。他の人のプレーを見ると、操作がめちゃめちゃ素早いのに驚いた!!慣れるとこんな感じなのかなぁ、、

hack@holicNetHack Portal
こっちは、スポイラー系とういうか、nethackをやるのに雰囲気を盛り上げてくれる文書のHP

2009年6月2日火曜日

だよもんって何だよもん?

UNIX板っておかしなスレが立ってもウイットに富んだ大人のレスがついて和んだスレへと変化することがあって昔から好き。
Archとは全然関係ないけど、暇な時に昔から眺めてる無害な雑談スレをリンクに追加w

S101は、仕事場の机の横で暇を持て余した時にちょこちょこといじって遊んだりしてたんだけれども、最近、忙しくてあんまり触る暇がない、、、IRC画面になったま、ちょこっと雑談するくらい。

家に帰ってからは、なんとなく「EmacsLispプログラミング入門」なるむかーし買った本が出てきたので読んだりしてるんだけど、、すぐ寝ちゃう(^^;やっぱりLispってどうも性に合わないのかなぁ?Lisp関係の本って昔から思い立っては買ってみるんだけど、読破したこともなかったりする。一番とっつきやすかったのはJavaかなぁ、、オブジェクト指向っていう概念が性にあってるのかもしれない。だから、C++も好き。

結局、家のメインのパソコンもArchしか立ち上げなくなってしまった。昔と違ってGnomeも普通に動くし、普段はネット見たりくらいしかしないから、WindozeもLinuxもあんまり関係ないっぽい。
んで、せっかくだからCompiz-Fusionとかも入れてみた。少し前から「Linuxはこんな凄いことができる」みたいな感じで大げさにネットとかでふれ回ってるの見てて、「だからどうした?!」とか思ってたんだけれど、、、、使ってみると、やっぱ面白いw
昔からバーチャルデスクトップとかあんまり器用に使える方ではなかったんだけれど、普通に使う様になった。っていうか、これはS101でawesome使うようになったからかもしれないけれど、、何にせよデスクトップがクルクルと入れ替わるのは見てて面白い!!ウインドの開け閉めのアニメの派手さもまだ飽きてないw

2009年5月23日土曜日

S101無線LAN復活(.29.4-1)

カーネルのアップデート(kernel26 2.6.29.4-1)が来てたので試してみた。
今回のは無線LANが無事使えた!!

但し、相変わらず、なんとなくしっくりこないところも、、、
うちではnetcfgコマンドを呼び出してネットに繋げてる。
一旦接続が成功した後に、今度は-dオプションを付けて回線を切断してみる。その後、もう一度すぐに回線を繋ごうとすると、接続に失敗する。しばらく時間をおいて、試すと繋がるんだけれども、、、デバイスの中の初期化かなんかがソフト的に相変わらずおかしいのかなぁ??

LANに関しては、少し前にDHCPでIPアドレスを貰うのを失敗するようになった。最近のアップデートでIPアドレス取得の手続きが厳格化(?)されたらしく、それに従ってない古いDHCPデーモンとかからはIPアドレスの取得ができなく(?)なってた。フォーラムにそれらしい記事があったんだけど、、、どっか、忘れた(^^;
なので、適当にスタティックな接続に代えていたんだけど、今、エラーメッセージ確認しようとdhcpで試してみたら、、、、IPアドレスが取得できてしまった。。。また、アップデートしてその辺りの不都合を元に戻したのかもしれない。

2009年5月18日月曜日

ターミナル上でIRCするirssi

ネットブックで使うアプリはLightweight Softwareが参考になるかもしれない。WebBrowserはTextブラウザも含めて紹介されているけど、FireFoxがやっぱり使いやすい。メールもGoogleのメール使ってるので普段はメーラーアプリを使わなくなってしまった。

しばらく前から、ゲーム友達がIRCでチャンネルに常駐していたので、S101からもアクセス出きるようにクライアントを入れてみることにした。定番としてはXChatが使いやすく、日本語の扱いに付いても適当にこなしてくれる。使った感じでは全然重くも無い。

しっかし、WMにawesomeを使ってるならば、雰囲気的にはやっぱりターミナルの上で動くIRCクライアントが見た目にカッコ良さそうに思うのはミーハーなんだろうか?w
Lightweight Softwareでは、いくつか紹介されていてどれが人気かはわからないけれど、irssiというのを入れてみることにした。
extraにあるので、pacman -S irssiで簡単に導入可能。

で、ターミナル上で使うIRCクライアントの場合、日本語の扱いに工夫が必要となる。ターミナルは設定で扱う文字コードを選択出きるかもしれないけれど、今時の文字コードは大体UTF-8が普通っぽい。ArchLinuxでも日本語環境のコードはそうなっているはず。しかし、IRC上で流れてる文字はISO-2022JPなチャンネルが多いので、何も設定しなければ、流れてくる文字は文字化けしている。この日本語の扱いの解決策として、ネットで検索してみると2通りあるようだった。

1.irssiにISO-2022JP←→UTF-8の相互変換モジュールを組み込む。
irssiは独自にモジュールを作って組み込むことができるらしい。
びんずめ堂のirssi紹介ページに
conv.plという自作のモジュールが紹介されている。
うちでも使ってみたけれど、これでチャットの文字化けは解消される。ただし、irssiのステータスバー(?)部分のチャンネル名やプロンプト部分の日本語が文字化けしたままだった。

2.tiarraを使う。
Tiarra - IRC Proxy softwareらしい。このプロクシを経由することで、文字列の変換を適当にしてもらえる。プロキシといっても大層なものでなく簡単に導入できる。1で紹介した方法と違って、irssiのステータスバー(?)の文字化けも無く気持ちよい。あと、tiarraで使えるデフォルトのモジュールにはいわゆる、なると配り等の昔ながらのボット機能なんかも入っている。


というわけで、2番目のtiarraとirssiの組み合わせのメモをちょこっと。
目的はirssiをUTF-8ターミナル上で動かしていても、ISO-2022JPを使っているチャンネルと上手くやりとりが出きる亊。そこで、tiarraをローカルで起動して、目的のIRCサーバーに繋がり、irssiではローカルのtiarraに繋がるようにするだけ。

まずは、tiarraは上記のページから適当な最新版をダウンロードしてホームディレクトリなんかに展開。INSTALLファイルを適当に読んで(日本語で説明されている)、tiarraの設定はtiarra.confファイルになるので、sample.confをコピーする。コンフィグファイルも日本語なので、IRC使ったことあるなら何となく分かるはず。

generalブロックでは以下を確認

conf-encoding: utf8
これで、ターミナルがutf8の設定OK

nick: tiarra
user: tiarra
name: Tiarra the "Aeon"
ニック等を自分のものに変える。ここでのニックがプロキシを経由したリモートでのニックになる事に注意。

client-allowed: *
tiarraへの接続を許可するアドレスの制御。デフォルトでは誰でもOKになっている。自分のマシンがインターネットに直接繋がっている場合は、ローカルネットワーク側とかに制限しとくべき。

tiarra-port: 6667
tiarraはローカルで立ち上げることにするが、その際の待ち受けポート

tiarra-password:
tiarra接続のためのパスワード。上記の様に文字列を書いてない状態にすればパスワードは無し。パスワードを作る場合は、パスワードを暗号化した後の文字列をここに書く(コメント参照./tiarra --make-passwordを使う)

server-in-encoding: jis
server-out-encoding: jis
client-in-encoding: utf8
client-out-encoding: utf8
stdout-encoding: utf8
このあたりが、UTF-8ターミナルとISO-2022JP文字コードを使ってるチャンネルのやりとりの設定。コメントを参考にclient-in-encodingとclient-out-encodingをutf8に書き換えてみる。


networksブロックは接続先関係の設定

name: ircnet
name: 2ch
このname項目でつけた各々の任意の名前について、サーバー情報を登録することになる。
デフォルトでは上の二つのnameが宣言され、その後ファイルのずっと下の方をみると
ircnet{・・・・
}

2ch{
}
という設定部分が出てくる。
コメントを見ればわかるが、generalブロックで設定したのはデフォルトの設定で、個別に各ネットワークを宣言して違う設定を使うことも出来る。

とういうわけで、networksブロックのサンプルを消して、自分の繋がりたいircサーバー用に書き換えれば良い。ネットワーク名を変えた場合fixed-channelsの中で@以下にネットワーク名がない場合不具合があるかもなので適当に消した、その他、うちでは以下の通り。

name:wide

wide{
server: irc.media.kyoto-u.ac.jp 6667
}

以上で基本的な設定は終わり。networksブロックの後ろはモジュールの設定なので、組み込みたいのがあれば、コメントを参考に適当に組み込む。よく使いそうなのは、サーバー接続と同時に好きなチャンネルにジョインしてくれるChannel::Join::Connectとかかな?


次は、irssi側の設定。~/.irssi/configファイルで設定するんだけど、初めはないので、とりあえずirssiコマンドでirssiを立ち上げて、/quiteコマンドで終了すれば、~/.irssi/configが作られている。
デフォルトのは色々書いてあるけど、設定するのはservers配列とchatnets配列にローカルのtiarraを追加してやること。

servers = (
{
address = "localhost";
chatnet = "tiarra";
port = "6667";
}
);

chatnets = {tiarra = { type = "irc";};};

何て感じにしてみる。


これで、設定終わり。

tiarraの展開したディレクトリのなかで、./tiarraでプロキシ起動。
次にirssiを立ち上げて /connect tiarraすればOK(tiarraの部分はchatnetsで宣言した名前)



左がirssi、右がtiarraの標準出力

2009年5月15日金曜日

浅はかさに泣けた、、

こないだ、「カーネルのアップグレード制限しなくても・・」云々かんぬんと書いた。

今日pacman -Syuしたら、、、orz

.28はカレントより常に古いわけだから、アップグレードされちゃうわけだ、、あほやった(^^;;

2009年5月14日木曜日

過去バージョンのパッケージ(ダウングレード)

S101での無線LANが使えなくなってしばらく経つ。フォーラムでは「.28に戻すぜ!」的な投稿もあった。archlinuxのパッケージ管理はPacmanが使われていて評価はいいらしく、アップグレード時に不具合が出た場合には、アップグレード前の状態に簡単に戻せるっていう特徴もそんな評価の一つの特徴らしい。

pacman -S でアップグレードやインストールを行うと、そのインストールしたパッケージ自体が/var/cache/pacman/pkgディレクトリにどんどん保存されていく。lsしてみると過去のバージョンも含めて沢山のパッケージがあるのが確認できる。

そこで、ダウングレードする際は、このディレクトリの中にあるダウングレードしたい特定のバージョンのパッケージファイルを直接指定してpacman -U すればいいだけ。

で、うちでも.28のカーネルに戻したかったんだけど、、、保存ディレクトリ内に.28パッケージが見当たらなかった。多分、初めに入ってた.28カーネルってシステムの初期インストール時にcoreとしてインストールされちゃってて、パッケージが保存されなかったのかも??
それで、あきらめてほったらかしにしてたんだけれど、、、

みつけました!自分の持ってない昔のバージョンのファイルも保存されてるかもしれないサイトを!!

schlunix.org

ここで、.28のカーネルを見つけた。

kernel26-2.6.28.8-1-i686.pkg.tar.gz
kernel26-firmware-2.6.28-1-i686.pkg.tar.gz

の二つのパッケージをインストールして再起動。
久しぶりに無線LANで繋がって、ブログが書けてます。
ダウングレードについてはwikiのDowngrade packagesに過去バージョンのパッケージがありそうなサイトの紹介とともに説明がある。

/var/cache/pacman/pkg以下の過去バージョンを含むパッケージの保存はS101みたいなSSDで容量の少ないシステムだとどんどん容量を食っていきそうで何かと気になる。pacmanでは、-Sccオプションでこれらのキャッシュファイルを全部消してくれる。そこで、ある程度、キャッシュファイルが溜まれば、クリアしてすっきりしておくのがいいかもしれない。もし、クリアした後にダウングレードしたくなった場合でも、ちょっと面倒だけど、よっぽど古いバージョンのファイルじゃなければ上記サイトで過去バージョンも見つかるに違いない!

あと、S101の無線LANとカーネルの関係みたいに不具合が分かってる場合には、特定のパッケージだけアップグレードしないように出来る(ビギナーズガイドのpacmanの項目でも紹介されている)ので、カーネルをアップグレードしないのも手だけれど、そうではなくて、.28カーネルのパッケージだけ持っておけば、「お!今回のアップデートで使えるようになったかな!」と、ドキドキできるのでちゃんと毎回アップデートして、ダメなら.28のパッケージファイルでダウングレードすることにした

ビバ!pacman!!

2009年5月10日日曜日

S101の無線LAN情報

カーネルのパッケージもアップデートされてたので、無線LANが使えるようになったかなぁ、、と思って試してみたけど、相変わらずダメだ。wlan0をupしてiwlistでスキャン結果が出ない症状は同じまま。

フォーラムをみてみても、前に見てたスレッドは4月から更新されていない。
今日は新たな助けを求めるスレッドを発見したけど、今のところレスは付いていない。

[help] ath9k in kernel 2.6.29.x

この人は新しいモジュール自体自分でビルドしてためしたりしてるみたいだけど、それでも上手くいかないらしい。しばらく、そのスレッドへの反応を観察してみよう。

とりあえずの情報ポインタもついでにメモ
ath9k - Linux Wireless
Compat-wireless

開発用ログとか見ると、意味がまったくわからんけど、ath9kも一生懸命開発されてチェンジログとかが直近でもでてたりする(^^;
そもそもドライバの問題なのかどうかわからんし、他力本願だけど、、、、
がんばれ!!ath9k開発者!!

山形大学GJとmirrorlistの更新を忘れずに

archlinuxのミラーに山形大学のサーバーが加わったらしい!!
今まで国内のミラーサーバーがなかったので、とってもGJ山形大学さん。

mirrorlistはパッケージがアップデートされた時にシステムの中で自動的には更新されない。(他でもそうだけれど、設定ファイル等が勝手に変わってしまわないように)
新しいファイルはいつも/etc/pacman.d/mirrorlist.pacnewとして格納される。内容はURLリストがコメントアウトされた状態になっていることに注意。

mirrorlistは上から順にpacmanが使うようなので、接続状態の良いサーバー順に並べて置くのが常識らしい。BeginnersGuideで紹介されている様にrankmirrorsを使って並び替えるのをmirrorlist更新時に忘れないようにする。

コメントアウトを適当に外して、行の並び替え

$ sed -e "s/^#Server/Server/" /etc/pacman.d/mirrorlist.pacnew >~/mirrorlist.org
$ rankmirrors -n 5 ~/mirrorlist.org >mirrorlist

出来上がったmirrorlistを/etc/pacman.d/mirrorlistと置き換えればOK

flashとscimで日本語入力が上手くいかないことはなかった

scimでもニコニコ動画にちゃんと書き込みが出来た。
■[arch]scimでflash日本語入力できたよ記念のページ
同じarchlinuxユーザーさんのブログらしい。
firefoxにはGTK_IM_MODULEにximを指定してあげれば、ちゃんとscimが起動出来るみたい。

で、書き込み時の文字化けの件はやっぱり、LC_ALL=ja_JP.UTF-8をエクスポートでOK

firefox起動用のスクリプトを自分用に用意しておけばいいのかも。
うちでは、以下の内容のファイルを作ってみた。

#!/bin/sh
export LC_ALL=ja_JP.UTF-8
export GTK_IM_MODULE=xim
firefox


というわけで、結局、今はscimでもuimでもニコニコ動画へ書き込みが出来るみたい。
scimの方がawesomeのシステムトレイのアイコン表示も適切なので、scimに戻してみようと思う。

flashとscimで日本語入力がうまくいかない

(追記)この記事に関しては、flashとscimで日本語入力が上手くいかないことはなかったを参照のこと。


2chのarchスレで前に、ニコ動に日本語で書き込めないって話題があった。
おいら自身、もともとニコ動に書き込みしたことなかったので読み飛ばしていたんだけれど、今更ながら、ちょこっと興味を持って試してみると確かにscimだと書き込めない。日本語変換開始キーをflashの中で押すと「*」とか文字が打ち出されるだけで、起動しなかった。

「scim flash 日本語入力」とかでググってみると、scim-bridgeを使うといいよ的な記事がいくつか見つかった。しかしyaourtでscim-bridgeを検索してみると、Out of Dateとかになってるし、2chスレ内では、使ってみたけどダメだったよ的なレスもあった。

そこで、スレ内でも紹介されていたuimに変えてみることにした。
Archのwikiとしては
Input Japanese using UIM (English)
にあるみたい。

設定の仕方とかは、
uim-anthyに関する設定メモ
辺りが参考になりそう。

とりあえず、wikiの通りに、~/.immodulesを作ったあと、~/.xinitrcに以下の内容を付け加えておいた。

export GTK_IM_MODULE='uim'
export GTK_IM_MODULE_FILE=~/.immodules
export QT_IM_MODULE='uim'
uim-xim &
export XMODIFIERS=@im='uim'

設定自体は、uim-pref-gtkコマンドで設定ダイアログが開く。
あと、別途uim-toolbar-gtk-systrayコマンドを実行しておけば、システムトレイ内にツールボックスが表示される。.xinitrcとかwmのスタートアップ設定で実行しておけば良さげ。

さてさて、ここまでで、とりあえず、flash上でuimが起動出きるようになったんだけれど、文字を入力して確定すると、flashに渡された時点で文字化けしてしまった。
こっちは、ロケールの設定の問題らしい。

ロケール用の環境変数の調べる順序とかって前にman bashでみたけど、よくわからん。アプリ側で勝手に適当なのを調べてるだけなのかな??
とりあえず、flash上での文字化けは

LC_ALL=ja_JP.UTF-8

が正解らしい。うちでは.bashrcの中でexportしてみた。

これで完了。
はじめてのニコニコ動画への書き込みは

あああああああ

だった(^^;

2009年5月8日金曜日

壁紙とか

こないだ投稿したメモにスクリーンショットを付けてみたんだけれど、スクリーンショットを撮ったあと「あれ?これそのままアップしていいのかな?」と思った。

実はうちのルートウインドの壁紙は、Googleのpicasaウェブアルバムからかっこいいのを適当にダウンロードして使っている。
人物写真も風景写真も動物写真もみーんなかっこいい!!
下手な無料壁紙サイトのを使うよりずっといいですw

で、とりあえず、これをそのままブログにアップするのはまずいのかなとおもって、archのサイトにあったあんまりかっこよくない壁紙に差し替えてスクリーンショット撮ってみた(^^;;

そうそう、archのawesomeのwikiに紹介されているスクリーンショット用のキーバーインドの書き方はちょっとおかしい。
awesome.util.spawnじゃなくてawful.util.spawnにしてみるといいと思う。
あと、S101だとプリントスクリーンのキーがうまく働かないので、他の空いてるキーに割り当てるのが吉かも。

2009年5月7日木曜日

awesomeとxcompmgr

なんか、ラベルで分類して後から見たときに分かりやすくしようと思っていたんだけど、うまくいかない(^^;とりあえす、最近設定いじるのにはまってるawesomeのこと書く時はラベル「awesome」で統一しておこう。

wikiのAwesomeにも紹介されている通り、xcompmgrというプログラムはクライアントウインドウを透明化できる。あちこちのawesomeのデスクトップスクリーンショットを見ると、ターミナル越しにルートウインドウの壁紙が透けて見えてたりしてカッコ良さげだったので、使い始めたんだけれど、実はかっこいいだけじゃなくとっても便利だったりした。

むかし、rxvtだったかのターミナルエミュレータ自身が同じように透明化できたけれど、透明化というよりも、ルートウインドのコピーをするだけで、実際には、その間に別のウインドウがあってもそのウインドウを見ることができなかった。でも、xcompmgrは、すぐ下のウインドウクライアントを透かした状態でちゃんとみせてくれる!

設定の仕方は、wikiの通り。
xcompmgr自体は、.xinitrcで起動するか、rc.luaの最後の方にwikiのオートスタートアップを付け足してそこにいれておいてもいい。うちでは、こんな感じ。


autorun = true
autorunApps =
{
"xcompmgr"
}
if autorun then
for app = 1, #autorunApps do
awful.util.spawn(autorunApps[app])
end
end

ただ単に、

awful.util.spawn("xcompmgr")

で呼び出すだけでもOKと思う。あと、xcompmgrとconkyの相性は悪いようなので、conkyと一緒には使わないようにする。(画面がチカチカしてフォーカスがあちこち飛びまくる?)

ここで、xcompmgrを呼び出しただけで勝手にクライアントは透明化しない。
wikiのとおり、awful.hooks.focus.register と awful.hooks.unfocus.register の内容に c.opacity = 1等の透明度の設定を追加する。
うちの場合、透明化するのをxtermだけにしてあるので、次のような感じ。

-- Hook function to execute when focusing a client.
awful.hooks.focus.register(function (c)
if not awful.client.ismarked(c) then
c.border_color = beautiful.border_focus
if c.class == "XTerm" then c.opacity = 0.7 end
end
end)

-- Hook function to execute when unfocusing a client.
awful.hooks.unfocus.register(function (c)
if not awful.client.ismarked(c) then
c.border_color = beautiful.border_normal
if c.class == "XTerm" then c.opacity = 0.6 end
end
end)


これで、awesomeを再起動して完了。

で、何が便利かというと、あるタグでブラウザを開いてwebブラウズしているときに、xtermを開くとタイル型WMなので当然画面が2分割になる。S101は小さいパソコンなので、ブラウザ側は見づらくなる。特にArchlinuxのwikiとかは文章の横幅が画面サイズの何割かに設定されているみたいでめちゃめちゃ見づらい。




ここで、xtermにフォーカスした状態で、winキー+fでxtermをフルサイズ化する!



これが、めちゃめちゃ気に入った^0^
xtermだけをフルサイズ化している間は、winキー+jとかでフォーカス移動してブラウザ側に移ってもxtermが前面にあるままなので、ターミナル画面はそのままで、適当にブラウザのページを進めることもできる。ターミナルに字がいっぱいで見にくいときは、ブラウザもフルサイズ化すれば、フォーカス移動で前面表示が入れ替わるようになる。

この使い方はほんと、S101みたいなネットブックには便利だと思う。

2009年5月6日水曜日

Javaと文字化け

ヤフーのページでゲームをしてみようと思い、パッケージjreとjdkをインストールしてみた。
JAVAに関してはWikiのJavaにOpenJDKとかの事が書いてある。うちではSunの方を入れてみた。

で、早速ゲームしにいってみると、日本語フォントがいわゆる豆腐化していた。「linux java 文字化け」なんかのキーワードでググると同じような答えがいっぱいひっかかるが、一応、Arch linuxやS101で検索してもひっかかるように、このページにも追加。

簡単そうな解決法はJavaが使えるフォントを見つけられない時のフォントとして、日本語フォントを用意しておくものらしい。


#cd /opt/java/jre/lib/fonts/
#mkdir fallback
#cd fallback
#ln -s /usr/share/fonts/TTF/kochi-gothic-subst.ttf
#ln -s /usr/share/fonts/TTF/kochi-mincho-subst.ttf


kochi-gothic-subst.ttf等をインストールしてない場合は、パッケージttf-kochi-substituteをインストールしておく(AUR)

2009年5月5日火曜日

日本橋巡回

今日は仕事を昼間でで切り上げて、日本橋へいってみた。お目当ては内蔵用無線LANデバイス。
車で行ってみたんだけど、結構人が多くて駐車場がいっぱいっぽかったので、1時間の路上駐車の券を買ってペタリ!

日本橋って言っても、そんなに店を知っているわけでは無く、フェイスとかベストDOとかその近辺をブラブラ、、、USB接続やPCカード?の無線子機はあるんだけど、内蔵用のは見つからなかった。久しぶりに来てみたけど、なんか人が多かったなぁ~、雨も降ってきたし、駐車時間も気になってたので、早々に撤退。

帰ってきて、古いペン4マシン用に買ってきてたメモリとか増設しようと思い、夕方からパソコンばらして遊んでた。よし!完成!!とか思ってパソの電源入れてもモニタに反応が無い。「あれれ?」と思いながらモニタのケーブル変えたり、中の配線の繋ぎ忘れとかないか確かめてみても治らない。。あれこれやって、VGAカードもHDDとかも全部外して、マザボ取り出して、マザボについてるグラフィックアダプタ試したり、マザボの電池外して、つけたり、、、結局反応なし><
しょうがないので、諦めて古いパソコンはもう捨てる!!!って思って、買ってきたメモリはAMDパソコンに乗せた。わーい4Gだーい。DVDドライブはあまっちゃった、、、

AMDパソコンにメモリ取り付けるときにコードを全部外してたら、元に戻す時に、スピーカーコネクタの順番がわからなくなった、、、5.1チャンネルを3本の線で繋いでたみたいなんだけど、オーディオアンプの裏は線がぐちゃぐちゃでどれがどれだかわからんし、とりあえず、適当にパソコンに挿して、テスト用の音声「フロントセンター」とかやると後ろから聞こえたり、うーはーシステムから聞こえたりするのにめげずに、差し替え差し替え正解をみつけられた。

しっかし、オーディオセットの裏側とか掃除したこと無いから、すっごい埃で作業してたら喉がおかしくなった。。。あと、おいらはタバコ吸うので、パソコンの中が人に言えないくらいに汚かったよ><

2009年5月3日日曜日

awesomeの情報

やっぱりawesomeとS101の相性は抜群だった。そこで、自分好みのawesomeの設定について最近あれこれとやりはじめたけれど、気がついてみれば、rc.luaでの設定変更は柔軟というよりも、このファイル自体がawesomeの挙動を決めるプログラムファイルになっていて、スクラッチから書き換える場合にはすべての挙動を自分自身で書かなければならない。当然、それは大変だから/etx/adg/awesome/rc.luaをもとに書き換えるんだけど、その場合でも、より良く設定しようとする場合には、その雛形プログラム自体の流れを把握すべきみたいだ。
設定ファイル作りの具体的な方針もまとめてメモにしたいけれど、その前に情報のポインタのまとめをメモ

Awesome3
Archlinuxのwiki内の情報。設定その物よりも、導入の仕方の簡単な情報。AURのパッケージでawesome-git、wicked-gitの2つのパッケージが紹介されている、うちでも使っているが十分安定していると思う。基本的な設定変更は説明されている通りに、該当部分のみをそのまま変更してカスタマイズすればOK。

Awesome 3 configuration
awesomeのホームページ内の設定に関するWiki。rc.luaをスクラッチから書く場合の取っ掛かりとしての情報。ただし、ほんの触りだけなので、このページだけでrc.luaを書ききることはできない。

awesome api ref
awesomeの設定はLua言語でかかれている。で、awesomeを制御する上でのモジュール(クラス?)APIのリファレンス。ただ、説明が簡易で分かりにくい印象を受ける(プログラム得意な人には必要十分なのかな?)

Programming in Lua (first edition)
Lua言語のガイダンスページ。このページで大まかな事は覚えられるかもしれない。おいらは、awesomeではじめてLua言語を知った。手元に1冊、入門書を欲しかったので、「入門Luaプログラミング」上野豊著を買った。

以上のページを頼りに、デフォルトのrc.luaを読み解きつつ、archのawesome3wikiに紹介されている各種rc.luaファイルを見比べてみるのが良い感じ。

2009年4月30日木曜日

2.6.29へのアップデートで無線LANの不具合

気が向いた時に適当にpacman -Syuなんてしてるだけで、アップデートの内容確認なんてしてなかった。そしたら、知らないうちにカーネルが2.6.29になっていた。アップデート後の不具合は結構つきものなのかな?こないだは、awesomeが立ち上がらなくなってびっくりしいたけれど、すぐにフォーラムの中で解決策が見つかった。

で、、気が付いてみると実は無線LANも使えなくなっていた。
S101でも、うちは普段有線でつなげてる事が多かったのと、最近忙しかったのでそんなにパソ自体触って無かったので、使えなくなってるのに気がつかなかった。。

さっそくフォーラムを見てみると4月10日あたりに不具合の話題があれこれ出だしたみたい。カーネルのアップデートに伴って「crda」パッケージのインストールが必要らしい。

CRDAは、無線チャンネルの各国用のレギュレーション設定(?)をするためのシステムらしい。無線LAN用のチャンネルが日本よりアメリカの方が少なくて云々という話をどっかのMLで聞いた事があるけれど、設定ファイルで日本を設定すれば、日本のチャンネル設定で使えるようになるらしい。(元々はカーネル側(無線LANのモジュール内?)に日本の設定もスタティックで設定されていたという記事もフォーラムにあったような、、)

とりあえず、crdaパッケージをインストールして、/etc/conf.d/wireless-regdomの中の

#WIRELESS_REGDOM="JP"

をアンコメントしてみる。そしてリブート。
dmesgを見ると、デフォルトがUSのレギュレーションで、その後JP用に切り替えられているのが確認できた。

しかし、、、
ネットワークデバイスを立ち上げてiwlistでスキャンしてみるも、アクセスポイントが見つからない、、

フォーラムのCan't scan or connect to WPA network since kernel upgradeをみると、これでうまく行った人、行かない人にわかれている。うまくいかない人手をあげて~の呼びかけに、手を挙げている人がまだいて、うちもその一人、、スキャン自体出来ないって事は、ドライバがおかしいのかとも思うけど、「1000Hでath9k使ってるけど上手くいったよ」って読めるメッセージもあるし(ちがうのかな?)、一方でath9k使ってて「ダメだから.28に戻したよ」ってのもあった。しばらく無線LANはおあずけなのかなぁ、、、

ただ、GWは何日か休めそうだから、やっぱり、Intel WiFi Link5300とやらを日本橋に探しにいこうかなぁ~?!とちょっとウキウキもしてたりするw

2009年4月27日月曜日

正常なシャットダウン

S101にArchをインストールしてからリブートやサスペンドからのレジーム時に正常にシステムが再起動できないことがちょくちょくあった。

wikiのInstalling Arch Linux on the Asus EEE PCに解決方法があった。Shutdown Problemの項目がまさにそのもの。
/etc/rc.local.shutdownファイルの一番最後に次の一行を付け加える。

echo -n "0000:00:1b.0" > /sys/bus/pci/drivers/HDA\ Intel/unbind

上のパスの「HDA Intel」にはスペースがあるので注意
次に/etc/rc.shutdownファイルの中の次の3行

if [ -x /etc/rc.local.shutdown ]; then
/etc/rc.local.shutdown
fi

を少し下の方にある

# Terminate all processes

の行のすぐ上に移動させる。

起動時の何かがおかしいと思っていたんだけど、実は正常なシャットダウン自体が出来ていなかったみたい。Wikiの通りチップセットに信号を送るようにしてから、今の所心地よくリブートもサスペンドからのレジームも出来るようになっている。

2009年4月23日木曜日

タイル型WM「awesome」をはじめて使ってみた

気になっていたタイル型ウインドマネージャawesomeを使ってみた。前はS101の様な少し狭い画面だと使い辛そうな印象を受けていたんだけれど、使ってみると非常に気持ち良さげ!!archでのwikiはココawesome3。但し、最近のシステムのアップグレードで依存関係にあるライブラリがアップグレードされたらしく、awesome3、wicked-awesome3の両バイナリパッケージは今現在使えないかもしれない。フォーラムのlibxcb-keysyms and awesome issuesにこの辺の事が書かれている。

そこで、AURのawesome-gitとwicked-gitの方をyaourtでコンパイル&インストール。

タイル型ウインドマネージャを使うのは初めてだったので、まず操作の仕方がわからなかった。とりあえず、awesome用のデフォルト設定ファイルrc.luaをwikiの説明を読んで~/.config/awesome/に配置。.xinitrcに起動コマンドを書いて起動させてみる。
そこからは、archlinux内のwikiや本家のページawesomeを見るよりも初歩の使い方自体は「awesomeちゅーとりある。あるいはタイル型ウインドウマネージャの勧めのようなもの」と「今日からはじめる awesome チュートリアル」がお勧めというか必読。

2009年4月21日火曜日

飲み過ぎた

先週末から九州へ旅行に行った。湯布院とか別府とか。旅行の幹事だったから何かと緊張してたんだけれど、夜の宴会の時に飲みすぎちゃって大失敗(^^;まぁ、一緒にいった人は楽しかったとねぎらってくれたので、勝手に旅の恥はかき捨て!ってことで、It's All RIGHT!!でいいやw

Archlinuxを入れてみてから、2ちゃんのスレもチェックするようになりました。静かなスレなのでチェックしやすい。自分もそう思うけれど、Archの情報って本家のWikiとフォーラムにまとまってるのがいいねって話が出てた。ただ、ほとんどが英語でのやりとり。
Wikiの一部日本語訳も実は2ちゃんの有志がちょこっとはじめてたみたいだけど、訳はするべきじゃないっていう意見の人もいて、翻訳モチベーションも下がっちゃったのかなぁ。。

おいらは英語は得意じゃないのですらすら読めるわけでも、正確に訳せるわけでもないけれど、今はネットでの辞書とかあるので、Wikiの文章くらいならそれほど苦にならない。実際文学とかを楽しむために読むわけじゃなく、ソフトの設定くらいなら、書いてある事は迷えば実際に実行してみれば、自分の訳があってるか間違ってるかはわかるしね。それに、専門的な最新の概念とかってどうせ日本語で書かれてても理解できる理系でもないw
趣味として楽しむ程度なら、英語のページも読破するぜ!!くらいの心の余裕があってもいいのかなぁ~位に思う。

ArchLinuxの興味深げな所は、AURだと思う。
多分どのディストリビューションでも、公式パッケージ群があってそれ以外のユーザー作成パッケージがあったりするけれど、Archの場合コミュニティーの一部としてそれらがまとまっている。そして、それぞれのパッケージについて、関心のある人の声(パッケージャの声とか、パッケージユーザーからのレスポンス)がその場で見れる。他のディストリビューションの今の詳しい事はわからないけれど、昔だとパッケージャ専用の開発MLとかの中で別途話してたりした様な気がするから、AURのオープンでフレンドリな雰囲気は見てるだけでも楽しい。

別にこのブログはArchLinuxやwindowsに対抗してLinux自体を積極的に勧める趣旨で書いているわけじゃないけれど、「パソコンを触るのが好き!」って人には、インストールが簡単とか、うちのパソコンだとこのディストリビューションじゃないと動かない!とか、云わずに、色々な調べごとや試行錯誤をしながらパソコンを触ってみるっていう楽しみを試してみるのはお勧めしたいですwそんな目的にArchLinuxは最適なんじゃないかなぁ、、と思う今日この頃。

2009年4月15日水曜日

実はデスクトップマシンにも入れてみた

久しぶりに触るLinuxだったので、S101でおもちゃ程度に思っていたんだけど、結構楽しくてはまってしまった。そして、やっぱり画面の広い環境で使ってみたいと思って、デスクトップマシンにも入れてしまった。

それは、それでいいのだけれど、当のS101の方は再起動(電源オフ状態からの普通の起動時でも偶に)とかする時にフリーズというか、BIOS自体が読み込めなくて固まることがちょくちょくある。これって、ハードがどっかおかしいのかなぁ?ブログにはまだメモしてないけれど、acpiの設定をしてサスペンド(スリープ?)も一応できるようになって喜んでいた。しかし、復旧時に再起動と同じく無反応になることがある。電源ランプと無線LANランプだけが付きっぱなしで画面自体は真っ暗のまま、、、酷いときには、電源ボタン長押しでも電源が切れなくなる。(ACアダプタ外し、バッテリ外しで切るw)

どの場合も、うまくいく場合は、一瞬SSDのランプがチカチカっとするんだけど、このチカチカがない場合は起動に失敗する。だから、いっつも再起動等の瞬間はSSDランプに目が釘付け!!チカチカってすると安心するw

まぁ、ネットブック自体他のノートパソコンに比べて安いし、1年もしないうちに、S101の魅力をしのぐ機種で買い換えたいものも出るだろうから、あんまり気にしなくても良さげかなぁ~
結局無線LANも偶に繋がらなくなるけど、普段はつなげっぱなしにしている限り、不都合はなさそうなので、別のカードへの入れ替えたい熱は冷めたw

HALの設定

こないだは、PCManFMで外付けストレージとかがマウント出来なくて、フォーラムの記事を参考にマウント出来るようにしてみたけれど、実はWikiのHALのページに別途解決方法が書いてあった。と、いうか、HAL正当流(?)の設定の仕方があった。Step 2: ConfigureのPermissions policiesの項目に寄れば、/etc/dbus-1/system.d/hal.confで特定グループに(例示ではstorage)外付けストレージのマウントやアンマウントを許可する設定の書き方が載っている。
そして、この設定をした後、GDMやKDE(グラフィカルなログインマネージャ)を使っていない場合、デスクトップ環境やウインドマネージャを.xinitrc等の中で呼び出す場合ck-launch-sessionを使うように指示されていた。
つまり、うちの場合openboxを起動しているので

exec openbox-session

となっているのを

exec ck-launch-session openbox-session

としてあげれば良いらしい。
実際、こないだ書いた/etc/Policykit/Policykit.confへの設定を消して、今回のやり方に変えてみたら、ちゃんとPCManFMでメモリスロットに差したSDカードをマウントして読めた。

ck-launch-sessionについては、先のフォーラムでも何やら書いてあったんだけど、これ自体が何者か説明が書いてあるところがみつけられなくて、よく分かってなかった。。。未だによくわからんけど、とりあえず、おまじないとして使うw

後、/etc/Policykit/Policykit.confで直接ユーザーを指定するやり方自体もHALのページに紹介されていた。
他にトラブルシューティングはいろいろと書かれていたので、hal越しのマウント関係でトラブルがある場合、このページを見ると解決できそう。ページのメンテナンスはHALのアップグレードに大して機敏にされていそうな感じ。(wiki全体的にそうだけどね)

2009年4月13日月曜日

PCManFMでUSBメモリとかマウント

X上で動く軽いアプリケーションの紹介がLightweight Softwareにある。通常のファイル管理はEmacsのdiredモードでもいいんだけど、なんかUSBメモリとかいちいちマウントするのはやっぱり面倒なので勝手にやってくれるというファイルマネージャを使ってみた。LXEDを入れてみたときに入ってたPCManFileManeger。このファイルマネージャを使うときには事前にfamというデーモンを動かしとかないとダメらしいので、/etc/rc.confのデーモン配列に入れておく。

で、起動してみると、Windozeのエクスプローラライクな感じで良い。
しかし、、、目的のUSBメモリとかをクリックしてみるとエラーダイアログらしきものがでて使えない。なんとなく、デバイスの権限関係っぽい。rootで起動してみるとちゃんとマウントしてくれるっぽい。

調べてみるとフォーラムで話題になっていた。halデーモンのデフォルトのポリシーの問題らしい。というか、この手の質問が沢山あってよく分からない(^^;;

とりあえず、I won the struggle against hal and policykitが解決策っぽい。電源部分は必要ないので、/etc/Policykit/Policykit.confに以下の内容を入れてみた。

<?xml version="1.0" encoding="UTF-8"?> <!-- -*- XML -*- -->

<!DOCTYPE pkconfig PUBLIC "-//freedesktop//DTD PolicyKit Configuration 1.0//EN"
"http://hal.freedesktop.org/releases/PolicyKit/1.0/config.dtd">

<!-- See the manual page PolicyKit.conf(5) for file format -->

<config version="0.1">
<match user="$storage_users">
<match action="org.freedesktop.hal.storage.*">
<return result="yes"/>
</match>
<match action="hal-storage-mount-fixed-extra-options">
<return result="yes" />
</match>
<match action="hal-storage-mount-removable-extra-options">
<return result="yes" />
</match>
</match>
</config>


$storage_usersグループの文字列は、該当ページのシェルスクリプトで作成して変数としてエクスポートしとけばOKなので、そのスクリプトをデーモン配列の中でhalの呼び出しの前にしとくようにかかれている。面倒なので、うちでは直接ユーザー名をそこに入れた。nekoがユーザー名なら下の通り。複数いるなら"|"で区切っておけば良い。

<match user="neko">

halやfamを再起動しても変わらなかったが、PC自体再起動したらユーザー権限でめでたくUSBメモリがマウントされた。

2009年4月11日土曜日

ネットワーク(半自動)

S101は、有線LANと無線LANが使える。うちでは、事務所と自宅の両方に無線ルーターがあり、有線でも繋げられる。そのため、各場所毎に好きなときに適当に切り替えられるように、ターミナルから簡単に接続できるようにした。

無線LAN及びWPAの扱いについては、無線LAN(手動)の通り、wireless_toolsとwpa_supplicantパッケージを追加しておく。

で、前記の「無線LAN(手動)」を勝手にやってくれるのが、netcfgコマンド。システムに無ければnetcfgパッケージをpacmanでインストール。netcfgのドキュメントはwikiのNetwork Profilesで紹介されている。
仕組みは簡単で接続毎の設定ごとに、各々プロファイルを作って置き、必要に応じてこのプロファイルを引数にnetcfgコマンドを呼び出すだけでOK。
1.プロファイルを作る
/etc/network.d/examples/に色々な名前のサンプルが入っている。WPA接続ならwpa.exampleを使う。このファイルを/etc/network.d/に好きな名前でコピー

# cd /etc/network.d/
# cp examples/wpa.example my_home_wpa

内容を編集する。(ESSIDとKEYを自分のところのものにする)

CONNECTION="wireless"
INTERFACE=wlan0
SCAN="yes"
SECURITY="wpa"
ESSID="mynetwork"
KEY="ho2ge13Ha5ge"
IP="dhcp"

他のアクセスポイントも作るなら、またコピーして好きな名前を付けて、プロファイルを作る。有線の分もサンプルがあるので、参考にして作る(実際は何も書き換える必要がないかも)

2.ネットに繋がる。
ターミナルからnetcfgコマンドを打つ。引数には先に作ったプロファイル名をつける。

# netcfg my_home_wpa

3.ネットを切る
同じようにターミナルからnetcfgコマンドに-dオプションを付けて呼び出す。

# netcfg -d my_home_wpa


以上で、簡単にネット接続を切り替えられるようになる。
ネットの設定はシステムインストール時などに、/etc/rc.confで、networkをデーモンとして起動してたりするので、デーモン配列からnetworkを外しておくとよい。

日本語入力

WikiにあるSmart Common Input Method platformを参照してみた。
導入するパッケージは日本語の場合、scim-anthyパッケージ
pacmanでインストール後、次の環境変数を設定する。

export XMODIFIERS=@im=SCIM
export GTK_IM_MODULE="scim"
export QT_IM_MODULE="scim"

その後、acimコマンドで起動しておけばOK。
注意は上の環境変数を設定した後に、scimを動かすこと。

うちでは、startxでXを起動しているので、$HOME/.xinitrcの適当な所に

export XMODIFIERS=@im=SCIM
export GTK_IM_MODULE="scim"
export QT_IM_MODULE="scim"
scim -d

と書いてある。

うちの場合、GnomeもKDEも使ってないので、上の設定だけで普通に使えている。
GnomeやKDEの場合、それぞれに適した環境変数の値や起動オプションが紹介されている。

後、wikiに寄れば、$HOME/.scim/globalの一行目に自分のとこのロケールを追加しておくように書いてある。
うちでは、該当ファイルが無かったので、/etc/scim/globalをコピーした。(もともと、ホームディレクトリにこのファイルが無い場合、そっちの設定が読み込まれる)wikiを見るとキーボードのロケールがen_US.UTF-8以外の場合に付け足しておくように書いてあるように見えるんだけど、、キーボードのロケールってなんだろう??と思いながら、適当にja_JP.UTF-8を追加して、1行目は下の様にしておいた。

/SupportedUnicodeLocales = en_US.UTF-8,ja_JP.UTF-8

初期設定の起動キーバインドは多分Ctrl+space
これをscimから起動できる設定アプリで、「半角/全角」キーにキーシンボルが設定されていないため、バインド出来ない。そこで、タッチパッド、キーマップ追記のように、xmodmapでシンボルを割り当ててから、バインドを行えばOK。

2009年4月9日木曜日

タッチパッド、キーマップ追記

・タッチパッド
タッチパッドの設定ファイルはこんな感じ。

/etc/hal/fdi/policy/11-x11-synaptics.fdi

<?xml version="1.0" encoding="ISO-8859-1"?>
<deviceinfo version="0.2">
<device>
<match key="info.product" contains="ETPS/2 Elantech Touchpad">
<merge key="input.x11_driver" type="string">synaptics</merge>
<merge key="input.x11_options.SHMConfig" type="string">on</merge>
<merge key="input.x11_options.MaxSpeed" type="string">1.00</merge>
<merge key="input.x11_options.MinSpeed" type="string">0.75</merge>
<merge key="input.x11_options.Emulate3Buttons" type="string">on</merge>
<merge key="input.x11_options.VertTwoFingerScroll" type="string">1</merge>
<merge key="input.x11_options.HorizTwoFingerScroll" type="string">1</merge>
<merge key="input.x11_options.HorizEdgeScroll" type="string">1</merge>
<merge key="input.x11_options.VertEdgeScroll" type="string">1</merge>
<merge key="input.x11_options.TapButton1" type="string">1</merge>
<merge key="input.x11_options.TapButton2" type="string">2</merge>
<merge key="input.x11_options.TapButton3" type="string">3</merge>
<merge key="input.x11_options.LockedDrags" type="string">1</merge>
</match>
</device>
</deviceinfo>

エッジスクロールってのを入れてみた!便利。
あと、$HOME/.xinitrcに下のコマンドを追加した。

syndaemon -i 2 &

キーボードのキーを押した後2秒間タッチパッドが無効になる。つまり、タイプ中にタッチパッドに指や手が当たって、打ち込み文字が変なところに行ったりしなくなる。

・キーマップ
SCIMの日本語変換起動・終了を半角全角キーに割り当てようと思ったらうまくいかなかった。どうもキーシンボルが設定されていないらしい。そこで、こないだ作った$HOME/.Xmodemapに付け足してみた。

keycode 49 = Zenkaku_Hankaku Zenkaku_Hankaku

2009年4月8日水曜日

ドスパラ

仕事の帰りに近所にできたドスパラに寄ってみた。最近出来たとばかり思ってたけど、お店の人に聞いてみたらもう1年にもなるらしい。思ったよりも店内は広くて、郊外にポツンとある店にしては品揃えが豊富なのかも。

お目当ては、ミニノート内蔵用の無線LANカード!どうも、こないだ読んだカード入れ替えの記事が羨ましくて自分でもやってみたくなったw残念ながら、お店には置いてなかった。。。
やっぱり、どうも無線LANの調子がいまいち、、、スキャンしても自分とこのアクセスポイントがなかなかみつからなかったりする。親機との相性とかあるんかなぁ、、、でも、windozeだとそういう不具合はなかったしなぁ、、、まぁ、家も事務所もパソコンをいつもつかう場所にはニョロニョロとケーブルが生えてるから接続には困らないんだけど(^^;
日本橋とか見に行ってみるかなぁ~

で、お店ではパーツを見てるうちに、昔自作してうちで眠ってるぺん4のパソコンがあるんだけど、それをちょっとだけパワーアップしよう!と思って、メモリとDVDドライブ買いました。あと、もっと古いHDDの残骸がいくつかあるんだけど、USB変換器なるものを発見したのでそれもゲット。メモリって昔のやつの方が高いのね。1G×2枚を注文したら、お店の人が「ロット番号が大分ちがうんですけど」って言ってくれた。いくつか種類があったので、探してもらったけど、どれもバラバラらしい。あんまりメモリの相性問題とか当たったことが無いので、わざわざ気を遣って色々探してくれる店員さんに好感が持てたw

明日は出張だから、たまには真面目に仕事しよーっと

2009年4月7日火曜日

キーボードの"]"が打てない

なにやらX上でのキーボードの割り当てがおかしいっぽい。S101特有なのかどうなのか分からないけれど、エンターキー左の”]”のキーが"\"になっている。ネットで検索してみると、「X.orgのバージョンが上がった時に、そんなふうになったなぁ」なんていう書き込みか見つかった。とりあえず、xmodmapコマンドでキー割り当てを変更するのがお手軽らしい。

・キーコードを調べてみる
Xを立ち上げた後、問題のキーのキーコードをxevアプリで調べてみる。
ターミナルからxevコマンドを打ち込むと、小さなウインドが表示されて、キーを押したりマウスが動くとその入力情報が標準出力に書き出される。問題のキーを押してみると(離したところかな)

KeyRelease event, serial 35, synthetic NO, window 0x1000001,
root 0x78, subw 0x0, time 3601527, (-290,-103), root:(478,84),
state 0x0, keycode 51 (keysym 0x5c, backslash), same_screen YES,
XLookupString gives 1 bytes: (5c) "\"
XFilterEvent returns: False

みないになる。つまり、キーコードは51らしい。

・キーコードの割り当てを見てみる。
現在のキー割り当てをxmodmapコマンドでみてみる。ずらずらと書き出されるのでキーコード51だけみてみると

$ xmodmap -pke | grep "keycode 51"
keycode 51 = backslash bar backslash bar backslash bar

一個のキーに6つのkeysymが割り振られているらしい。

・キーシンボルの入れ替え
$HOME/.Xmodmapファイルを作ってその中に1行書いてみる。

keycode 51 = bracketright braceright bracketright braceright bracketright braceright

次に、$HOME/.xinitrc内でxmodmapを実行させる行を付け足してみた。

xmodmap $HOME/.Xmodmap

これでXを起動

]]]]]]}}}}}}}

いくらでもうてるようになりました。

2009年4月6日月曜日

ブログって簡単だけど難しい><

webページのことはやっぱりよくわからない(^^;スタイルシートとかいうやつなんだろうか?とりあえずブログでpreタグとか使って、そのままのテキストを貼り付ける時には横長にならない様に気をつけないと端っこが切れちゃうのね、、、横幅の伸ばし方がわからないので、適当にテンプレートを変えてみたけど、デザインは気に入らないw

無線Lan(手動)

注意!!内容中に示してあるコマンド等で横長になっているものは途中で切れている可能性があります。(どうやったら、もう少し一行の文字数を増やせるのかな?(^^;;)

S101を買った時に、無線ルーターなるものをはじめて買った。
バッファローのWHR-G300N
S101からこのWHR-G300NにWPAで接続してみた。

wikiにある参考ドキュメントは2個
Wireless_Setup
WPA_Supplicant

まず、ArchLinuxの現在のデフォルトのカーネル(kernel26 2.6.28.8-1)では、S101の無線LANデバイスは認識され、ドライバもロードされている。ドキュメントの通り試してみると以下の通り。

# lspci | grep -i net
01:00.0 Network controller: Atheros Communications Inc. AR928X Wireless Network Adapter (PCI-Express) (rev 01)
02:00.0 Ethernet controller: Attansic Technology Corp. L1e Gigabit Ethernet Adapter (rev b0)

# lsmod | grep ath
ath9k 252216 0
mac80211 161184 1 ath9k
led_class 5508 1 ath9k

あちこちで情報が出ているとおりS101はチップがAtherosのAR928Xでドライバはath9kモジュールが読み込まれる。

Wireless_Setupドキュメントに従って、wireless_toolsパッケージをインストールした。
このパッケージにiwconfigとかが入っている。

まずはiwconfigコマンドでインターフェイス名の確認(eth0とかwlan0とか)

# iwconfig
lo no wireless extensions.

eth0 no wireless extensions.

wmaster0 no wireless extensions.

wlan0 IEEE 802.11bgn ESSID:""
Mode:Managed Frequency:2.412 GHz Access Point: Not-Associated
Tx-Power=0 dBm
Retry min limit:7 RTS thr:off Fragment thr=2352 B
Power Management:off
Link Quality:0 Signal level:0 Noise level:0
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0


デバイス名はwlan0になっているので、ifconfigで、このデバイスを起動する。

# ifconfig wlan0 up
# ifconfig
    ・
    ・
    省略
    ・
    ・

wlan0 Link encap:Ethernet HWaddr 00:22:43:4B:D4:91
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)

    ・
    ・
    省略
    ・
    ・

ここでiwlistでスキャンするとアクセスポイントが見つかるはず。(自分のところのが出ないときは、何度かやってみる)

# iwlist wlan0 scan
wlan0 Scan completed :
    ・
    ・
    省略
    ・
    ・
Cell 02 - Address: 00:1D:73:D2:0A:AC
ESSID:"MYHOMENET"
Mode:Master
Channel:1
Frequency:2.412 GHz (Channel 1)
Quality=85/100 Signal level:-40 dBm Noise level=-95 dBm
Encryption key:on
    ・
    ・
    省略
    ・
    ・
IE: WPA Version 1
Group Cipher : CCMP
Pairwise Ciphers (1) : CCMP
Authentication Suites (1) : PSK
    ・
    ・
    省略
    ・
    ・
Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 9 Mb/s
18 Mb/s; 36 Mb/s; 54 Mb/s; 6 Mb/s; 12 Mb/s
24 Mb/s; 48 Mb/s
Extra:tsf=000000000004fd98
Extra: Last beacon: 623ms ago

Wireless_Setupドキュメントはここまで。WPAを使うので、ここからWPA_Supplicantドキュメントに従ってみる。
まずは、wpa_supplicantパッケージをインストール。
次に、/etc/wpa_supplicant.confを/etc/wpa_supplicant.conf.originalなどの名前でバックアップ用にコピー。(後で、wpa_supplicant.confの中身を完全に書き換えてしまうので、元々書かれている設定サンプルの内容を必ずバックアップしておくことを忘れない!)

WPAで認証に必要になるのはSSIDとパスワード。このうち、WPAの無線ネットワークではパスワードが16進数文字列で通信されるらしく、これにエンコードしなければならないらしい。この作業をwpa_passphraseコマンドが引き受けてくれる。SSIDとパスワードが以下のようなものなら、次の用にコマンドを打ってみる。

SSID:MYHOMENET
PASS:ho5ge8hage319

# wpa_passphrase MYHOMENET ho5ge8hage319
network={
ssid="MYHOMENET"
#psk="ho5ge8hage319"
psk=1e6934d7b5410df7b217aca7e14c745d2231a7c4b5dcd945a925007cb21411bf
}

結果は、標準出力に出るが、実はこれ自体がwpa_supplicant.confでの設定書式になっている。
そこで、wpa_supplicant.confに設定を書き込むためには単純に次のコマンドでOK。

# wpa_passphrase MYHOMENET ho5ge8hage319 > /etc/wpa_supplicant.conf

追加のアクセスポイントがある場合、同じようにwpa_passphraseコマンドで設定書式を作り、リダイレクトを今度は「>」では無くて、「>>」でファイルに追加する形にすればよい。
最後に、wpa_supplicant.confファイルの先頭に次の一行を書き込む。

ctrl_interface=DIR=/var/run/wppa_supplicant GROUP=wheel

以上で、設定ファイルは完成。この設定ファイルを元にwpa_supplicantコマンドを実行するとWPAの暗号を介した通信が出きるようになる。WPA_Supplicantドキュメントによれば、ここで以下のコマンドを実行してみると書かれている。


# wpa_supplicant -B -Dwext -i wlan0 -c /etc/wpa_supplicant.conf


ここで、-Dオプションは無線LANデバイスに応じたドライバの指定で、S101の場合、wextドライバでOK。-Bオプションはバックグラウンドで実行のためのオプション。他は見ての通り、インターフェイスと設定ファイルの指定オプション。他にデバッグ用の-dオプション(or -ddでもっといっぱいデバッグ用表示)があるとのこと。テストなら、-Bを外して、-dとか-ddオプションを付け加えて実行してみる。


# wpa_supplicant -dd -Dwext -i wlan0 -c /etc/wpa_supplicant.conf

標準出力に多分一生懸命働いてる様子がいっぱい表示されてしばらくすると、おとなしくなり接続が完了する。
ここで、別コンソールからログインして(bgしてもいいとおもうけど)IPやゲートウエイの設定をする。うちの場合、IPをdhcp取得なので次の通り。

#dhcpcd wlan0

これで、ごにょごにょ通信してIPアドレス等を取得できれば完了。

DEとWM

マニュアル読んでEmacsで設定ファイルをコリコリ書いてみようって事で、WMのOpenBoxにしてみようと思う。昔は四角い大きめのアイコンみたいのの中で小さなアプリが動いたりする「Dock」っていうのが気に入っていてAfterStepからWindowMakerを使ってた。猫がぴょこぴょこ歩いている時計のDockを自作してどっかのサイトに登録した気がするんだけど、今でもあるのあるのかなぁ??

で、OpenBoxだけ入れて起動してみると画面が真っ暗でなんか寂しい。壁紙も貼り付けてないから、真中に小さく黒いカーソルだけがちょこんとあるだけで、パソコンが動いてるのかどうかもわからないw

今時のデスクトップではパネル位はあった方がいいかな?と思って、Archのパッケージにあったpypanelとかbmpanelを入れてみる。さっそく起動してみると、X呼び出しの時にロケールを日本語にしてあるんだけど、日本語のフォントが読めてないらしくて、どっちも日本語が表示されない。そういえば、Xアプリってリソースファイルとかの設定ってあったなぁ、、とか思いだす。gtkは勝手に日本語表示するけど、xlib直接つかってるのって何したら良かったんだっけ?と思いつつ、めんどくさいから、.xinitrcで日本語ロケール設定してたのを外してみたけど、、、firefoxとかで日本語ページ開くとタイトルバーにページ名が日本語で表示されたりするので、結局タスクバーで文字化けして恥ずかしいw

ArchLinx入れる前にちょろっとCrunchBangLinuxも入れてみたんだけど、あれのパネルってなんだろう?あんまり気にせずにいて、すぐに消しちゃったからよくわからない。ページャーとかトレイとか全部別々なのかな??

そうそう、WMでタイル式のも物珍しくて、調べたり試してみたんだけど、小さな画面のS101だとどうも便利じゃなさそうな雰囲気。でも、やっぱり気になる、、

それより、コンソールでfbtermとやらを使えるようにしたいなぁ

Xの導入(その2)

フォント
ビギナーズガイドによれば、ウインドマネージャやデスクトップ環境構築の前にフォントに関する設定をしておくのがいいとのこと。アルファベット系のTrueTypeフォントをpacmanで導入後、日本語のフォントはIPAフォントを導入してみた。インストールはIPAフォントの配布ページの通りに導入。ホームディレクトリ下にフォントが置かれる。
後でArchWikiを見ると各国のフォントはFontsの辺りにもあった。

タッチパッド
S101の場合、HAL導入で勝手にタッチパッドは認識して使えるが、マルチタップは使えないので、synapticsドライバを導入する。
タッチパッドの設定の基本はTouchpad_Synapticsで説明されていた。
うちの場合、HALを使っているので、ドライバの設定はHALのポリシーディレクトリで行う。
(1)/etc/X11/xorg.config
 ModuleセクションにLoad "synaptics"を追加。
(2)/etc/hal/fdi/policy/11-x11-synaptics.fdi
 /usr/share/hal/fdi/policy/10osvendor/11-x11-synaptics.fdiからコピーして配置。内容は、S101用にこっちのページ(Asus_Eee_PC_S101)のものを使う。PCを再起動でタッチパッドが使える。

2009年4月4日土曜日

ブログ

ブログ初体験!
Linuxで遊ぶ時のメモとして、ブログを使ったら、ラベルとかで区分できて便利かなぁと思って始めてみたけれど、ブログの機能自体がよく把握できない(^^;
でも、適当に書いて投稿すれば、なんとなく形になるところが凄いです。

ArchLinuxは環境構築していく過程が遊べるので楽しい^^

別にLinuxで何かをやろうというわけでもなく、日曜大工的、もしくは、ディアゴスティーニの週間なんたら的に、ちょこちょこと、s101の中の環境を組み立てて、「おお!こんなのできた」みたいなのが好きです。

Xの導入

Beginners_Guideを見ながら、X.orgを導入して設定する時の注意は、「Input hotplugging」の項目をちゃんと読む事を忘れないこと。
xf86-input-evdevパッケージを導入したら、Xを起動する前に必ず、

# /etc/rc.d/hal start

する。
合わせて、/etc/rc.confのDAEMONS配列にhalを追加しておく。
このデーモンでXは入力デバイスの自動認識をしてくれる。
このデーモンを動かしていないと、入力デバイスの自動認識が出来ず、Xが立ち上がった時に、キーボードもマウスも利かなくなってしまう。(xorg.confに書いてあるキーボード、マウスの項目は自動的に削除されるため、デフォルトではここに設定を書いても無視される)

そこで、注意点は、ビギナーズガイドにはこの「Input hotplugging」の説明が、xorg.confファイルのの自動作成の項目の後に書いてある。

xorg.confファイルを自動生成させるために、

# Xorg -configure

するように書かれているが、自動生成された後、

# X -config /root/xorg.conf.new

をすれば、Xが起動するかどうか確認できる旨のメッセージも表示されるので注意。
上記のhalデーモンが動いていない状態で、このメッセージに従って実行すると、キーボードやマウスの操作ができなくなるため、電源ボタンでリブートするはめになる。
また、他の手段で紹介されているxorgcfgを使うと、設定確認のために自動的にXが立ち上がるのため、同じように困る。

HAL(Hardware Abstraction Layer)については、ココ。USBメモリとかの自動認識もするみたい。halをDAEMONS配列に入れる時は、もし、dbusが既にDAEMONS配列にあるなら、外しておく方が良いらしい。

2009年4月2日木曜日

日本語ドキュメント

Arch Linuxは、ドキュメントが豊富。フォーラムやwikiにたくさん情報あり。
wiki内のここから、日本語に翻訳(翻訳中)されてるドキュメントにアクセス可能だった。

2009年4月1日水曜日

cfdisk

インストール時にハードディスクの準備をする。ビギナーズガイド等にはディレクトリごとの性質とパーティションを切っておくことの有用性が説明されているけれど、ネットブックの場合、SSDなら容量が小さいのでパーティションを切らない方が良さげ。

ハードディスクの準備については、自分の思い通りにパーティションを切るためにcfdiskを使う。
cfdiskを起動すれば、画面内で色々ヘルプ見ながら操作出来るので簡単。

うちでは始め、cfdiskを打ち込むと、パーティション情報がおかしいというエラーで起動できなかった。
その場合、 -z オプション付けて強制立ち上げでOKだった。

man cfdisk(8)

インストール時ドキュメント

ArchLinuxの導入時には、Official_Arch_Linux_Install_GuideよりもBeginners_Guideが丁寧でわかり易い。

wikiのリンクから見ると、日本語訳進行中で途中までのガイドもあったような気がするので、そのうち日本語で読めるのかもしれない。

インストール時、coreのisoイメージをCDに焼いて、インストールを試みたら、GRUBは起動するんだけど、その後のシステム立ち上げ時に何故か外付けCDデバイスがマウントされないエラーがでて、起動に失敗とbusybox(?)のプロンプトが出てきてた。
外付けDVDドライブはI.OデータのDVRP-U8XLE

しょうがないので、USBメモリ用のイメージをダウンロードして、そっちからインストール。

Windozeマシンしかなくても、Ubuntu系のLiveCDは巷に転がってるので、それを起動して、その上で手順に従って起動用USBメモリを作ればOK。

デバイス名は fdisk -l で確認