20 時前にテレビをつけたら投票終了時刻まであと百数十秒とかいうカウントダウンを放送していて,「あー,選挙!!」と思った時既に遅し。 昼メシを食いに出た頃はまだ選挙を意識してたのに……。

coLinux

coLinux 動作中,ドライブイメージに対して,Linux (ゲスト OS) のキャッシュだけでなく Windows (ホスト OS) のキャッシュも効いてる気がする。 coLinux そのものを頻繁に再起動する時以外,Windows がキャッシュするメリットはほとんどなく,むしろメモリを無駄遣いするというデメリットのほうが大きい。 TMPGEnc みたくキャッシュを OFF にしてアクセスしてくれないかなあ。 関係ないけどたしか DAEMON Tools もディスクキャッシュが二重にかかって無駄なんだよね。

きのう・きょうと集中して coLinux をいじってたら,2 回 Windows がクラッシュした。 coLinux が原因じゃなくて,PuTTY でログインして操作しててベル音を鳴らしまくったりしてると *1 他のソフトも含めて音が一切出なくなることがあり,それからしばらくするとクラッシュする感じなので,安定したと思ってたサウンドドライバがまだ不安定なようだ。 これでも 1 年くらい前に比べたらずっと安定してるのだが。


*1: こういう時のためじゃないと思うが PuTTY には「ベルが使われすぎたとき一時的に無効にする」機能がある。

先週より少し気温が下がったことがわかる。

JR 205 系の冷房は風に当たるとほんのり涼しい程度なのに,209 系の冷房は日なたにいてもひんやり。

URI メモ

🟦 チラリズムで萌えさせよう! 〜ブラチラ編〜
http://www.tanteifile.com/girls/erisu/0407/12_01/
🟦 2 ちゃんねる発「純愛物語」にハマりまくる人々
http://www.asahi.com/tech/apc/040709.html
🟦 こんな iPod mini だったら買う
http://yet.s61.xrea.com/mt/archives/000110.html
🟦 ソニー,旧 PSX のネットワークアップグレードサービスを延期
http://www.watch.impress.co.jp/av/docs/20040712/sony.htm
🟦 スクリプト記述で高度な設定が可能なインストーラー作成ソフト「Inno Setup」
http://www.forest.impress.co.jp/article/2004/07/09/innosetup.html
🟦 NSIS (Nullsoft Scriptable Install System)
http://nsis.sourceforge.net

Debian の alternatives システム

vi で日本語を使いたくて vim を入れたものの,Debian で vi と打ち込んだときに起動するのは vim じゃなくてやっぱ nvi でしょう,というわけで,vi のシンボリックリンクを Debian 流の正しいやり方で変更してみる。 man vi とかで参照するファイルも一斉に切り替わる点が良い。

mackerel# update-alternatives --config vi

There are 2 alternatives which provide `vi'.

  Selection    Alternative
-----------------------------------------------
      1        /usr/bin/nvi
*+    2        /usr/bin/vim

Press enter to keep the default[*], or type selection number: 1
Using `/usr/bin/nvi' to provide `vi'.

結果,どうなるかというと:

mackerel% readlink =vi
/etc/alternatives/vi
mackerel% readlink /etc/alternatives/vi
/usr/bin/nvi
mackerel% readlink -f /usr/share/man/man1/vi.1.gz
/usr/share/man/man1/nvi.1.gz

coLinux

WinPcap 方式には限界があるんだろうか。 大きなファイルをダウンロードすると,よく途中で切れる。 ま,余剰パーツ PC を組むまでのつなぎの環境だから我慢するか。

