Às vezes, ao entrar em um chroot, é necessário montar / sys e / dev usando -rbind em vez de -bind para garantir que tudo esteja no lugar certo quando alguém procura.
O problema surge quando desmontar.
Uma quantidade simples sempre falha; com as crianças sendo montadas também parece estar em uso:
$ 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))
Outra solução possível é listar as montagens de proc e desmontar cada uma das seguintes:
$ grep /mnt/chroot/sys /proc/mounts | cut -f2 -d" " | sort -r | xargs umount
No entanto, isso também falha porque as montagens recursivas não são realmente registradas no mtab:
/mnt/chroot/sys/kernel/security is not mounted (according to mtab)
Talvez a solução seja realizar uma quantidade preguiçosa, mas isso me parece bastante perigoso.
Existe uma maneira melhor de fazer isso que eu perdi?
mount
unmounting
natecornell
fonte
fonte
/mnt/chroot/sys/kernel/security
está montado nesse ponto? Qual é a saída degrep /sys/kernel/security /proc/mounts
?umount
não precisa que seu argumento seja listado/etc/mtab
. Se você passar-n
, ele não abrirá o arquivo.Respostas:
Isso funcionou corretamente para mim - /unix//a/264488/4319 :
Era importante ter os dois primeiros comandos como dois comandos separados: não combine
--rbind
e--make-rslave
em uma chamada de montagem.Sem
--make-rslave
, o comportamento era indesejado (e não obteve êxito):umount -l
também afetaria os antigos pontos de montagem originais,umount -R
seria afetado pelos arquivos ocupados (abertos) sob os pontos de montagem antigos originais. (Muito inesperado ...)fonte
--rbind
e--make-rslave
no mesmo montar invocação:mount --rbind --make-rslave /dev /mnt/test
O crédito é para Gilles por esta resposta; Gilles observou na pergunta comenta que a opção '-n' ignora o mtab e desmonta qualquer coisa listada em / proc / mounts.
Na página de manual:
Então, para responder à minha pergunta de como desvendar uma montagem --rbind, este é o comando completo que funcionou para mim:
Merci, Gilles!
fonte
mount --rbind / /mnt && umount -n /mnt/dev/shm
(ou pts), eu entendoumount: /mnt/dev/shm: target is busy
.umount -l /mnt
mata o sistema (por exemplo, sudo falha ao dizer que stdin não é um tty). Isso está em um sistema Fedora instalado. Eu acho que é um problema antigo da mina: unix.stackexchange.com/questions/269695/...Desde o util-linux v2.23 ( 25/04/2013 ), o
umount
comando suporta a-R, --recursive
opçãoAqui está o que a página de manual diz:
fonte
Obrigado por isso. Eu uso isso em meus scripts para desmontar toda a árvore de chroot: (Certifique-se de definir $ MNT de acordo)
fonte