.profileをいじったら起動しなくなった件と、復旧までの顛末
原因は.profileにDropboxデーモンを設定したこと
DropboxはLinux向けにローカルのディレクトリをDropboxと同期させるためのツールを配布している。
「コマンドラインからインストールする」の手順でインストールしたツールは、Dropboxデーモンを立ち上げている間、勝手に同期してくれるというものだった。一通り動作確認してから、ログイン時に立ち上がるようにしておこうと思って、「~/.profile」にデーモン起動用のコマンドを書き足した。
~/.dropbox-dist/dropboxd
ログインしなおしたところ、壁紙まで表示されたところで停止して、起動しなくなってしまった。
原因はとても単純で、これデーモンプロセスだから。たぶんバックグラウンドジョブして起動させる必要がある。端末でそのまま実行すればCtrl+Cで停止させるまでプロンプトに戻らなくなる。ログイン時に.profileが読み込まれるが、Dropboxデーモン実行の後に呼ばれるはずものが、すべて実行されなくなっている状態。やってしまいましたな。
他ユーザからのログインを試みる、がダメ
起動しなくなってすぐに原因は分かっていたので、他のユーザからログインできないか考えた。他のユーザで入れれば、「su」で問題のユーザになって、.profileを修正できるんじゃないかなと。しかし、他のユーザは一切作っていなかった。guestユーザがあったが、「su」コマンドは使えないらしい。
同じLANの他の端末からログインを試みる
他のパソコンでログインできればなんとかなるかも、と思ってPCを引っ張り出して試したが、そもそもリモート操作するためのtelnetもSSHサーバも稼働させていなかったので、ダメだった。まあリモートでログインしたとしても、その時点で.profileは読み込まれrので、同じ状態に陥っていたかなと思う。
Dropboxはオンラインストレージなんだから、ネットから切り離せばなんとかなる?
Dropboxと同期するためのソフトウェアなので、ネットにつながっていなければあっさりエラー吐いて停止してくれるんじゃないかと期待して、LANを抜いてログインしてみた。が、結果はNG。まあ、ネット接続できないたびに落ちるデーモンプロセスじゃ、外出先で使う人には不便でしょうがないよね、当たり前だ。
シングルユーザモードでの解決を試みる
「パスワードを忘れたら、慌てず騒がずシングルユーザモード」という対処方法を覚えていたので、調べてみた。
UbuntuTips/Others/RecoveryMode - Ubuntu Japanese Wiki
起動時にShiftキーを押してGRUB2の選択画面を呼び出して、リカバリーモードを選択すれば良い。とのことだったが、タイミングがシビアなのかわからないが、なかなか表示されなくて焦った。リカバリーメニューからrootで、「パスワードなし」でログインすることができる。Ubuntuのrootユーザにはパスワードが設定されていないから。rootのパスワードを設定させるLinuxの場合はここでパスワードを求められるのかも。
とりあえず、rootでログインできるなら一安心。「/home/username/.profile」を開いて、問題になった行を削除して保存しようとしたが、できない。「:w!」としたり「:set noro」などいろいろ試したがダメ。画面をよくみてみると、「Read-Only」でマウントされているせいらしかった。
読み書きできるようにマウントしなおして解決
少し調べたら、読み書きできるようにマウントし直す方法が見つかった。
http://www.inkytea.com/junk-info/linux-%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6%E3%81%82%E3%82%8C%E3%81%93%E3%82%8C/linux-singleusermode%E3%81%A7%E3%81%AEroot%E3%81%B8%E3%81%AE%E4%BF%AE%E6%AD%A3/
以下のコマンドで「/」以下を全て読み書きできるようにマウントし直すことができた。
mount -o remount,rw /
このあと、問題の.profileを修正して無事に起動できるようになった。よかったよかった。これからは不用意なことしないように気を付けます。