Jak odmontować wcześniejszy system plików chroot?


17

Korzystam z systemu ratunkowego na żywo (podobnego do live-cd), aby naprawić niektóre problemy z moim serwerem Debian, takie jak:

# mkdir -p /mnt/rescue
# mount /dev/md2 /mnt/rescue
# mount --bind /dev /mnt/rescue/dev/
# mount --bind /proc /mnt/rescue/proc/
# mount --bind /sys /mnt/rescue/sys/

Teraz mogę chrootować /mnt/rescue- ale kiedy skończę, jak ponownie odmontować system plików?

umount: /mnt/rescue: target is busy.
    (In some cases useful info about processes that use
     the device is found by lsof(8) or fuser(1))

Myślę, że to dlatego dev, proci syssą związane z zamontowanym systemem plików. Ale nie można ich odmontować ...


Co się stanie, gdy spróbujesz odmontować /mnt/rescue/proc? Czy na pewno nie masz uruchomionych procesów chroot?
Mat.

Spróbuj lsof /mnt/rescuezobaczyć, jaki proces korzysta z tego folderu.
Martín Canaval

Przed zamknięciem musisz opuścić chrootowaną skorupę.
vonbrand

Odpowiedzi:


15
  1. Musisz najpierw opuścić sesję chroot, zwykle exitwystarczy zrobić:

    exit
    
  2. Następnie umount WSZYSTKIE powiązane katalogi:

    umount /mnt/rescue/dev/
    umount /mnt/rescue/proc/
    umount /mnt/rescue/sys/
    
  3. Następnie:

    umount /mnt/rescue
    

Jeśli martwisz się, że syncnie zostanie tutaj użyty, pamiętaj, że nie ma to wpływu na możliwość odmontowania. Odmontowanie kas i tak jest w trakcie zapisów (musi, bo nie byłoby dla nich miejsca po odmontowaniu). Obecność procesu chrootowanego jest nieistotna (z wyjątkiem tego, że zapobiega odmontowaniu). W normalnej pracy systemu synchronizacja nie ma zauważalnego wpływu. Synchronizacja robi różnicę tylko wtedy, gdy urządzenie zostanie fizycznie odłączone bez odmontowania lub gdy system ulegnie awarii podczas montowania urządzenia.


1
dzięki, to wszystko ... mój błąd polegał na próbie odmontowania / sys / zamiast / mnt / rescue / sys / ...
Afr

2
syncJest całkowicie bezużyteczne.
Gilles „SO- przestań być zły”,

@Gilles Czy możesz bardziej szczegółowo opracować, dlaczego syncjest bezużyteczny? Czy staje się bezużyteczny w obecnym jądrze? Czy tylko w tym przypadku (tryb ratunkowy)? Umieściłem go tam na wypadek, gdyby na dysku czekało ogromne zapisanie, które zapobiegnie umountowi po wyjściu z chroota.
John Siu

4
@JohnSiu syncnie ma wpływu na to, czy odmontowanie jest możliwe. Odmontowanie kas i tak jest w trakcie zapisów (musi, bo nie byłoby dla nich miejsca po odmontowaniu). Obecność procesu chrootowanego jest nieistotna (z wyjątkiem tego, że zapobiega odmontowaniu). W normalnej pracy systemu syncnie ma zauważalnego wpływu. syncrobi różnicę tylko wtedy, gdy urządzenie zostanie fizycznie odłączone bez odmontowania lub gdy system ulegnie awarii podczas montażu urządzenia.
Gilles „SO- przestań być zły”

@Gilles Teraz rozumiem twój punkt widzenia. Dziękuję Ci!!
John Siu,

14

Wykonaj poniższe polecenie, aby wymusić i odłączyć system plików od hierarchii systemu plików, i wyczyść wszystkie odniesienia do systemu plików, gdy tylko nie będzie on już zajęty.

umount -lf /mnt/rescue

4

Powód, dla którego otrzymujesz „cel jest zajęty”. wiadomość jest spowodowana tym, że mount point ( /mnt/rescue) jest otwarty w przeglądarce plików lub w sesji terminalowej, a także kolejność odmontowywania (tutaj mam na myśli, że dev/ptspowinien zostać zamontowany wcześniej dev/)

Cóż, aby pomyślnie zamontować wszystkie fs tam:

  • Upewnij się, że punkt instalacji nie jest otwarty w przeglądarce plików!
  • Po wyjściu z chroot zmień katalog z chroot dir ( cd)!
  • Umount fs przestrzegający kolejności dev/pts => dev/ => proc/ => sys/:

    sudo umount / mnt / rescue / dev / pts
    sudo umount / mnt / rescue / dev
    sudo umount / mnt / rescue / proc
    sudo umount / mnt / rescue / sys
    sudo umount / mnt / rescue


2

Tak robię z schrootpoleceniem w wersji Ubuntu 10.04 w górę:

# list all sessions:
schroot --list --all-sessions
# if the above command does not work, just type `mount`. The bind mount
# points with something like this in the mount path is the session name you want to get:
precise-a4aac8e0-663c-4fec-8fb2-16e4b06557e3 (<chroot_name>-<id>)

# now run this to properly end the session:
schroot -e -c precise-ca6c72e4-0e9f-4721-8a0e-cca359e2c2fd

0

Wyjdź z chroot. W systemie hosta polecenie „mount” pokaże całą zamontowaną ścieżkę. (Obejmuje ścieżki zamontowane w chroot.) Na przykład:

binfmt_misc on /home/user/projects/jsroot/proc/sys/fs/binfmt_misc

Następnie wejdź do środowiska chroot. W środowisku chroot uruchom odmontuj, aby odmontować wszystkie ścieżki w kolejności. (Ścieżka podrzędna musi być odmontowana przed ścieżką nadrzędną).

unmount /proc/sys/fs/binfmt_misc
unmount /proc/sys
unmount /proc
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.