リモートUbuntuサーバーにrootとしてログインし、ほぼすべてのバイナリを削除している間に誤ってこれを行いましたrm /*
。
この混乱した状況を何とか解決する方法はありますか?または、データセンターに電話してフォーマットについて問い合わせる必要がありますか?
ベストアンサー1
rm /*
ごく少量しか取り除かなければなりません。再帰的に何でも削除できるフラグはありません-r
。このフラグがないと、ディレクトリは削除されません(そしてディレクトリが削除されても空のディレクトリのみが削除されます)。この回答は、あなたが実行していないという仮定に基づいていますrm -rf /*
。
ルートファイルシステムの唯一のファイルは、カーネルとinitrdへのシンボリックリンク(私が見ているUbuntuシステムには存在しませんが)または/lib64
64ビットシステムのシンボリックリンクです。
問題は、単にシンボリック/lib64 -> /lib
リンクが削除されたためです。しかし、ほとんどすべてのプログラムがこのシンボリックリンクに依存しているため、これは非常に迷惑です。
$ ldd /bin/bash
...
/lib64/ld-linux-x86-64.so.2 (0x00007f8946ab7000)
これはld-linux
動的ローダーであり、使用できない場合は動的実行可能ファイルを実行できません。これにより、ログインが非常に困難になったり、まったくログインできなくなる可能性があります。
たぶん救世主がいるかもしれませんbusybox
。次のコマンドを実行して、次のことを確認してください。
$ ldd /bin/busybox
not a dynamic executable
この場合、ビジボックスが実行可能でなければなりませんが、どのように実行するかが問題です。
ブートローダプロンプトにアクセスできる場合は、bootを使用できます。init=/bin/static-sh
ここで、static-shはシンボリックリンクですbusybox
(/bin/static-sh
存在することを確認してください。私のシステムにはありますが、標準のUbuntuではありません)。 このエラー使用可能であることを示します。 )
ルートシェルがある場合は、/lib64
シンボリックリンクを再作成できます。まず、読み取り/書き込みでルートファイルシステムを再マウントする必要があるかもしれません。 busyboxにはこれらのツールが組み込まれている必要があり、次のように実行できます。
# busybox mount -o remount,rw /
# busybox ln -s /lib /lib64
# /bin/bash
bash#
Bashが機能したら、問題を解決する必要があります。