Saat memasukkan chroot terkadang diperlukan untuk me-mount / sys dan / dev menggunakan -rbind bukan -bind untuk memastikan semuanya ada di tempat yang benar ketika seseorang mencari.
Masalahnya muncul saat melepas pemasangan.
Umount sederhana selalu gagal; dengan anak-anak yang 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 dengan mendaftar mount dari proc, dan umount masing-masing seperti:
$ grep /mnt/chroot/sys /proc/mounts | cut -f2 -d" " | sort -r | xargs umount
Namun ini gagal juga karena tunggangan 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?
mount
unmounting
natecornell
sumber
sumber
/mnt/chroot/sys/kernel/security
sudah terpasang pada titik itu? Apa output darigrep /sys/kernel/security /proc/mounts
?umount
tidak perlu argumennya didaftar di/etc/mtab
. Jika Anda lulus-n
, itu tidak akan membuka file sama sekali.Jawaban:
Ini berhasil bagi saya dengan benar - /unix//a/264488/4319 :
Penting untuk memiliki dua perintah pertama sebagai dua perintah terpisah: jangan gabungkan
--rbind
dan--make-rslave
dalam satu pemanggilan mount.Tanpa
--make-rslave
, perilaku itu tidak diinginkan (dan tidak berhasil):umount -l
akan mempengaruhi titik mount lama asli, juga,umount -R
akan dipengaruhi oleh file sibuk (terbuka) di bawah mountpoints lama yang asli. (Sangat tak terduga ...)sumber
--rbind
dan--make-rslave
dalam permintaan mount yang sama:mount --rbind --make-rslave /dev /mnt/test
Penghargaan untuk Gilles atas jawaban ini; Gilles mencatat dalam komentar pertanyaan bahwa saklar '-n' mengabaikan mtab dan meng-unmount apa pun yang terdaftar di / proc / mounts.
Dari halaman manual:
Jadi untuk menjawab pertanyaan saya tentang cara mengurai mount --rbind, ini adalah perintah lengkap yang bekerja untuk saya:
Merci, Gilles!
sumber
mount --rbind / /mnt && umount -n /mnt/dev/shm
(atau poin), saya mengertiumount: /mnt/dev/shm: target is busy
.umount -l /mnt
membunuh sistem (misalnya sudo gagal mengatakan stdin bukan tty). Ini pada sistem Fedora yang diinstal. Saya kira ini adalah masalah lama saya: unix.stackexchange.com/questions/269695/…Sejak util-linux v2.23 (25-Apr-2013)
umount
perintah mendukung-R, --recursive
opsi.Inilah yang dikatakan halaman manual:
sumber
Terima kasih untuk itu. Saya menggunakan ini dalam skrip untuk meng-unmount seluruh chroot-tree: (Pastikan untuk menyetel $ MNT)
sumber