4. fsck.ext2

おわりなき戦い

さて,起動メッセージを見ていると,おかしなことに気がついた.さっぱりわからない記述が続いているんだけど,システムマップがヘンだとかなんとか,出ているのである.システムマップって,何だろう?

カーネルのある /boot/ を見てみると, System.map っていう名前のシンボリックリンクがあった.このシンボリックリンクは,同じディレクトリの System.map-2.2.13-33 というファイルを指している. 2.2.13 用のシステムマップってことなのかな? となると,当然 2.2.17 のシステムマップだってあるはずだ.

カーネルをアップデート&再構築して,カーネルは変更したのにシステムマップは前のままだからエラーが出たのだろう.ということは,再構築をしたときに 2.2.17 のシステムマップがどこかにできているはずだ.

再構築をしたディレクトリ /usr/src/linux を見ると,まさに System.map という名前のファイルがあった.日付も,再構築した日のものだし.たぶんこれなんだろう. System.map を System.map-2.2.17 という名前で /boot/ に持ってきて, System.map のリンク先をSystem.map-2.2.17 にする.

あと, module-info-2.2.13-33 っていうファイルもあって気になったんだけど,これはハードウェアの設定内容っぽい,テキストファイル.でもこの中に入っているハードウェアはたぶん使ってないから,関係ないんだろう.と思う.たぶん・・・

それから, vmlinux-2.2.13-33 って,これがなんだかよくわからない.いつの間にか vmlinux-2.2.17 ってのもできてるし.この辺は今後の課題ってことになるのかな.飽きなければ・・・

さっそく問題

使いこなす前に問題は発生する.Linux 氏がおかしくなった.

原因は分かっている.きのう, Linux 氏が突然固まってしまわれて,話しかけてもうんともすんとも言わなくなってしまったので,癇癪を起こして電源スイッチをぷちっ・・・と・・・.

原因は分かっても,対処方法はわからない.というよりもう原因なんかどうでもいいからはやく Linux 氏と関係修復しなければ.

起動が途中で止まっている.よくわからないけど,メンテナンスのために root のパスワードを入れるか Control-D を押すかしろって書いてあるみたいだ.メンテナンスって言っても,何をどうやっていいのかさっぱりなので,Control-Dを押してみたら,またメッセージがだーっと流れていっていったんリブートした.

お? お?

・・・また同じところで入力待ちになる.

root のパスワードを入れろって書いてあるから,一応入れてみると,一見ふつうのコマンドラインになった.いや,ふつうでもないか.使えないコマンドもいっぱいある.やっぱ再インストールかなあ.となると,一応バックアップとかとっといた方がいいかも.

・・・でも,どのファイルをバックアップすればいいんだろう? 一応,自分の作ったファイルはバックアップしないと駄目だよね.ホームディレクトリ. Linux の場合はメールとかブックマークとか全部ホームディレクトリにあるから楽だ. Windows なんて,アプリケーションごとに保存する場所が違うから,メールやらアドレス帳やらブックマークやら,いちいち探してこないといけない.

ほかには・・・ X の設定だ. XF86Config とビデオカードの S3 Savage/MX 用の設定ファイルもコピーしておこう.あと,ネットワーク関連とか? 何をバックアップしたらいいかもわからないし,たいして使ってもいないから,また最初から設定をやり直してもいいし.あ,でもいちからやり直すってなると,またカーネル再構築? それはめんどくさいかも・・・.

心を入れ替えて,改めて,起動メッセージを見直すことにする.

[/sbin/fsck.ext2 -- /] fsck.ext2 -a /dev/hda5
/dev/hda5 contains a file system with errors, check forced

ってのが出てから,しばらく止まる.それが終わると,

/dev/hda5 : Unattached inode 38169
/dev/hda5 : UNEXPECTED INCONSISTENCY ; RUN fsck MANUALLY.
        (i.e., without -a or -p options)
