CentOS 7.6 - Initrd.img não carrega driver atualizado

CentOS 7.6 - Initrd.img não carrega driver atualizado

Tenho tentado carregar um arquivo initrd.img atualizado com drivers atualizados ao inicializar o Centos 7.6 ISO, mas parece que ainda carrega o driver antigo, embora eu tenha substituído o driver.

Passos dados:

Imagem initrd extraída da ISO:

  1. Montado CentOS 7.6 ISO
  2. Copiou o initrd.img de isolinux/initrd.img para a pasta temporária (/tmp/image)
  3. Criou uma nova pasta em /tmp/image/initrd
  4. Extraiu o initrd.img da pasta executando
xz -dc < ../initrd.img | cpio -idmv

Criado o arquivo do driver e1000e.ko.kz

  1. Baixe o driver da NIC e1000e mais recente no site da Intel: link para baixar e1000e
  2. Extraiu o arquivo tar
    tar xvf e1000e-3.6.0.tar.gz
    
  3. Faça o código fonte, garantindo que as bibliotecas gcc e kernel-devel estejam instaladas

    cd e1000e-3.6.0/src
    make install
    

    Nota: este driver foi compilado em um ambiente Linux criado pelo CentOS 7.6 ISO.

  4. Copie o arquivo e1000e.ko criado para a pasta temporária (/tmp/image)

  5. Compacte-o no formato .kz

    xz -k e1000e.ko
    

    Substitua o driver antigo e reempacote a imagem initrd.img

  6. Copie o arquivo compactado do driver para substituir o driver existente

    cp e1000e.ko.kz /tmp/image/initrd/files/lib/modules/3.10.0.957.el7.x86_64/kernel/drivers/net/ethernet/intel/e1000e
    
  7. Reembale o initrd.img
    cd /tmp/image/initrd
    find . 2>/dev/null | cpio -c -o | xz -9 --check=crc32 > ../initrd.img
    
  8. Copie o initrd.img gerado de volta para o ISO em isolinux/initrd.img e images/pxe/initrd.img

resultados esperados

Depois de atualizar o driver no initrd.img e copiá-lo para o ISO, espero que o novo driver (e1000e versão 3.6.0) seja carregado após a conclusão do processo de inicialização da instalação do ISO.

Resultados reais

Consigo inicializar a partir do ISO e instalar o Centos 7 a partir dele, porém após instalar o Centos, execute o seguinte comando:

modinfo e1000e

Fornece a versão antiga do driver que estava inicialmente no initrd.img (e1000e versão 3.2.6) em vez da versão 3.6.0 que carreguei na imagem initrd.img.

Não tenho muita certeza do que estou fazendo de errado, se estou criando o driver incorretamente, carregando o driver incorretamente, criando o initrd.img incorretamente ou qualquer outra coisa.

Qualquer ajuda seria apreciada, pois tenho tentado fazer isso funcionar nos últimos dias. Esta é minha primeira postagem, então deixe-me saber se estou fazendo algo errado ou se alguma informação adicional é necessária para depurar esse problema.

Saúde

Responder1

Acabei de descobrir isso. Os drivers também estão em LiveOS/squashfs.img rootfs.img. Portanto, os módulos initrd são sobrepostos ao rootfs.img. Isso ocorre durante o processo de instalação, mas assim que o sistema instalado inicializa, o driver vem de um RPM instalado (provavelmente o kernel neste caso), então o initrd não tem mais nada a ver com isso. Você precisaria atualizar esse RPM ou adicionar um RPM separado com o driver atualizado para que funcione no sistema instalado.

informação relacionada