coLinux 上で nbench を走らせてベンチマーク。

 BYTEmark* Native Mode Benchmark ver. 2 (10/95)
 Index-split by Andrew D. Balsa (11/97)
 Linux/Unix* port by Uwe F. Mayer (12/96,11/97)

 TEST                : Iterations/sec.  : Old Index   : New Index
                     :                  : Pentium 90* : AMD K6/233*
 --------------------:------------------:-------------:------------
 NUMERIC SORT        :          792.16  :      20.32  :       6.67
 STRING SORT         :          70.595  :      31.54  :       4.88
 BITFIELD            :      2.4602e+08  :      42.20  :       8.81
 FP EMULATION        :           65.84  :      31.59  :       7.29
 FOURIER             :           11859  :      13.49  :       7.58
 ASSIGNMENT          :          20.494  :      77.99  :      20.23
 IDEA                :          1630.2  :      24.93  :       7.40
 HUFFMAN             :          1042.1  :      28.90  :       9.23
 NEURAL NET          :           18.46  :      29.65  :      12.47
 LU DECOMPOSITION    :          874.91  :      45.32  :      32.73
 ==========================ORIGINAL BYTEMARK RESULTS==========================
 INTEGER INDEX       : 33.566
 FLOATING-POINT INDEX: 26.268
 Baseline (MSDOS*)   : Pentium* 90, 256 KB L2-cache, Watcom* compiler 10.0
 ==============================LINUX DATA BELOW===============================
 CPU                 : GenuineIntel Intel(R) Pentium(R) 4 CPU 2.53GHz 2559MHz
 L2 Cache            : 512 KB
 OS                  : Linux 2.4.26-co-0.6.1
 C compiler          :
 libc                : ld-2.3.2.so
 MEMORY INDEX        : 9.548
 INTEGER INDEX       : 7.592
 FLOATING-POINT INDEX: 14.569
 Baseline (LINUX)    : AMD K6/233*, 512 KB L2-cache, gcc 2.7.2.3, libc-5.4.38
 * Trademarks are property of their respective holder.

スッキリした暑さ。 205 系は冷房が弱い代わりにカーテンが閉められるわけだが,夏の日差しは強い。

ここら辺も梅雨明け。 梅雨の期間の降水量が平年の約 45% って。

どんなキーワードで検索したんだか忘れたが,「姉ちゃんの部屋から盗聴器が発見されたっす」というページにたどり着いて,しばし読みふける。 ……タイトルからは連想できない萌え系だった。 ヤラレチャッタ。

phone WIN+BREW,KDDI「W21」の 5 つのポイント

1X での全部入り端末 A5505SA ユーザの立場で読むと,やっぱ気になるのは 1X WIN での全部入り端末となる W21SA。 デザイン面では,大きさはほとんど一緒だし,サブ液晶を積んでないのにますます重たくなってて微妙。 機能面では,著作権保護コンテンツが外部メモリに待避できるのが羨ましい。 機種変してもダウンロードし直さずに済む。 もちろん電子コンパスも踏襲だ。 グローバルパスポートが不要なら,A5505SA よりも有利に見える。 ただし料金面で WIN は多くの場合まだ不利かと思う。 自分の使い方に合わせてきちんと計算してみないとわかんないが。

EZ ナビウォークのリニューアルは,従来機種についてもバージョンアップを検討中らしい。 これでアプリが今よりデカくなっちゃうと,貴重な BREW のメモリが圧迫されるんだけどね。

zsh

An Introduction to the Z Shell (Japanese)コマンドライン編集を読んで,ESC-' (escape-quote) やら vared コマンドやらを覚える。 激しく便利。 直前のコマンドラインをエディタで編集できる fc コマンドにもビックリ。

coLinux

coLinux のネットワーク接続を WinPcap による自力のブリッジ接続から TAP 経由に変えて,Windows XP のブリッジ接続を有効にしてみる。 レスポンスがかなり良くなった。 ちなみに Windows 2000 でも Ethernet Bridge をインストールすればブリッジ接続が実現できるもよう。

coLinux 起動時に出る「modprobe: Can't open dependencies file /lib/modules/2.4.26-co-0.6.1/modules.dep (No such file or directory)」のエラーは,付属の vmlinux-modules.tar.gz を展開してなかったのが原因のようだ。 ちゃんと説明読まなきゃダメだな。

月一定例の Windows Update 適用後,再起動したら,ハードウェアに大幅な変更があったから 3 日以内にライセンス認証を行え,と表示された。 前回のシャットダウン以降,ハードウェアを変更した覚えはない。 ていうか,ここ一ヶ月以上ケースを開けたこともない。 せいぜい仮想 NIC (TAP) デバイスのソフトウェアを追加した程度だ。 それでも“大幅”とはいえない。 ライセンス認証に成功したから結果オーライだが,意味がわからん。

再起動後,coLinux のサービスが動かなくなっていた。 再インストールしたら動いた。 意味がわからん。

仕事

今週末休日出勤の可能性が急浮上したものの,私の作業範囲を超える内容だったので回避できた。 連休キープ。

