Comment démonter un système de fichiers anciennement chrooté?

17

J'utilise un système de sauvetage en direct (similaire à un live-cd) pour résoudre certains problèmes avec mon serveur Debian, comme ça:

# 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/

Maintenant, je peux chrooter /mnt/rescue- mais après avoir terminé, comment démonter à nouveau le système de fichiers?

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))

Je suppose que c'est parce que dev, procet syssont liés au système de fichiers monté. Mais il n'est pas possible non plus de les démonter ...

Afr
la source
Que se passe-t-il lorsque vous essayez de démonter /mnt/rescue/proc? Êtes-vous sûr que vous n'avez toujours pas de processus en cours d'exécution chroot?
Mat
Essayez lsof /mnt/rescuede voir quel processus utilise ce dossier.
Martín Canaval
Vous devez quitter le shell chrooté avant de vous arrêter.
vonbrand

Réponses:

14
  1. Vous devez d'abord quitter la session chroot, généralement une simple opération exitsuffira:

    exit
    
  2. Ensuite, démontez TOUS les répertoires liés:

    umount /mnt/rescue/dev/
    umount /mnt/rescue/proc/
    umount /mnt/rescue/sys/
    
  3. Alors:

    umount /mnt/rescue
    

Dans le cas où vous craigniez que ce syncne soit pas utilisé ici, notez que cela n'a aucune influence sur la possibilité de démontage. Le démontage des vidages en attente écrit de toute façon (il le faut, car il n'y aurait nulle part où aller après le démontage). La présence d'un processus chrooté n'est pas pertinente (sauf qu'elle empêche le démontage). En fonctionnement normal du système, la synchronisation n'a aucun effet observable. la synchronisation ne fait la différence que si un périphérique est physiquement déconnecté sans avoir été démonté ou si le système se bloque lorsque le périphérique est monté.

John Siu
la source
1
merci, c'est tout ... mon erreur a essayé de démonter / sys / au lieu de / mnt / sauvetage / sys / ...
Afr
2
Le syncest totalement inutile.
Gilles 'SO- arrête d'être méchant'
@Gilles Pouvez-vous élaborer un peu plus pourquoi syncest-il inutile? Cela devient-il inutile dans le noyau actuel? Ou seulement dans ce cas (mode sauvetage)? Je l'ai mis juste au cas où il y aurait d'énormes écritures en attente sur le disque qui empêcheraient le démontage après avoir quitté chroot.
John Siu
4
@JohnSiu syncn'a aucune influence sur la possibilité de démontage. Le démontage des vidages en attente écrit de toute façon (il le faut, car il n'y aurait nulle part où aller après le démontage). La présence d'un processus chrooté n'est pas pertinente (sauf qu'elle empêche le démontage). En fonctionnement normal du système, syncn'a aucun effet observable. syncne fait la différence que si un périphérique est physiquement déconnecté sans avoir été démonté ou si le système se bloque pendant le montage du périphérique.
Gilles 'SO- arrête d'être méchant'
@ Gilles, je comprends votre point maintenant. Je vous remercie!!
John Siu
14

Exécutez la commande ci-dessous pour forcer et détacher le système de fichiers de la hiérarchie du système de fichiers et nettoyer toutes les références au système de fichiers dès qu'il n'est plus occupé.

umount -lf /mnt/rescue
shgnInc
la source
4

La raison pour laquelle vous obtenez la «cible est occupée». Le message est dû au fait que le point de montage ( /mnt/rescue) est ouvert dans un navigateur de fichiers ou dans une session de terminal, et également l'ordre du processus de dev/ptsdémontage (ici je veux dire devrait être démonté avant dev/)

Eh bien, pour réussir à démonter tous les fs là-bas:

  • Assurez-vous que le point de montage n'est pas ouvert dans un navigateur de fichiers!
  • Après avoir quitté chroot, changez le répertoire hors de chroot dir ( cd)!
  • Umount fs respectant la commande 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

Jonas
la source
2

Voici comment je fais avec la schrootcommande sur Ubuntu version 10.04 vers le haut:

# 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
la source
0

Quittez chroot. Dans le système hôte, la commande 'mount' montrera tout le chemin monté. (Inclut les chemins qui sont montés en chroot.) Par exemple:

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

Entrez ensuite dans l'environnement chroot. Dans l'environnement chroot, exécutez démonter pour démonter tous les chemins dans l'ordre. (Le chemin secondaire doit être démonté avant le chemin parent.)

unmount /proc/sys/fs/binfmt_misc
unmount /proc/sys
unmount /proc
Visage impassible
la source