I have been trying to load an updated initrd.img file with updated drivers on booting the Centos 7.6 ISO, however it seems to still load the old driver even though I have replaced the driver.
Steps taken:
Extracted initrd image from ISO:
- Mounted CentOS 7.6 ISO
- Copied the initrd.img from isolinux/initrd.img to temporary folder (/tmp/image)
- Created a new folder at /tmp/image/initrd
- Extracted the initrd.img the folder by running
xz -dc < ../initrd.img | cpio -idmv
Created the e1000e.ko.kz driver file
- Download the latest e1000e NIC driver from the Intel website: e1000e download link
- Extracted the tar file
tar xvf e1000e-3.6.0.tar.gz
Make the source code, ensuring that gcc and kernel-devel libraries are installed
cd e1000e-3.6.0/src make install
Note: this driver was compiled on a linux environment created by the CentOS 7.6 ISO.
Copy the created e1000e.ko file to the temporary folder (/tmp/image)
Compress it to .kz format
xz -k e1000e.ko
Replace old driver and repack initrd.img image
Copy the compressed driver file to replace the existing driver
cp e1000e.ko.kz /tmp/image/initrd/files/lib/modules/3.10.0.957.el7.x86_64/kernel/drivers/net/ethernet/intel/e1000e
- Repack the initrd.img
cd /tmp/image/initrd find . 2>/dev/null | cpio -c -o | xz -9 --check=crc32 > ../initrd.img
- Copy the generated initrd.img back into the ISO at isolinux/initrd.img and images/pxe/initrd.img
Expected Results
After updating the driver in the initrd.img and copying it into the ISO, I expect the new driver (e1000e version 3.6.0) to be loaded in after the ISO install boot process is complete.
Actual Results
I am able to boot from the ISO and install Centos 7 from it, however after installing Centos, running the following command:
modinfo e1000e
Gives the old version of the driver that was on the initrd.img initially (e1000e version 3.2.6) rather than version 3.6.0 which I loaded onto the initrd.img image.
I am not too sure what I am doing wrong, whether I am creating the driver incorrectly, loading the driver incorrectly, creating the initrd.img incorrectly or anything else.
Any help would be appreciated as I have been trying to get this working for the past few days. This is my first post, so let me know if I am doing anything wrong or if any additional information is required debug this issue.
Cheers
depmod -b /tmp/image/initrd/usr 3.10.0.957.el7.x86_64
but please check if I'm wrong.