initramfs "HostOnly" no Fedora 19
No Fedora 19, foi implementado o modo "HostOnly" no Dracut, o gerador de initramfs:
http://fedoraproject.org/wiki/Features/DracutHostOnly
Até o Fedora 18, os initramfs (arquivos
O novo recurso é problemático, contudo, para o cenário de aplicar uma mesma imagem em várias máquinas com hardware diferente.
Para voltar para um initramfs genérico, fazemos o seguinte antes da criação da imagem:
A partir do Fedora 20, os pacotes mudaram:
No F20, ainda são postas opções de boot que configuram a fonte no console (quando iniciar em modo texto) e a língua. Tal comportamento é resquício de versões anteriores da distribuição, ver RHBZ#1010454 e RHBZ#1074113. O systemd aplica essas configurações e as opções de boot têm prioridade frente ao que foi definido nos arquivos. No modo "Generic" (antes "No-HostOnly"), o Dracut não copia para o initramfs os arquivos
Desabilitar a entrada "Rescue" é opcional, porém eu não vejo utilidade nela e mando-a embora.
Uma segunda alternativa, se você quiser manter o recurso ativo nas máquinas alvo, seria, antes de criar a imagem, rodar:
Assim, o initramfs do atual kernel em uso será substituído (temporariamente até uma próxima atualização) por um genérico.
Ainda sobre o assunto, no modo "HostOnly", o Dracut copia
No post anterior, faltou comentar uma possibilidade, que é haver um
http://fedoraproject.org/wiki/Features/DracutHostOnly
Até o Fedora 18, os initramfs (arquivos
*.img
em /boot
) criados eram genéricos, contendo módulos para hardware variado. Com "HostOnly", passam a ser criados especificamente para o hardware em uso, tornado-se bem menores (ex. de 17 MiB para 7 MiB). Ao mesmo tempo, um initramfs genérico "Rescue" é criado uma vez durante a instalação, para casos de emergência, como troca de hardware.O novo recurso é problemático, contudo, para o cenário de aplicar uma mesma imagem em várias máquinas com hardware diferente.
Para voltar para um initramfs genérico, fazemos o seguinte antes da criação da imagem:
# yum -y install dracut-nohostonly dracut-norescue # rm -f /boot/*rescue* # dracut -f --regenerate-all # grub2-mkconfig -o /boot/grub2/grub.cfg
A partir do Fedora 20, os pacotes mudaram:
# yum -y remove dracut-config-rescue # yum -y install dracut-config-generic # rm -f /boot/*rescue* # dracut -f --regenerate-all # grub2-mkconfig -o /boot/grub2/grub.cfg
No F20, ainda são postas opções de boot que configuram a fonte no console (quando iniciar em modo texto) e a língua. Tal comportamento é resquício de versões anteriores da distribuição, ver RHBZ#1010454 e RHBZ#1074113. O systemd aplica essas configurações e as opções de boot têm prioridade frente ao que foi definido nos arquivos. No modo "Generic" (antes "No-HostOnly"), o Dracut não copia para o initramfs os arquivos
/etc/locale.conf
e /etc/vconsole.conf
. Quando os bugs forem consertados, a fonte, língua e layout de teclado não serão configurados no initramfs. Levando em conta que o modo "HostOnly" é o padrão, subentende-se que quem for usar o initramfs genérico saiba o que está fazendo. A solução para ter os arquivos no initramfs é simples:/etc/dracut.conf.d/console.conf
install_items+=" /etc/vconsole.conf /etc/locale.conf "
Desabilitar a entrada "Rescue" é opcional, porém eu não vejo utilidade nela e mando-a embora.
Uma segunda alternativa, se você quiser manter o recurso ativo nas máquinas alvo, seria, antes de criar a imagem, rodar:
# dracut -f --no-hostonly
Assim, o initramfs do atual kernel em uso será substituído (temporariamente até uma próxima atualização) por um genérico.
Ainda sobre o assunto, no modo "HostOnly", o Dracut copia
/etc/machine-id
para o initramfs caso exista, enquanto que, no modo "No-HostOnly", sempre coloca um arquivo vazio. O Journal precisa de um machine-id para funcionar. No initramfs, pode ser temporário, pois um definitivo apenas é necessário na hora em que o diretório raiz é montado (e daí para frente demais sistemas de arquivos de /etc/fstab
) para escrever em /var
.No post anterior, faltou comentar uma possibilidade, que é haver um
/etc/machine-id
vazio e sem permissão de escrita. Neste ambiente, machine_id_setup()
cria um bind mount sobre o arquivo com um machine-id volátil novo (ou importado de /var/lib/dbus/machine-id
— obsoleto e não mais usado em distribuições novas), que é exatamente o que ocorre no initramfs.
Comentários
Postar um comentário