Top > blog > 2012-10-12

広告

久々の大トラブル つづき

continue form: [久々の大トラブル]

/etc/rc*.d/の中身が無くなったことにより、ほとんど何もできない状況になってしまった。

再インストールかと考えたけど、インストールしてから、またすべての設定をやり直すのはキツイし、今のデータのバックアップを取るのも難儀しそうなのでなんとか復旧させることにした。

まず、DebianのインストールCDで立ちあげて、オプションからレスキューモードに入った。
これで、ネットはつながるようになるし、ディスクもちゃんとマウントされた。

で、/etc/rc*.d/の中身をどうやって復活させるか。
/etc/rc*.d/の中身は/etc/init.d/の中のスクリプトのシンボリックリンクなので、/etc/init.d/から生成すればいい。
そこで、移動していた/etc/init.d/の中身を元にもどし、/etc/rc*.d/の中身を生成させる。

/etc/rc*.d/の中身を生成させるには、単純には「initscripts」を設定しなおせばいいみたいだったので

# dpkg-reconfigure initscripts

とやる。
でも、やっぱり、元のinsservのエラーがでる。
かといってどのスクリプトが問題なのか良くわからなかった。

エラーメッセージの上の方を見ると

There is a loop between service ***

というメッセージが出ている。はじめこれはエラーではないと思っていた。
でも、他に手もなかったので、このメッセージを頼りに問題のスクリプトを探してみた。
どうも「checkfs」というのが絡んでいるぽかった。

そのスクリプトだけ、別のディレクトリに移したら、

# dpkg-reconfigure initscripts

がやっと通った。
/etc/rc*.d/の中身も復活している。
で、再起動したら復活!

でも、「checkfs」に絡んでいるのかifupといくつかのものはちゃんと動かない。
ifupに関しては前の記事と同じようにすれば問題は解決されたので、とりあえず今回はおしまい。

Category: [トラブル][update] - 15:47:12

久々の大トラブル

サーバにしているDebianをapt-get upgradeしたら、うまくアップデートできなかった

apt-get -f install

しても問題は解決されない。

ifupやinitscriptsなど重要な物がうまくアップデートできなかった。

再起動したら直るかもと再起動したのがそもそもの始まり。
ifupがうまく設定できていなかったらしく、「/run/network/ifstate」がないと言われエラー。
ネットも繋がらなくなった。

この問題はGit & ぎったん さんの記事を参考に「/run/network/ifstate」を作り、中に

lo=lo
eth0=eth0

と書き込み、

# ifup eth0

とやったらネットにつながるようになった。

そもそもifupやinitscriptがうまく設定できないのは、insservがエラーを出しているかららしく、

insserv rejected the script header
update-rc.d: error insserv rejected the script header

というエラーメッセージが出ていた。

どうもこれらのエラーは /etc/init.d/にあるスクリプトに問題があるらしい。
でも、どのスクリプトに問題があるかわからなかったので、一つ一つ、調べていこうと思ったら結構な数があり、途中で面倒になってしまった。
そこで、すべてのスクリプトを一旦、別ディレクトリに移動して、 /etc/init.d/の中を空にしてみた。
すると、上のinsservのエラーは出なくなり、apt-get -f installも通ったみたいだった。

Debianを良くご存知の方ならこれが致命的な問題を起こすことをご存知だと思う。
僕は長く使っているのにそのことを知らなかった。

何が起こったか

立ち上げなおしたら、/etc/rc*.d/ の中身がすべてなくなっていたのだ。
つまり、シングルユーザーモードで立ち上げたみたいな状況になってしまった。

つづく

Category: [トラブル][update] - 15:32:54


広告

リロード   差分   ホーム 一覧 検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS
Last-modified: Fri, 12 Oct 2012 15:32:54 JST (4661d)