chrootに入るときは、誰かが探しに行くときにすべてが正しい場所にあることを保証するために、-bindではなく-rbindを使用して/sysと/devをマウントする必要がある場合があります。
マウントを解除すると問題が発生します。
単純なumountは常に失敗します。子供たちもマウントされているので、使用中のようです:
$ umount /mnt/chroot/sys
umount: /mnt/chroot/sys: device is busy.
(In some cases useful info about processes that use
the device is found by lsof(8) or fuser(1))
別の可能な解決策は、procからのマウントをリストし、次のようにそれぞれをアンマウントすることです。
$ grep /mnt/chroot/sys /proc/mounts | cut -f2 -d" " | sort -r | xargs umount
ただし、再帰マウントは実際にはmtabに登録されていないため、これも失敗します。
/mnt/chroot/sys/kernel/security is not mounted (according to mtab)
おそらく解決策は怠惰なumountを実行することですが、これは私にはかなり危険なようです。
私が逃したこれを行うためのより良い方法はありますか?
承認された回答:
これは私にとって正しく機能しました— https://unix.stackexchange.com/a/264488/4319:
mount --rbind /dev /mnt/test
mount --make-rslave /mnt/test
umount -R /mnt/test
最初の2つのコマンドを2つの別個のコマンドとして持つことが重要でした。-rbind
を組み合わせないでください。 および--make-rslave
マウントの1回の呼び出しで。
-make-rslave
なし 、動作は望ましくありませんでした(そして成功しませんでした):
-
umount -l </ code> 元の古いマウントポイントにも影響します
- および
umount-R
元の古いマウントポイントの下にあるビジーな(開いている)ファイルの影響を受けます。 (非常に予想外…)