Saat memasuki chroot terkadang diperlukan untuk me-mount /sys dan /dev menggunakan -rbind alih-alih -bind untuk memastikan semuanya berada di tempat yang tepat ketika seseorang mencari.
Masalah muncul saat melepas.
Sebuah umount sederhana selalu gagal; dengan anak-anak sedang dipasang juga tampaknya sedang digunakan:
$ 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))
Solusi lain yang mungkin adalah membuat daftar mount dari proc, dan umount masing-masing seperti itu:
$ grep /mnt/chroot/sys /proc/mounts | cut -f2 -d" " | sort -r | xargs umount
Namun ini juga gagal karena mount rekursif sebenarnya tidak terdaftar di mtab:
/mnt/chroot/sys/kernel/security is not mounted (according to mtab)
Mungkin solusinya adalah melakukan umount yang malas, tetapi ini tampaknya cukup berbahaya bagi saya.
Apakah ada cara yang lebih baik untuk melakukan ini yang saya lewatkan?
Jawaban yang Diterima:
Ini bekerja untuk saya dengan benar — https://unix.stackexchange.com/a/264488/4319:
mount --rbind /dev /mnt/test
mount --make-rslave /mnt/test
umount -R /mnt/test
Penting untuk memiliki dua perintah pertama sebagai dua perintah yang terpisah:jangan gabungkan --rbind
dan --make-rslave
dalam satu pemanggilan mount.
Tanpa --make-rslave
, perilaku tersebut tidak diinginkan (dan tidak berhasil):
umount -l
juga akan memengaruhi titik pemasangan lama yang asli,- dan
umount -R
akan terpengaruh oleh file sibuk (terbuka) di bawah titik mount lama yang asli. (Sangat tidak terduga…)