phone 知らない楽曲を携帯に聞かせると曲情報を取得できる新サービス

なぜわざわざ特定のケータイ?

coLinux

スナップショット版の修正内容によると,WinPcap で使った時にネットワークが不安定なのはバグらしい。

  * Bug fix: The network driver (conet) now verifies checksums (as
    network packets that are received by PCAP can indeed be bad).

そこで試しに 20040710 版を入れてみたのが昨晩。 なんと,カーネルが 2.4 系 (2.4.26-co-0.6.1) から 2.6 系 (2.6.7-co-0.6.2) に変わってしまった。 素直にルートファイルシステムのイメージを 2.6 系のに差し替えたら設定等を全てやり直す羽目になるので,Debian Kernel 2.6 How To を参考に必要最小限のパッケージをアップグレードし,/etc/fstab に追記することで,2.6 系に対応。 ただしパッケージ類はまだ stable ではなく testing のものばかり。 セキュリティ情報等に敏感に反応しなければならない。

同じく昨晩,talk コマンドを入れてみた。 最近の talk コマンドはバックスクロールもできるらしい。 あと日本語がとりあえず通る。 おかげで弟と話し込んで夜更かししてしまっつ。 ふむふむ,nvi-m17n ねぇ (謎)。 せっかくなので (←?) GT3 スーパープレイ動画 (俺コンボ.net の 2004/06/07) を紹介。 つーか PSX 買え〜。

ツッコミ

from hiro さん。

autoload -U compinit && compinit とかはやってますか?

やってないです。 Solaris 標準の zsh 3.0.8 で普段使ってる .zlogin,.zshenv,.zshrc をベースにしたので,3.0 系の古いバージョン用になっちゃってます。 補完機能については大学で使ってた頃に一度極めたハズなんですけれど。

というわけでひとまず compinit の記述を追加しました。 定番の補完 (man コマンドの引数の補完とか) がひと通り含まれてて便利ッスね。 kill コマンドの引数の補完でプロセス一覧が出てくるのなんてやりすぎでは。 (^^;)

きょうの予定

きょうは年休。 今年はまとまった夏休みを取るのが難しそうだから,休める時に少しずつ年休を取ることにした。

んで目覚ましなどセットせずに寝てたわけだが,ケータイのほうの予備目覚ましに起こされてしまった。 設定を確認すると「月〜金」になってたので,「休日以外」に変更。 既にカレンダー上きょうは休日に設定してあった。

時々ケータイに仕事の電話が掛かってくるのはしょうがないし,全然構わないのだけど,「いま忙しい?」と聞かれて「忙しくないですよ,きょうは休みをいただいてますから」と答えると,それ以降その人からは電話が掛かってこなくなる。 そういうつもりじゃないのに……。

貴重な平日の時間。 学生特例の追納について区役所に聞きに行く。 窓口のおっちゃんが地図を持ってきた。 社会保険事務所に聞いてくれ,とのこと。 受け取って「ありがとうございました」と席を立とうとしたら「えっ,用件はこれだけ?」と言いやがったヤなオヤジ。 暑い中,道に迷って駅ひと区間を無駄に往復したりして,有酸素運動しまくり。

その足で社会保険事務所に赴く。 窓口のおばちゃんから納付書を受け取ってないかと聞かれて,受け取ってませんと答えると,別の窓口へ回された。 奥から出てきたキレイなおねいさんに話をして,納付書を発行してもらう。 待合い席でお待ちくださいと言っておきながら待合い席まで聞こえない小さな声で呼ぼうとするキレイなおねいさんが「2 年間分まとめて月払いで発行しちゃいました」と言うので,念のため一括払いの金額を聞くと,35 万円弱。 「じゃあ月払いで」とあっさり受け取って帰ってきてしまったが,よく考えると論点がもうひとつあった。 発行された納付書は,使用期限が全て今年度いっぱいなのであった。 あと半年で納付し終わらなかったら,再発行してもらわなきゃだ。 待合い席まで聞こえない小さな声で呼ぼうとする桜井裕美似のキレイなおねいさんに惑わされた。

帰宅直後に夕立。 停電しなかった。

ちなみにこの手続き,じつは「納付書を家に送ってほしい」という電話一本で済む話だったらしい。 仕事の合間に電話すりゃ良かったのかー。