*** An error occurred during the file system check.
*** Dropping you to a shell ; the system will reboot
*** when you leave shell.
Give root password for maintenance
(or type Control-D for normal startup) :_

・・・だそうだ.

fsck を -a とか -p とか抜きで実行するとか書いてある.これは,単に,

# fsck

って入力すればいいんだろうか.そもそも, fsck って,何をするものなんだろう.名前からするとファイルシステムチェック,とか?

あ! これってもしかして,スキャンディスク,なのかな? Linux よりはるかによく落ちる Windows の場合,にっちもさっちもいかなくなって電源を切ったら次に起動したときにスキャンディスクが立ち上がる.これが Linux でいうと fsck ってのになるのかも.

ということは・・・今こうやって入力しているのは,言ってみればセーフモードってわけだ.

情報収集

つよ〜〜い味方の JF の FAQ に,とても気になることが書いてあった.質問 4.4 だ.

「inode や block に関して気になるメッセージが出る」

はい,まさにそのとおり. unattached inode なんて出ている.

FAQ だからもちろん Answer がある.システムを停止させる前に適切に Linux をシャットダウンしなかったために−−たしかにおっしゃるとおり−−ファイルシステムが破壊されたと書いてある.運がよければ fsck,e2fsck,xfsck などのプログラムでファイルシステムを修復できるが,最悪の場合は mkfs,mke2fs,mkxfs などでディスクを初期化してバックアップをインストールし直さなければいけないそーだ.

なんかよーわからん.やっぱ再インストールが一番楽かなあ.

それにしても,「運がよければ」と「最悪の場合」と,二つの対処方法しか書いてないっていうのがなんとも・・・.この二者の間は,相当かけ離れているような気がするが.「その中間」ってのはないのかしらん.

JF とはまた別に, JM というプロジェクトがある. man を日本語訳するプロジェクトだ.ここのホームページに, man on WWW って項目があり, Namazu を使った全文検索もできる.ここで fsck を調べることにした.よく考えたら, man なんてわざわざインターネットで調べなくってもエンデバーくんに入ってるような気がするけど.

fsck - Linux ファイルシステムのチェックと修復を行う,だそうだ.やっぱりスキャンディスクみたいなものらしい.

起動メッセージには, fsck を手動で実行しろ,たとえば -a や -p オプションなしで,・・・ってことを書いていたから・・・

マニュアルによると, -a オプションってのは,自動的にファイルシステムを修復するものらしい. auto の a かな.逆に,確認を求めてくるのが -r .ところがマニュアルには -p ってのが載っていない.そのかわり, e2fsck では -a オプションは -p オプションにマップされる,とは書いてある.あと, e2fsck を非対話モードで動作させるには -p オプションか -a オプションを使用するとも書いてある.

-a と -p が同じ意味.・・・つーことは,起動メッセージは,単に,手動で実行しなさいって書いてるだけだ.

でも, e2fsck ってなに? fsck と,何がどう違うんだろう.

e2fsck についての man によると, e2fsck は Linux 2nd 拡張ファイルシステム( ext2fs )をチェックするものらしい. ext2 って,よく分かんなかったから無視していたけど,今までいろいろ出てきたよーな気がするんだけど.確か,今使ってるファイルシステムが, ext2 じゃなかったっけ?

JF に Extended ファイルシステム( ext, ext2, ext3 )という説明がある. ext が初期の Linux で使われていた古いシステム, ext2 が今使われているやつで, ext3 が ext2 に加えてジャーナリング機能とやらいうものを持っているそうだ.ジャーナリング機能がなんだかしらんケド.

あ. DOS, Windows9x/NT ,他の UNIX から ext2 にアクセスする方法ってのが載ってる. LTools ってのを使うらしい. Linux の MTOOLS のように動作します,か. MTOOLS は DOS にアクセスするツールだったよな,確か. Windows から Linux 領域にアクセスできれば便利だわ.ほかにもいろいろあるみたい.ええと,リンク先は・・・英語じゃん.

