リモート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が機能したら、問題を解決する必要があります。
答え2
現在のインストールからファイルを復元する必要がある場合は、ホストにお問い合わせください。仮想マシンであると仮定すると、ディスクイメージを作成し、ホストを最初から再インストールし、古いディスクイメージを新しいファイルシステムにダンプするのに1日に約5分かかります。
何も必要ない場合は、再インストールしてください。仕事を強く押すと、ほぼ常により速いオプションになります。
答え3
/libへの/lib64シンボリックリンクを削除してもコンソールがまだ開いている場合は、次の手順を実行します。
/lib/ld-linux-x86-64.so.2 /bin/ln -s /lib /lib64
これにより、正常に再びコマンドを実行できるようになります。実際のldライブラリのパスを調整します。必要な他のコマンドを実行することもできます。コマンドの前にldライブラリーパス全体を追加するだけです。
答え4
物理サーバーにアクセスできない場合、できることはあまりありません。