2010年12月19日日曜日

起動しなくなったLinuxをレスキューモードと、シングルモードで復活手順

職場で突然あるサーバにSSHログインできなくなった。


◆ 事象
サーバにSSHログイン不可



◆ 原因
共有ライブラリ"/lib/libdl-2.5.so"が削除されたため。
ログイン時にどう使われるかは分からないが、
とにかくそのライブラリは必要だったらしい。
※そもそもなぜ消えたのかというと、同僚がオペミスしていたことが判明した。



◆ 準備するもの
・OSインストール時に利用したOSがインストールされたCD(レスキューCDとして使う)
※今回のOSはRed Hat ES 5である

・消えた"libdl-2.5.so"を保存したUSBフロッピー
 ※USBフロッピーがなければUSBメモリでもなんでもいい



◆ 復旧方法
レスキューモードと、シングルモードで復旧させる

1. レスキューCDと"libdl-2.5.so"を保存したUSBフロッピーを準備

2. CDをサーバにセット、USBフロッピードライブをサーバへ接続

3. サーバの電源をOFF

4. 起動時にBIOS画面に移行(F9などを押す)
起動順としてHDDよりもCDを優先

5. boot:が表示されたら「linux rescue」と入力

6. 言語、キーボードを聞かれるのでそれぞれ「English」「jp106」を選択

7. Network設定を聞かれるが、使わないのでNo

8. マウント可能な領域が、/mnt/sysimageにマウントされるので、
/mnt/sysimage/etc/inittabの以下を書き換えてシングルブートにする
id:3:initdefault: → id:1:initdefault:

9. exitでサーバ再起動

10. 起動時にBIOS画面に移行(F9などを押す)
起動順としてCDよりHDDを優先

11. シングルブート

12. フロッピーディスクを以下のコマンドでマウント
mkdir /mnt/floppy
mount -t vfat /dev/sda /mnt/floppy

※外部ディスクを使っていれば、sdaは使われていることもありえる
その場合は、sdb、sdcなどになる

13. フロッピー内の正しい"libdl-2.5.so"を/lib/配下にmv
※cpだとsegmentation faultが発生した

14. /etc/inittabの以下を書き換えてマルチブート
id:1:initdefault:→id:3:initdefault:

15. 以下のコマンドでサーバ再起動
shutdown -r now


以上である