Wchodząc do chroota, czasami konieczne jest zamontowanie / sys i / dev przy użyciu opcji -rbind zamiast -bind, aby upewnić się, że wszystko jest na właściwym miejscu, gdy ktoś szuka.
Problem pojawia się podczas odmontowywania.
Prosty umount zawsze zawodzi; wydaje się, że z zamontowanymi dziećmi również są w użyciu:
$ 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))
Innym możliwym rozwiązaniem jest wypisanie montowań z proc i umountowanie każdego z nich:
$ grep /mnt/chroot/sys /proc/mounts | cut -f2 -d" " | sort -r | xargs umount
Jednak to również się nie udaje, ponieważ rekurencyjne podłączenia nie są w rzeczywistości zarejestrowane w mtab:
/mnt/chroot/sys/kernel/security is not mounted (according to mtab)
Być może rozwiązaniem jest wykonanie leniwego umounta, ale wydaje mi się to dość niebezpieczne.
Czy istnieje lepszy sposób na zrobienie tego, za czym tęskniłem?
mount
unmounting
natecornell
źródło
źródło
/mnt/chroot/sys/kernel/security
jest zamontowany w tym momencie? Jaka jest wydajnośćgrep /sys/kernel/security /proc/mounts
?umount
nie musi być wymieniony w argumencie/etc/mtab
. Jeśli go przejdziesz-n
, plik nie zostanie w ogóle otwarty.Odpowiedzi:
Działa to dla mnie poprawnie - /unix//a/264488/4319 :
To było ważne, aby mieć dwa pierwsze polecenia jako dwóch oddzielnych komend: nie łączyć
--rbind
i--make-rslave
w jednym wezwaniem wierzchowca.Bez
--make-rslave
tego zachowanie było niepożądane (i nie powiodło się):umount -l
wpłynie również na oryginalne stare punkty montowania,umount -R
będą miały wpływ na zajęte (otwarte) pliki w oryginalnych starych punktach montowania. (Bardzo nieoczekiwany ...)źródło
--rbind
i używać--make-rslave
tego samego wywołania mounta:mount --rbind --make-rslave /dev /mnt/test
Podziękowania należą się Gillesowi za tę odpowiedź; Gilles zauważył w komentarzach do pytania, że przełącznik „-n” ignoruje mtab i odmontowuje wszystko wymienione w / proc / mounts.
Z strony podręcznika:
Aby odpowiedzieć na moje pytanie, jak rozwikłać wierzchowca --rbind, jest to pełne polecenie, które zadziałało dla mnie:
Merci, Gilles!
źródło
mount --rbind / /mnt && umount -n /mnt/dev/shm
(lub pts), rozumiemumount: /mnt/dev/shm: target is busy
.umount -l /mnt
zabija system (np. sudo nie powie, że stdin nie jest tty). To jest na zainstalowanym systemie Fedora. Myślę, że to mój stary problem: unix.stackexchange.com/questions/269695/…Od wersji util-linux v2.23 (25 kwietnia 2013 r.)
umount
Polecenie obsługuje tę-R, --recursive
opcję.Oto, co mówi strona podręcznika:
źródło
Dziękuję za to. Używam tego w moich skryptach, aby odmontować całe drzewo chroot: (Pamiętaj, aby odpowiednio ustawić $ MNT)
źródło