職場で突然あるサーバに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
以上である