USB でお手軽マルチモニタ環境を実現! 「サインは VGA」

ヒジョーに実用的な製品なのにこんなネーミングにしてしまうセンスがスゴい。 USB ケーブル上をどんなプロトコルの信号が流れるのか気になる。

眞鍋かをりのここだけの話

トラックバックが 340 件を超えちゃってる YO!  トラックバック数の日本記録といわれてる 351 件 (倉木麻衣) が更新されるのも時間の問題か。 といいつつトラックバックしない私。

きょうも休み

朝 5 時前に目がさめたが,これでも睡眠 12 時間。

家でごろごろ。 ぐてーっと過ごす。 きょうの外出は昼メシと晩メシの 2 回だけ。

なんとなく土曜日みたいな気分になってた。 あややのドラマねーなーって思ったら金曜日だった。 いきなり休みボケかよ……とあきれつつ,録ったらかしのきのうのドラマを観る。

今クール観てるドラマのうち半数以上の「ウォーターボーイズ 2」「南くんの恋人」「世界の中心で、愛をさけぶ」「愛情イッポン!」が学園ものなのは偶然ですよ?

止まっているのに動いて見える画像

じっくり見てると酔いそう。

coLinux

coLinux な Debian に ntp,ntp-simple,ntpdate パッケージを突っ込んで ntpd を立てたら,ホスト OS の Windows よりも時計の進み方が正確になった。 Windows には定期的に NTP サーバに同期する機能はあるが,少しずつずれていくのを補正する機能が無いのかなあ。

いっそのこと,短い周期でホスト OS の Windows をゲスト OS の coLinux に同期させたほうがイイのか? どっちも同じ PC だから,基準が何だか訳わかんなくなるけど (笑)。

連休 3 日目

15:10 ごろ揺れた。 震度 2〜3。

ガリを補給したくなって回転寿司へ。 混雑時間帯に行ったから新しいネタの皿がどんどん出てきて Good。 独り者は優先的に座れるしね。

get a geta

アキバに行って中古ショップ巡り。 Socket 370 - Slot 1 変換下駄を探す。 ツクモで MSI の製品 (約 500 円) と PowerLeap の製品 (約 1,000 円) と ASUS S370-133 (約 1,500 円) を発見。 使いたいマザボが ASUS P3B-F なので,同じメーカーで動作確認されてるという安心感で S370-133 をチョイス。 たまってた 600 ポイントくらいを使って 1,000 円未満。 悪くない値段だ。

一緒に 1,029 円の FDD を買って帰り,ようやく余剰パーツ PC を組み上げる。 CPU が認識されないまま強引に起動して最新 BIOS にアップデートすると Celeron 566MHz が無事認識された。 パーツ類は全部生きてた!! 取り付けた HDD は 10G バイト (5,400 回転) と 20G バイト (5,400 回転) と 40G バイト (4,500 回転) と 80G バイト (7,200 回転,不良セクタ有りなのでテンポラリ専用)。 数は多いが容量は少ない。 おまけにうるさい。

PSX

ネットワークアップデートは延期されたって知っていながら,試しに実行してみる。

ただいまアップデートサーバーは大変混みあっているか、
メンテナンス中のためご利用できません。
エラー番号:200

……ハァ?

coLinux

Colinux Image Tools で紹介されてる ToOpenLarge を使って,ルートファイルシステムのイメージファイルを拡張。 これで当分は空きを気にせず apt-get install できそうだ。

今のところ coLinux 上で X アプリを使うには Windows 側に Cygwin を入れて XWin -multiwindow -clipboard & としておいて *1 さらに IME Proxy を入れて canna2imm32 & としておくのがベストか。 X アプリを使いたくなったら試そう。


*1: ローカルホストから接続するんでなければ (coLinux に SSH でログインして X11 forwarding を使うんでなければ),オプションに -ac も追加。

Linux Debian インストール

余剰パーツ PC に Debian GNU/Linux 3.0 (woody) をインストーる。 その PC とやり取りできるリムーバブルメディアがフロッピィしかなかったうえ,空きフロッピィが 1 枚のみだったので,ネットワークインストールの開始までに少々手こずる。 Windows 上でフロッピィイメージを書き込む際は,Debian の NTRawrite.exe を使うより,Vine の rawwritewin.exe を使ったほうが半分以下の時間で済む。 ベリファイが省かれるだけでなく,そもそも書込み速度が違う。

