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ć ...

Afr
źródło
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.

John Siu
źródło
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
shgnInc
źródło
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

Jonasz
źródło
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
biocyberman
źródło
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
Pokerowa twarz
źródło