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:
- CentOS 7.6 ISO montado
- Copié el initrd.img de isolinux/initrd.img a la carpeta temporal (/tmp/image)
- Creó una nueva carpeta en /tmp/image/initrd
- Extraí la carpeta initrd.img ejecutando
xz -dc < ../initrd.img | cpio -idmv
Creó el archivo del controlador e1000e.ko.kz
- Descargue el controlador NIC e1000e más reciente del sitio web de Intel: enlace de descarga e1000e
- Extraído el archivo tar.
tar xvf e1000e-3.6.0.tar.gz
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.
Copie el archivo e1000e.ko creado a la carpeta temporal (/tmp/image)
Comprimirlo al formato .kz
xz -k e1000e.ko
Reemplace el controlador anterior y vuelva a empaquetar la imagen initrd.img
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
- Vuelva a empaquetar el initrd.img
cd /tmp/image/initrd find . 2>/dev/null | cpio -c -o | xz -9 --check=crc32 > ../initrd.img
- 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.