ダウンロードまでたどり着けば,あとはサクサク。 日本語版でインストールを進めると,ウインドウのタイトルが「基本システムのインストール,少しお待ちくだ」で切れてたり。 ネットワークが速くても CPU がボトルネックになるから安い NIC で構わんだろうと思ってカニさんにしたが,パフォーマンス比較記事とか見ると非力な CPU にこそ優秀な NIC が必要なことがわかる。 まあ 100Mbps くらいは平気だけど。

セットアップ終了後,忘れずに hdparm パッケージをインストールし,/etc/rc.boot/hdparm スクリプトを作成。 あと LILO を消して GRUB を入れて /etc/kernel-img.conf にその辺を記述。 これは最低やらんとね……。 あと /etc/sysctl.conf に kernel/panic = 30 を追記して sysctl -p。 これで無人運転中にカーネルパニックで落ちても 30 秒後に再起動してくれる。

murasaki パッケージを突っ込んでみるも,USB キーボードがうまく認識されない。 USB マウスはうまくいく。 ネットワーク設定をミスって外からつながらなくなった時に USB キーボードを挿して Ctrl-Alt-Del を押したいだけなんだけどなあ。 BIOS セットアップで USB キーボードのサポートを切ればいいのかもしれないが,モニタをつなげない場所に移動した後だったので何もできない。 無駄に G550 を挿してあるからテレビ出力常時 ON モードに設定しとけば良かった。 5 インチベイ内蔵型 VGA 対応 4 型アナログ液晶モニタなんて高すぎるし。 シリアル化はやっておこうかと思う。 BIOS セットアップは無理だけど,GRUB 以降はシリアルコンソールで使えるようでスバラ。 ただ,シリアルケーブルが無い……。

AptGet でお勉強。 auto-apt 強いなあ。

DiCE for Linux を入れる。 ちょっと Unix っぽくない作りだけどまあいいや。

海の日

連休最終日

結局 5 日間ゲームやってなかったり。 なんだかな。

DivX 5.2

とにかくかなり怪しいから入れるなということらしい。

Linux 鯖いじり

鯖の LAN カード (ELECOM LD-10/100SA) に挿してあるスーパーフラット LAN ケーブル (ELECOM LD-GF/SV10) のスリムコネクタが緩くて困る。 ping に応答しなくなって様子を見に行くとランプ消灯,みたいな。 同じメーカなのに。 ネットワークが物理層で接触不良だなんて,サーバ用途には心もとないなあ。

 カーネル

kernel-patch-xfs パッケージを突っ込んで 2.4.18 のカーネルを再構築してみる。 LANG=C にするのを忘れて作ったら日時が漢字で書き込まれてしまってショボン。 当然コンソールでは文字化け。

mackerel% uname -a
Linux mackerel 2.4.18 #1 2004年 7月 19日 月曜日 15:12:45 JST i686 unknown

 パーティション分け

すんげぇテキトー。

/dev/hda1 on /boot type ext2 (rw)
/dev/hda2 on / type xfs (rw)
/dev/hdb2 on /data/40 type xfs (rw)
/dev/hdc1 on /data/10 type xfs (rw)
/dev/hdd1 on /data/work type ext3 (rw)

/dev/hdb1 は swap。

Filename                        Type            Size    Used    Priority
/dev/hdb1                       partition       1020088 0       -1

/data/work が 80G バイトあって一番デカいけど,不良セクタが見つかった HDD なので,いつ壊れても構わないようなデータしか置けない。

Filesystem            Size  Used Avail Use% Mounted on
/dev/hda1              61M  4.1M   53M   8% /boot
/dev/hda2              19G  606M   18G   4% /
/dev/hdb2              36G  608k   36G   1% /data/40
/dev/hdc1             9.4G  176k  9.4G   1% /data/10
/dev/hdd1              73G   33M   69G   1% /data/work

念のため /data/work のファイルシステムは不良セクタ処理が実装されてる ext3 (ext2) にし,不良セクタのチェックをやっておくことにした。 チェックには時間がかかるので今夜はこのまま放置。

mackerel# fsck -cc -v LABEL=80GB
fsck 1.27 (8-Mar-2002)
e2fsck 1.27 (8-Mar-2002)
Checking for bad blocks (non-destructive read-write test):     50976/ 19537040

 USB

