事の発端
自作のマウントスクリプトは USB デバイスのネットワーク共有を目的としているため、マウント処理だけでなく Samba の制御も行っている。ホットプラグとマウント周りのコードについてはおおよそ動作確認が取れたが、Samba に関しては restart オプション時の挙動に不明瞭な点があり、もう少し調査が必要となりそうである(具体的にはデーモンが起動しなかったり、重複して起動していたりする)。そこで Samba の起動スクリプトに手を加え、何処に問題があるのかを探ることにした。しかしまさかこれがトラブルの始まりになるとはねぇ・・・。
問題発生
早速リブートして Samba のログを確認しようとしたところ、何故か肝心の Telnet が繋がらない。どうやら修正したスクリプトに記述ミスがあったらしい(不精して動作確認を怠っていた)。マウントスクリプトの作成時にも度々遭遇した現象だが、そのときは一旦すべての USB デバイスを外してから起動することで事無きを得ていた(マウントスクリプトそのものが呼ばれなくなるためエラーが発生しない)。しかし今回修正したのは Samba の起動スクリプトであり、同じ手は通用しなかった。さてどうしたものか。Telnet が繋がらないことには何も始まらない。再び箱を開け、Ubuntu にマウントするしかないのか。できればそんな面倒な作業は避けたいところ。しかし他に解決策が見つからなければ週末にでも挑戦するしかないだろう。
頭を冷やす
何度か
再起動を繰り返したが Telnet は一向に繋がる気配を見せない。出掛ける時間が近づいてきたこともあり、取り敢えずはシャワーを浴びることにした。自問自答を繰り返しながら頭を冷やす・・・。Samba が落ちるだけでネットワークそのものが無効になるなんてことはあるのだろうか。しかし右も左もわからない
Linux だけになんともいえない。Telnet デーモンは起動スクリプトの実行順でいえばかなり最初のほうだったはず。だとしたら IP アドレスはそれ以前に DHCP サーバから付与されているだろう。何故繋がらない・・・。
シャワー効果
さっぱりしたことで少しは頭の回転が良くなったのだろうか。ふとある事実に思い当たる。そういえば PuTTY の設定では IP アドレスではなくマシン名を指定していたような・・・。確か
LinkStation のアドレスを固定させていないのでそうした記憶がある。調べてみると案の定だった。マシン名からどうやって IP アドレスがわかるんだっけ。DHCP も DNS も関係ないし・・・。そうだ、ブロードキャストだ。対象マシンの自己申告性だったよな。あれっ? これってよく考えたら
Windows ネットワークの機能じゃ・・・。LinkStation の場合、この機能を提供しているのはもちろん Samba だ。つまりは Samba が落ちていたらマシン名、すなわち NetBIOS 名の解決はできない。そりゃあ Telnet が繋がるわけないよなぁ。マシン名でアクセスを試みてホストが見つからないのは当然のことであった(苦笑)。
仕切り直し
LAN 上のマシンを適当にスキャンして LinkStation の IP アドレスに当たりを付ける。早速そのアドレスに PuTTY でアクセスしてみると何事もなかったかのように繋がった。万事解決である。わかってしまえば何のことはない凡ミスだったが、ハマっている間はそれなりに真剣だった。ちなみに Samba の起動スクリプトのほうはシングルクォートされた文字列内でアポストロフィを使っていたのが原因。こちらも恥ずかしいくらいの凡ミスである。本来の目的である Samba の挙動に関しては焦ることはない、ゆっくり調べていこう。
最終更新:2008年09月12日 06:42