2004年11月23日(火) こういうことも起きるさ [同日]
● /home飛びました
昼飯から帰ってくると、職場のメインマシンが、同じUPSにつないでるプチサーバーマシンと一緒にリブートしてました。え?
プチサーバーマシンは何事もなかったかのように再起動してたのですが、メインマシンは/homeのfsckが通らない、と。手でやりなおしても、迷子のinodeが出るわ出るわ。同じディスクの別のパーティションは無事なようだし、ラッキーなことに30分前にdaily backupを取ったところだったので、バッドセクタを検出してからファイルシステムを作り直すことにしました。あ、Windows XPのパーティションはぜんぜんチェックしてないよ。わはは。
そしてmkfsに-cオプションがあることを知ったのでした。ファイルシステムを作る前にbadblocksを起動してデバイスをチェックしてくれる。さーて。本でも読みながら待つしかない。
● そしてパーティションラベルの設定は e2label /dev/sda6 /home。
● [memo] PXEブートの手順
「文房具としてのUNIX」宮地利幸、森島直人、UNIX Magazine 2004年11月号、p.94より。記事にはNetBSDの場合が書いてあるが、他のOSでも大きくは違わないだろう。
- BIOSがブートメディアを検索
- PXE対応のインターフェースからDHCPリクエストを送信
- DHCPサーバーがネットワークの設定情報とブートローダを取得する元になるtftpサーバーとファイル名を返信
- tftpサーバーからブートローダをメモリ(ix86機ではリアルモードで動いてるので640KBまで)上に展開
- ブートローダを起動
なるほどー。なんとなく想像はしていたけれど。ここで、ブートローダはPXEのために渡された情報を知る術はないので、もう一度、今度はブートローダが、
- DHCPリクエストを送信
- DHCPサーバーがネットワークの設定情報とカーネルを取得する元になるtftpサーバーとファイル名を返信
- ブートローダがカーネルを取得しメモリ上に展開
- カーネルを起動
という作業をするのだそうだ。ここで、DHCPサーバーはクライアントからのvendor-class-identifierによってどのような情報を返すべきか知ることができる。ブートローダからカーネルにどれだけの情報を渡せるか、は、OSに依るんだろうな。Linuxならカーネルオプションとして渡せる程度の情報かな?カーネルが起動したら、もう一度DHCPリクエストを出したりもするのかも。
● 人間は基本的には一本のパイプラインなんだなぁ、と思いながらジョギングをする。なんとかしなくちゃなぁ…。
● [tla] GNU archで実行ファイルがあってもcommitできるようにする
前から気になっていてやっとみつけたinfo archのCustomizing the inventory Naming Conventionsの項より、
$ tla inventory P? hello S hello.c S main.c $ vi .arch-inventory $ cat .arch-inventory precious ^(hello)$ $ tla inventory P hello S hello.c S main.c
これでおっけー、と思いきや、
$ vi `tla make-log` $ tla commit These apparent source files lack inventory ids: .arch-inventory
自動的にはaddしてくれないらしい。
$ tla add .arch-inventory $ tla commit
というわけで、そのディレクトリの.arch-inventoryに、ファイル名を列挙しておくのが良さそうだ。.arch-inventory自身もtla addする必要がある。ビルドディレクトリを分けることもできるけど、autotoolsを使わないツリーだとかなり面倒だよね。
解決。
と思ったら、あー。hello.oがunrecognizedになってるんですけど…。こっちは=tagging-methodを変えた方がいいような気がする。
$ tla file-diff {arch}/=tagging-method
--- orig/{arch}/=tagging-method
+++ mod/{arch}/=tagging-method
@@ -153,7 +153,7 @@
# you can add them to the regexp for deliberately unrecognized files. Traversal
# does not descend into unrecognized directories.
-unrecognized ^(.*\.(o|a|so|core|so(\.[[:digit:]]+)*)|core)$
+precious ^(.*\.(o|a|so|core|so(\.[[:digit:]]+)*)|core)$
# Files which match the following pattern are treated as source files.
# Traversal _does_ descend into source directories:
ちょっと使えるようになってきたかな?
最近のツッコまれどころ