BIOS セットアップをいじってみたが,やはり Linux 上で USB キーボード (ELECOM TK-U01MBK) は検出されず。 挿すとこんなエラーが出る。

hub.c: USB new device connect on bus1/1, assigned device number 2
usb.c: USB device not accepting new address=2 (error=-84)
hub.c: USB new device connect on bus1/1, assigned device number 3
usb.c: USB device not accepting new address=3 (error=-84)

あるいはこんなエラーが出ることも。

hub.c: USB new device connect on bus1/1, assigned device number 4
usb.c: couldn't get all of config descriptors
usb.c: unable to get device 4 configuration (error=-84)
hub.c: USB new device connect on bus1/1, assigned device number 5
usb.c: couldn't get all of config descriptors
usb.c: unable to get device 5 configuration (error=-84)

USB マウス (ELECOM M-GUWSRSV) ならうまくいく。

hub.c: USB new device connect on bus1/1, assigned device number 2
input0: USB HID v1.00 Mouse [ELECOM ELECOM] on usb1:2.0
usb.c: registered new driver usb_mouse

USB マスストレージも大丈夫。

hub.c: USB new device connect on bus1/1, assigned device number 2
usb.c: USB device 2 (vend/prod 0x4cf/0x8813) is not claimed by any active driver.
SCSI subsystem driver Revision: 1.00
Initializing USB Mass Storage driver...
usb.c: registered new driver usb-storage

うーん。 単にキーボードとの相性問題?

予想最高気温 == 体温。

fsck は半分も終わってなかった。 ディスクは一般に先頭 (外周) が一番速くて末尾 (内周) が一番遅いっていわれるけど,こんなに差があるとは。 screen コマンドを走らせてなかったので,端末ウインドウを開いてる Windows マシンを落とすわけにいかず電源入れっぱなしで出勤。

途中の駅で停車位置が変わってた。 今までよりも理にかなった位置に停まった。 まさかあんな派手にオーバーランしたんじゃないだろうな。

最高気温 > 体温

連休中のメールが 600 通以上あって大変。

ソフトイーサ株式会社社内ハムスター

ホントにずっと回し続けるんだなあ。 かわいい。

[カーマルチメディア・インサイダー] ホンダ技研工業インターナビ推進室・今井武室長

就職活動をしてた頃カーナビを作りたかったことを思い出した。

リンクシス ブロードバンドルータ BEFSR41C-JP V2

5,000 円以下で入手できるブロードバンドルータで SNMP 対応の機種があったなんて。 Cisco のロゴもイイ。

プロセス間でのファイルディスクリプタ (ソケット) 渡し

CMSG のマニュアルに簡単な例が。 portlisten: passing socket file descriptors through sockets に詳細な例が。 キーワードは「SCM_RIGHTS」かー。

しかし困ったことに今の開発環境であるところの Solaris 9 では CMSG_SPACE や CMSG_LEN って定義されてないらしい。 Solaris 10 の socket.h のマニュアルには載ってたが,Solaris 9 の socket.h のマニュアルには載ってない。 うーむ……。

SSH エスケープ

