web-dev-qa-db-ja.com

再起動せずにrm-rf / proc / sys / / dev / pts / devから回復しますか?

再起動で修正できるため、深刻な問題ではありませんが、/proc/sysでファイル(おそらくすべてではありませんが、できるだけ多く)を復元する方法があるかどうか知りたいです。 、/dev/ptsおよび/dev

でマウントされたディレクトリでchrootディレクトリを削除するときに、それらを部分的に削除しました

mount -t proc proc [path/to/chroot]/proc
mount -t sysfs sys [path/to/chroot]/sys
mount --bind /dev/[path/to/chroot]/dev
mount -t devpts /dev/path [path/to/chroot]/dev/pts

ubuntu 16.10AMD64で。理解できるファイルの削除が拒否されたため、一部のファイルの削除に失敗しました(エラーメッセージを記録しませんでした)。ソリューションはすべてのDebianベースのシステムに適用されると思います。

chrootを終了した後、次のようなものが表示されます。

$ ls -bash: /dev/null: Keine Berechtigung
bash: _upvars: `-a2': invalid number specifier
-bash: /dev/null: Keine Berechtigung
bash: _upvars: `-a0': invalid number specifier

オートコンプリート中 TablsLANGUAGE=enをエクスポートした後)。

2
Karl Richter

/procまたは/sysからほとんどのファイルを実際に削除することはできません。これらはカーネルへのインターフェイスであり、ディスクに保存されているものではありません。ほとんどのカーネルインターフェイスは、カーネルが提供したいものであり、ユーザーランドの影響を受けることはありません。

例外が発生する可能性があることに注意してください。これは珍しいことですが、ドライバーがカーネルファイルシステムからのファイルの削除に意味を割り当てる可能性があります。これは悪名高い evivarfs の場合であり、通常、UEFIを備えたシステムの/sys/firmware/efi/efivarsの下にマウントされます。そこでファイルを削除すると、ブート構成を削除してコンピューターをブリックする可能性があります。そして systemdはそれを読み取り/書き込みでマウントするために使用されました

カーネル内のファイルシステム自体を復元するには、それらを再マウントするだけです。実際、これらのファイルのほとんどは単純に削除できず、何かがマウントされている限りマウントポイントを削除できないため、rm -rf /proc /sysはそれらを削除しませんでした。しかし、どういうわけか/proc/sysが存在しなくなった場合は、ディレクトリを再作成してマウントすることができます。

mkdir /proc /sys
mount -t proc proc /proc
mount -t sys sysfs /sys

もちろん、ルートシェルが必要です。 /proc/sysがなくてもrootとしてログインできる場合がありますが、/devがないとログインできない可能性があります。

/devに関しては、通常udevによって入力されます。 udevに再入力するように指示できます。

mkdir /dev
mount -t devtmpfs -o mode=0755 udev /dev
mount -t devpts devpts /dev/pts
udevadm trigger