CentOS 7.6: Initrd.img no carga el controlador actualizado

CentOS 7.6: Initrd.img no carga el controlador actualizado

He estado intentando cargar un archivo initrd.img actualizado con controladores actualizados al iniciar Centos 7.6 ISO, sin embargo, parece que todavía se carga el controlador anterior a pesar de que lo reemplacé.

Pasos tomados:

Imagen initrd extraída de ISO:

  1. CentOS 7.6 ISO montado
  2. Copié el initrd.img de isolinux/initrd.img a la carpeta temporal (/tmp/image)
  3. Creó una nueva carpeta en /tmp/image/initrd
  4. Extraí la carpeta initrd.img ejecutando
xz -dc < ../initrd.img | cpio -idmv

Creó el archivo del controlador e1000e.ko.kz

  1. Descargue el controlador NIC e1000e más reciente del sitio web de Intel: enlace de descarga e1000e
  2. Extraído el archivo tar.
    tar xvf e1000e-3.6.0.tar.gz
    
  3. Cree el código fuente, asegurándose de que las bibliotecas gcc y kernel-devel estén instaladas

    cd e1000e-3.6.0/src
    make install
    

    Nota: este controlador fue compilado en un entorno Linux creado por CentOS 7.6 ISO.

  4. Copie el archivo e1000e.ko creado a la carpeta temporal (/tmp/image)

  5. Comprimirlo al formato .kz

    xz -k e1000e.ko
    

    Reemplace el controlador anterior y vuelva a empaquetar la imagen initrd.img

  6. Copie el archivo del controlador comprimido para reemplazar el controlador 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. Vuelva a empaquetar el initrd.img
    cd /tmp/image/initrd
    find . 2>/dev/null | cpio -c -o | xz -9 --check=crc32 > ../initrd.img
    
  8. Copie el initrd.img generado nuevamente en la ISO en isolinux/initrd.img e images/pxe/initrd.img

Resultados previstos

Después de actualizar el controlador en initrd.img y copiarlo en la ISO, espero que el nuevo controlador (e1000e versión 3.6.0) se cargue después de que se complete el proceso de inicio de instalación de la ISO.

Resultados actuales

Puedo arrancar desde la ISO e instalar Centos 7 desde allí, sin embargo, después de instalar Centos, ejecuto el siguiente comando:

modinfo e1000e

Proporciona la versión antigua del controlador que estaba inicialmente en initrd.img (e1000e versión 3.2.6) en lugar de la versión 3.6.0 que cargué en la imagen de initrd.img.

No estoy muy seguro de qué estoy haciendo mal, si estoy creando el controlador incorrectamente, cargándolo incorrectamente, creando initrd.img incorrectamente o cualquier otra cosa.

Cualquier ayuda sería apreciada ya que he estado intentando que esto funcione durante los últimos días. Esta es mi primera publicación, así que avíseme si estoy haciendo algo mal o si se requiere información adicional para solucionar este problema.

Salud

Respuesta1

Acabo de descubrir esto. Los controladores también están en LiveOS/squashfs.img rootfs.img. Entonces los módulos initrd se superponen con rootfs.img. Esto ocurre durante el proceso de instalación, pero una vez que arranca el sistema instalado, el controlador proviene de un RPM instalado (probablemente el kernel en este caso), por lo que initrd ya no tiene nada que ver con eso. Necesitará actualizar ese RPM o agregar un RPM separado con el controlador actualizado para que funcione en el sistema instalado.

información relacionada