Reconstruindo o initial ramdisk – initramfs – Straw-Hat
O initial ramdisk (também conhecido como initrd ou initramfs) é um cpio ( "copy in e out") do arquivo do primeiro sistema de arquivo que é carregado na memória durante o processo de inicialização do Linux. O Linux copia o conteúdo do arquivo para o built-in rootfs que quer é baseada em ramfs, ou os mais regulamentados tmpfs e em seguida, tenta executar o resultante /init programa. O programa init destina-se a completar certas tarefas antes que o sistema de arquivos root "real" ou final seja montado sobre rootfs. Assim, initramfs precisa conter todos os drivers de dispositivos e ferramentas necessárias para montar o sistema de arquivos raiz final.
O initrd é projetado principalmente para permitir a inicialização do sistema em duas fases, onde o kernel vem com um conjunto mínimo de controladores compilados-in, e onde os módulos adicionais são carregados a partir de initrd.
É necessário reconstruir as imagens initrd nos seguintes cenários para incluir os módulos, arquivos e diretivas de configuração adequados do kernel.
Se adicionar um novo hardware para um sistema que pode ser usado muito cedo no processo de inicialização.
O /etc/lvm/lvm.conf e sistema de arquivos root reside em um volume lógico. Como garantir que as alterações sejam aplicadas após a reinicialização?
O /etc/multipath.conf e meu sistema de arquivos root reside em um multipath devices. Como garantir que as alterações sejam aplicadas após a reinicialização?
Se alterar os arquivos de configuração que podem ser utilizados anteriormente no processo de inicialização.
Se alterar as opções em um módulo do kernel.
Nos exemplos abaixo você verá o uso de $ (uname -r), que é uma maneira de passar a versão atual do kernel para um comando sem realmente digitá-lo. Se você estiver trabalhando com uma versão do kernel diferente do que se encontra em execução, em seguida, substitua $(uname -r)com a versão do kernel real, como 2.6.18-274.el5.
Reconstruindo o initrd (RHEL 3.x, 4.x e 5.x)
Utilitário mkinitrd pode ser usado para recriar uma imagem initrd. O mkinitrd cria uma primeira imagem usada pelo kernel para pré-carregar os módulos de dispositivo de bloco (como IDE, SCSI ou RAID), que são necessários para acessar o sistema de arquivos root. mkinitrd carrega automaticamente os módulos do sistema de arquivos (como ext3 e jbd), módulos de IDE, todas as entradas scsi_hostadapter em /etc/modprobe.conf.
É recomendável que você faça uma cópia de segurança do initrd no caso da nova versão ter um problema inesperado
$ cp /boot/initrd-$(uname -r).img /boot/initrd-$(uname -r).img.$(date +%m-%d-%H%M%S).bak
Agora crie o initrd:
$ mkinitrd -f -v /boot/initrd-$(uname -r).img $(uname -r)
A opção -v verbose mostrar os nomes de todos os módulos que ele está incluindo no initial ramdisk.
A opção -f irá forçar uma substituição de qualquer initial ramdisk image existente no caminho que você especificou
Se você estiver em uma versão do kernel diferente:
$ mkinitrd -f -v /boot/initrd-2.6.18-348.2.1.el5.img 2.6.18-348.2.1.el5
Reconstruindo o initrd (RHEL 6.x, 7.x)
O utilitário dracut pode ser usado no RHEL 6 para reconstruir uma imagem initramfs, Ele cria uma imagem inicial utilizado pelo kernel para pré-carregar os módulos de dispositivo de bloco (como IDE, SCSI ou RAID), que são necessários para acessar o sistema de arquivos root "real".
Assim como mencionado anteriormente, recomenda-se que você faça uma cópia de backup do initramfs.
Agora reconstrua o initramfs a partir da verão do kernel atual.
Se você estiver em uma versão do kernel diferente do initrd que você está construindo (incluindo se estiver no modo rescue), você deve especificar a versão completa do kernel, incluindo a arquitetura:
$ dracut -f /boot/initramfs-2.6.32-220.7.1.el6.x86_64.img 2.6.32-220.7.1.el6.x86_64
Trabalhando com backups (Todas as versões do RHEL)
Se algum erro ocorreu com a nova imagem initramfs, podemos a partir do backup gerado da imagem ramdisk inicial criar uma entrada separada em grub.conf para escolher a versão antiga no momento da inicialização sem a necessidade de restaurar o backup. Esta configuração de exemplo permite a seleção da imagem nova do inicial ramdisk ou antiga, no menu do grub.
title Red Hat Enterprise Linux 5 (2.6.18-274.el5)
kernel /vmlinuz-2.6.18-274.el5 ro root=LABEL=/
title Red Hat Enterprise Linux 5 w/ old initrd (2.6.18-274.el5)
initrd /initrd-2.6.18-274.el5.img.bak
Ou Alternativamente, você pode entrar em modo edit no grub é escolher o antigo initrd. Mas lembre-se este procedimento não é persistente. Na próxima inicialização vai continuar a usar a configuração original do grub.conf a menos que você atualize apontando para a nova ou antiga imagem do inicial ramdisk.