Como posso substituir as opções padrão do kernel para mount?

3

Estou lutando com um programa que cria um sistema de arquivos em um arquivo e o monta como um dispositivo de loopback. O objetivo do programa é criar um clone do sistema de arquivos raiz e ele acha que está tudo bem, copiando também o UUID do dispositivo de bloco. No entanto, como estou usando o XFS, a montagem de loopback falha devido ao valor de UUID duplicado.

Eu posso montar manualmente usando mount -o nouuid , mas o programa recria o dispositivo e tenta montá-lo. Como não está usando fstab, não posso definir as opções de montagem padrão.

Existe uma maneira de dizer ao kernel quais são as opções padrão ao executar o mount e configurar a opção nouuid para que até mesmo um comando mount chamado sem especificar especificamente essa opção irá usá-lo?

    
por Caleb 19.08.2013 / 15:50

1 resposta

2

Para as opções genéricas aplicáveis a todos os sistemas de arquivos, aplica-se o kernel as opções de montagem que são passadas para a chamada mount do sistema como uma matriz de sinalizadores booleanos, não possui nenhum padrão interno.

Para o xfs, o kernel analisa as opções no topo da construção -em padrão ( todos os bits zero para sinalizadores booleanos).

Portanto, você precisa organizar as opções corretas para a chamada do sistema mount . Se o seu programa chamar o programa mount , você poderá escrever um wrapper que altere as opções na hora.

#!/bin/sh
if [ "$(ps -p $PPID -o comm=)" = "annoying-program" ]; then
  case "$* " in
    *" -t xfs "*) set -- -o nouuid "$@";;
  esac
fi
exec /sbin/mount "$@"

Coloque esse script antes de mount em seu PATH, ou se o programa codificar o caminho para mount , temporariamente mova mount para um local diferente e coloque o script em seu lugar.

Se o seu programa chamar a chamada do sistema mount diretamente, você poderá substituem a chamada via LD_PRELOAD .

    
por 20.08.2013 / 02:28