No Squeeze, costumava trabalhar apenas com:
mount --bind /src /dst
então
mount -o remount,ro /dst
Agora no Debian Wheezy você tem que fazer:
mount -o remount,ro,bind /dst
para se livrar da mensagem: resource busy.
Edit: Agora no Debian Jessie, o mount tenta ser inteligente e monta sub-diretórios, que se já montados com bind, ficam recursivos e acontecem coisas ruins :)
Há uma opção especial que força o util-linux a ser 'estúpido' novamente. Soluções é esta:
mount --bind --make-rprivate /sbin/ $prefix/sbin/
mount -o remount,ro,bind $prefix/sbin/
Depois você pode montar --bind $ prefix / sbin em outro diretório.
Na página do manual:
As operações de subárvore compartilhada. Desde o Linux 2.6.15, é possível marcar uma montagem e seus subconjuntos como compartilhados, privados, escravos ou desatáveis. Uma montagem compartilhada fornece a capacidade de criar espelhos dessa montagem, de forma que as montagens e desmontagens em qualquer um dos espelhos se propagem para o outro espelho. Uma montagem escrava recebe propagação de seu mestre, mas não vice-versa. Uma montagem privada não possui capacidade de propagação. Uma montagem desmontável é uma montagem privada que não pode ser clonada por meio de uma operação de ligação. A semântica detalhada está documentada no arquivo Documentation / filesystems / sharedsubtree.txt na árvore de origem do kernel. As operações suportadas são:
mount --make-shared mountpoint
mount --make-slave mountpoint
mount --make-private mountpoint
mount --make-unbindable mountpoint
Os comandos a seguir permitem alterar recursivamente o tipo de todas as montagens em um determinado ponto de montagem.
mount --make-rshared mountpoint
mount --make-rslave mountpoint
mount --make-rprivate mountpoint
mount --make-runbindable mountpoint
O mount (8) não lê o fstab (5) quando uma operação --make- * é solicitada. Todas as informações necessárias devem ser especificadas na linha de comando. Observe que o kernel do Linux não permite alterar vários sinalizadores de propagação com um único syscall de montagem (2) e os sinalizadores não podem ser misturados com outras opções de montagem.
Desde o util-linux 2.23, o comando mount permite usar vários sinalizadores de propagação juntos e também junto com outras operações de montagem. Esse recurso é EXPERIMENTAL. Os sinalizadores de propagação são aplicados por syscalls adicionais da montagem (2) quando as operações de montagem anteriores foram bem-sucedidas. Observe que este caso de uso não é atômico. É possível especificar os sinalizadores de propagação no fstab (5) como opções de montagem (privada, escrava, compartilhada, não-ligável, privada, rslave, rshared, executável).
bind
opção?man 2 mount
indica quebind
é necessário: "Desde o Linux 2.6.26, oMS_REMOUNT
sinalizador pode ser usadoMS_BIND
para modificar apenas os sinalizadores por ponto de montagem. Isso é particularmente útil para definir ou limpar a" leitura -only "flag em um ponto de montagem sem alterar o sistema de arquivos subjacente. A especificação de mountflags como:MS_REMOUNT | MS_BIND | MS_RDONLY
tornará o acesso por esse ponto de montagem somente leitura, sem afetar outros pontos de montagem." (Do Ubuntu 19.10, Linuxman-pages
release 5.0.2, de 02/08/2019)libmount
chamam amount()
função duas vezes durante uma única chamada do/usr/bin/mount
programa. Portanto, é a versãolibmount
, e não a versão do kernel, que determinará se/usr/bin/mount
são necessárias ou não duas invocações .