・・・いやまて.こんなことをやってる場合じゃないんだった.Linux 氏の再インストールをするかしないかの瀬戸際だというのに.

えーと.要するに,いま使っているファイルシステムが ext2 だということなんだよな.つーことは, fsck じゃなく e2fsck を使わなきゃいけないのかな?

もう一度起動メッセージをよく見てみると, fsck をマニュアルで実行しろって出る前に,

[/sbin/fsck.ext2 -- /] fsck.ext2 -a /dev/hda5

って出ているのに気づいた.なんだ,ここに, ext2 ってのがちゃんと入っているではないの.でも,ここで使われている fsck.ext2 と, fsck,e2fsck の関係もよくわからない. JM を見ると,確かに fsck のマニュアルの中の関連項目のところに fsck.ext2(8) って書いてあるけど, fsck.ext2 自体のマニュアルがない・・・.

とりあえず,ここで使われている fsck.ext2 を,書いてあるとおり, -a だけ抜いて実行してみよう・・・.なんかほかのオプションつけた方がいいのかもしれないけど,分かんないし.

# fsck.ext2 /dev/hda5

実行すると,直後に e2fsck 1.17, ..... で始まる一行が現れた.へ? 要するに, fsck.ext2 って, e2fsck なの? そんなとまどいはよそにメッセージはどんどん続いてゆく・・・

/dev/hda5 contains a file system with errors, check forced
Pass 1 : Checking inodes, blocks, and sizes
Pass 2 : Checking directory structure
Pass 3 : Checking directory connectivity
Pass 4 : Checking reference counts
Unattached inode 38169
Connect to /lost+found <y>?_

起動メッセージと同じようなメッセージが流れたあと,何かを聞いてきた.ファイルにエラーがあるから修復しますってことだろう! たぶん! そうに違いない!

Enter キーを押すと, yes である.以下,似たような質問がいくつも現れるが,すべて yes .

Inode 38169 ref count is 2, should be 1. Fix <y>?_
Unattached inode 38171
Connect to /lost+found <y>?_
Inode 38171 ref count is 2, should be 1. Fix <y>?_
Unattached inode 54712
Connect to /lost+found <y>?_
Inode 54712 ref count is 2, should be 1. Fix <y>?_
Pass 5 : Checking group summary information
Block bitmap differences : -18550 -18551 -156072 -156073 -156074 -156075 -156076 -156077 -156078 -156098 -156099 +156654 +156655 +156656 +156657 +156658 -282903 -282904 -282905 -282906 -282907
Fix <y>?_
Free blocks count wrong for group #0 (14496, counted=14498).
Fix <y>?_
Free blocks count wrong for group #4 (10363, counted=10367).
Fix <y>?_
Free blocks count wrong for group #8 (12425, counted=12430).
Fix <y>?_
Free blocks count wrong (173185, counted=173196).
Fix <y>?_
Inode bitmap differences : +38169 +38171 +54712
Fix <y>?_
Free Inodes count wrong for group #2 (10687, counted=10685).
Fix <y>?_
Free Inodes count wrong for group #3 (10429, counted=10428).
Fix <y>?_
Free Inodes count wrong (199197, counted=199194).
Fix <y>?_

/dev/hda5 : ***** FILE SYSTEM WAS MODIFIED *****
/dev/hda5 : 93990/293184 files (1.3% non-contiguous), 412696/585892 blocks

というわけで,いちおう終了? したようだが・・・.

# exit

・・・わーい,うまくいったあ〜〜〜! ・・・たぶん.

/lost+found/ というディレクトリを見てみると, #38169,#38171,#54712 というファイルがあった.

また・・・

止まってしまったのである.キーボード押しても,マウス動かしても,全然駄目・・・.前のときも Netscape Navigator 使っていたときだから,ネスケがまずいのかも・・・

電源ボタンで強制的に電源を切って,起動したら,またあのエラーが!

やっぱ再インストールするべきかなあ・・・?

   4  

To HOME