Estou tentando instalar o nfs-utils (e, portanto, todas as suas dependências) em uma VM RHEL6.5 KVM sem estado. A VM está configurada para ter uma raiz somente leitura por meio do /etc/sysconfig/readonly-root
arquivo, magia do Linux que não implementei e a opção "Readonly" na GUI de configurações da VM. A instalação é feita usando virt-customize -a image.img --run install_script.sh
. O script usa um documento aqui para construir o arquivo .repo (que vai para o cofre do CentOS para 6.5), então eu uso yum install -y nfs-utils
para fazer a instalação real. Adotei essa abordagem porque parece mais fácil, mais limpa e menos propensa a erros do que fazer a VM inicializar no modo de leitura/gravação, instalar, limpar e desligar. Além disso, não consigo descobrir como fazê-lo inicializar em leitura/gravação.
A saída do virt-customize
mostrou que os pacotes foram instalados com sucesso. A única falha foi a remoção do .repo devido a um erro de digitação.
Após esta instalação, inicializei a VM e tentei fazer login normalmente. Minhas tentativas agora estão sendo rejeitadas porque Login incorrect
.
Verifiquei virt-cat
para ter certeza de que o shell de login do usuário foi definido corretamente e a senha criptografada /etc/shadow
parece a mesma que a original.
Minha abordagem original era criar uma imagem ISO contendo todas as dependências e nfs-utils e anexá-la à VM e ter um script para lidar com a instalação. O mesmo problema ocorreu então. Reduzi a origem do problema à instalação de um dos pacotes NFS: ou nfs-utils
ou nfs-utils-lib
(um dos dois, não me lembro) e o rpcbind
pacote. Quando um desses pacotes é instalado e a VM é inicializada, o login é interrompido. Eu estou supondo que este é o mesmo problema ocorrendo agora.
A imagem que estou usando para a VM é cp
-ed da imagem da VM original, pois este é um teste para descobrir como fazer a instalação corretamente.
Sim, estou digitando a senha corretamente. Já tentei alterar a senha do usuário (via libguestfs
ferramentas), mas ainda não consigo fazer login, então não tenho certeza se a alteração falhou (o código de retorno dos comandos indica sucesso) ou o mesmo problema está em vigor .
Pergunta:
- O problema de login pode ser depurado e corrigido? Se sim, como?
- Como faço a instalação corretamente para que o login não fique bloqueado? Claramente desta forma não funciona.
A questão central aqui era o SELinux. Existem várias maneiras de instalar software em uma VM, mas elas se resumem à VM sendo inicializada ou não inicializada. Este último é o que estraga tudo, e é como eu fiz a instalação no post.
O melhor que posso imaginar, quando a VM é desligada e o software é instalado, por exemplo, através do comando na pergunta, o SELinux percebe que algo mudou e não sabe o que aconteceu quando a VM é inicializada após a instalação e bloqueia tudo . Permitir que o SELinux reetiquete corrige o problema, mas quebrou muitas outras coisas para mim. Não há, efetivamente, nenhuma maneira de script de uma instalação quando o sistema está offline porque você provavelmente vai se deparar com isso. Observe que esse problema pode ser apenas com VMs RHEL6.5 e sua versão do SELinux (estamos bloqueados por versão para RHEL6.5).
A maneira correta de fazer uma instalação para uma VM como essa é inicializá-la no modo de leitura/gravação e realizar a instalação montando um ISO com os RPMs necessários ou usando um gerenciador de pacotes. Enquanto inicializado, o SELinux estará ciente da instalação e tudo ficará bem e elegante.