SSH のマニュアルを見てると,こんな記述があった。

 The supported escapes (assuming the default `~') are:

 ~.      Disconnect

 ~^Z     Background ssh

 ~#      List forwarded connections

 ~&      Background ssh at logout when waiting for forwarded
         connection / X11 sessions to terminate

 ~?      Display a list of escape characters

 ~C      Open command line (only useful for adding port
         forwardings using the -L and -R options)

 ~R      Request rekeying of the connection (only useful for
         SSH protocol version 2 and if the peer supports it)

最初のふたつは rsh (rlogin) と同じだからなんとなく使ってたが,それ以外は知らなかった。 中でも ~C は以前から欲しくて探してた機能。 SSH のセッションを張り直すことなく,ポートフォワードを追加できる。 これは便利。

ssh> -L 1234:anywhere:5678
Forwarding port.

Linux

会社帰り,ヨドバシに寄って RS-232C リバースケーブル (609 円) を買おうとするも,ノート PC に RS-232C コネクタがないことを思い出してあきらめる。 RS-232C/USB 変換ケーブルに手を出してしまうと,緊急時のシリアルコンソール用としては金銭面で割に合わない。

 fsck

帰宅したら不良セクタのチェックは終わってた。

80GB: ***** FILE SYSTEM WAS MODIFIED *****

      11 inodes used (1%)
       0 non-contiguous inodes (0.0%)
         # of inodes with ind/dind/tind blocks: 0/0/0
  315256 blocks used (1%)
     112 bad blocks
...

112 個の不良ブロック (bad block)。 SMART 機能で確認してみると,シークエラーが明らかに多い。

mackerel# smartctl -v /dev/hdd
Vendor Specific SMART Attributes with Thresholds:
Revision Number: 10
Attribute                    Flag     Value Worst Threshold Raw Value
(  1)Raw Read Error Rate     0x000f   084   067   034       9369389
(  3)Spin Up Time            0x0003   070   070   000       0
(  4)Start Stop Count        0x0032   100   100   020       93
(  5)Reallocated Sector Ct   0x0033   100   100   036       25
(  7)Seek Error Rate         0x000f   078   060   030       80965747
(  9)Power On Hours          0x0032   093   093   000       6240
( 10)Spin Retry Count        0x0013   100   100   097       0
( 12)Power Cycle Count       0x0032   100   100   020       798
(194)Temperature             0x0022   049   061   000       49
(195)Hardware ECC Recovered  0x001a   084   067   000       9369389
(197)Current Pending Sector  0x0012   100   100   000       4
(198)Offline Uncorrectable   0x0010   100   100   000       4
(199)UDMA CRC Error Count    0x003e   200   200   000       0
(200)Unknown Attribute       0x0000   100   253   000       0
(202)Unknown Attribute       0x0032   225   122   000       131

fsck 中に起きたカーネルレベルのエラーは全部で 306 件。

mackerel% grep UncorrectableError /var/log/messages | wc -l
    306

物理的には特定の位置に集中してるようだ。

mackerel% grep UncorrectableError /var/log/messages |
          cut -d, -f2 | sort -n -t= -k2 | uniq
 LBAsect=6394953
 LBAsect=6394954
 LBAsect=6401940
 LBAsect=6401941
 LBAsect=22185580
 LBAsect=22185581
 LBAsect=47462121
 LBAsect=47462122
 LBAsect=47469107
 LBAsect=47469108
 LBAsect=47808585
 LBAsect=47808586

もっといっぱいあるかと思ってたので拍子抜け。 このくらいなら HDD メーカー謹製のツールで代替セクタ処理を行えばエラーが全部消えてしばらく快適に使えるかもしれない。 けどそういう操作をするにはモニタをつながないと……。

 ACPI

USB キーボードが検出されないのなら,せめて電源ボタン押下時に正常にシャットダウンを,ってことで ACPI button support を有効にしたカーネルを作る。 今回は LANG=C も忘れずに。

mackerel% LANG=C fakeroot make-kpkg --revision Custom.1.1 \
          --append_to_version -2-mackerel --added-patches xfs \
          --initrd kernel_image kernel_headers modules_image
mackerel% su
mackerel# dpkg -i ../kernel-*-2.4.18-2-mackrel_Custom.1.1_i386.deb

カーネルのオプションに acpi=on を追加して,update-grub。 リブート。

mackerel# grep acpi /boot/grub/menu.lst
# kopt=root=/dev/hda2 ro acpi=on
mackerel# update-grub
mackerel# grep acpi /boot/grub/menu.lst
# kopt=root=/dev/hda2 ro acpi=on
kernel          /vmlinuz-2.4.18-2-mackerel root=/dev/hda2 ro acpi=on
kernel          /vmlinuz-2.4.18-2-mackerel root=/dev/hda2 ro acpi=on single
kernel          /vmlinuz-2.4.18 root=/dev/hda2 ro acpi=on
kernel          /vmlinuz-2.4.18 root=/dev/hda2 ro acpi=on single

acpid パッケージをインストールし,電源ボタン押下時に poweroff が実行されるように設定。

mackerel% cat /etc/acpi/powerbtn.sh
#!/bin/sh
# /etc/acpi/poweroff.sh
# Initiates a shutdown when the power putton has been
# pressed.
logger "Power button pushed."
/sbin/poweroff

これでひとまず安全に電源を切ることはできる。

ちなみに 2.6 系のカーネルなら ACPI も XFS も初めから提供されてて,カーネル再構築は不要と思われ。 電源管理系の強化ファイルシステムの機能強化