Como desmontar um sistema de arquivos anteriormente chroot'd?

17

Estou usando um sistema live-rescue (semelhante a um live-cd) para corrigir alguns problemas com meu servidor Debian, assim:

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

Agora eu posso executar o chroot /mnt/rescue- mas, depois que terminar, como desmontar o sistema de arquivos novamente?

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

Eu acho que é porque dev, proce sysestão ligados ao sistema de arquivos montado. Mas também não é possível desmontá-los ...

Afr
fonte
O que acontece quando você tenta desmontar /mnt/rescue/proc? Tem certeza de que ainda não possui processos em execução chroot?
Mat
Tente lsof /mnt/rescuever qual processo está usando essa pasta.
Martín Canaval
Você precisa deixar o shell chroot antes de desligar.
precisa saber é o seguinte

Respostas:

14
  1. Você precisa primeiro sair da sessão chroot, geralmente uma simples exitação:

    exit
    
  2. Em seguida, desmonte TODOS os diretórios vinculados:

    umount /mnt/rescue/dev/
    umount /mnt/rescue/proc/
    umount /mnt/rescue/sys/
    
  3. Então:

    umount /mnt/rescue
    

Caso você esteja preocupado com o fato de syncnão ser usado aqui, observe que ele não influencia se é possível desmontar. De qualquer maneira, a desmontagem de descargas pendentes de gravação (é necessário, porque não haveria para onde ir depois da desmontagem). A presença de um processo chroot é irrelevante (exceto pelo fato de impedir a desmontagem). Na operação normal do sistema, a sincronização não tem efeito observável. A sincronização só faz diferença se um dispositivo estiver desconectado fisicamente sem ter sido desmontado ou se o sistema travar enquanto o dispositivo estiver montado.

John Siu
fonte
11
graças, é isso ... o meu erro foi tentar desmontar / sys / em vez de / mnt / rescue / sys / ...
Afr
2
O syncé totalmente inútil.
Gilles 'SO- stop be evil'
@Gilles Você pode elaborar um pouco mais por que syncé inútil? Torna-se inútil no kernel atual? Ou apenas neste caso (modo de recuperação)? Eu o coloco lá para o caso de existirem gravações pendentes enormes no disco que impedirão uma quantidade após sair do chroot.
precisa
4
O @JohnSiu syncnão influencia se é possível desmontar. De qualquer maneira, a desmontagem de descargas pendentes de gravação (é necessário, porque não haveria para onde ir depois da desmontagem). A presença de um processo chroot é irrelevante (exceto pelo fato de impedir a desmontagem). Em operação normal do sistema, syncnão tem nenhum efeito observável.syncsó faz diferença se um dispositivo estiver desconectado fisicamente sem ter sido desmontado ou se o sistema travar enquanto o dispositivo estiver montado.
Gilles 'SO- stop be evil'
@ Gilles eu entendo o seu ponto agora. Obrigado!!
John Siu
14

Execute o comando abaixo para forçar e desanexar o sistema de arquivos da hierarquia do sistema de arquivos e limpe todas as referências ao sistema de arquivos assim que ele não estiver mais ocupado.

umount -lf /mnt/rescue
shgnInc
fonte
4

A razão pela qual você recebe o 'alvo está ocupado'. A mensagem é porque o ponto de montagem ( /mnt/rescue) está aberto em um navegador de arquivos ou em uma sessão de terminal e também pela ordem do processo de desmontagem (aqui, quero dizer, dev/ptsdeve ser desmontado antes dev/)

Bem, para desmontar todos os fs com êxito:

  • Verifique se o ponto de montagem não está aberto em um navegador de arquivos!
  • Depois de sair do chroot, altere o diretório fora do chroot dir ( cd)!
  • Umount fs respeitando a ordem dev/pts => dev/ => proc/ => sys/:

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

Jonah
fonte
2

É assim que eu faço com o schrootcomando no Ubuntu versão 10.04 para cima:

# 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
biocibernético
fonte
0

Saia do chroot. No sistema host, o comando 'mount' mostrará todo o caminho montado. (Inclui os caminhos montados no chroot.) Por exemplo:

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

Então entre no ambiente chroot. No ambiente chroot, execute desmontar para desmontar todo o caminho em ordem. (O subcaminho deve ser desmontado antes do caminho pai.)

unmount /proc/sys/fs/binfmt_misc
unmount /proc/sys
unmount /proc
Expressão impassível
fonte