CentOS 7.6 - Initrd.img не загружает обновленный драйвер

CentOS 7.6 - Initrd.img не загружает обновленный драйвер

Я пытаюсь загрузить обновленный файл initrd.img с обновленными драйверами при загрузке Centos 7.6 ISO, однако, похоже, он все еще загружает старый драйвер, хотя я заменил драйвер.

Предпринятые шаги:

Извлеченный образ initrd из ISO:

  1. Смонтированный CentOS 7.6 ISO
  2. Скопировал initrd.img из isolinux/initrd.img во временную папку (/tmp/image)
  3. Создал новую папку в /tmp/image/initrd
  4. Извлеките initrd.img из папки, запустив
xz -dc < ../initrd.img | cpio -idmv

Создан файл драйвера e1000e.ko.kz

  1. Загрузите последнюю версию драйвера сетевой карты e1000e с веб-сайта Intel: ссылка для скачивания e1000e
  2. Извлек файл tar
    tar xvf e1000e-3.6.0.tar.gz
    
  3. Создайте исходный код, убедившись, что установлены библиотеки gcc и kernel-devel

    cd e1000e-3.6.0/src
    make install
    

    Примечание: этот драйвер был скомпилирован в среде Linux, созданной с помощью CentOS 7.6 ISO.

  4. Скопируйте созданный файл e1000e.ko во временную папку (/tmp/image)

  5. Сожмите его в формат .kz

    xz -k e1000e.ko
    

    Замените старый драйвер и перепакуйте образ initrd.img

  6. Скопируйте сжатый файл драйвера, чтобы заменить существующий драйвер.

    cp e1000e.ko.kz /tmp/image/initrd/files/lib/modules/3.10.0.957.el7.x86_64/kernel/drivers/net/ethernet/intel/e1000e
    
  7. Перепаковываем initrd.img
    cd /tmp/image/initrd
    find . 2>/dev/null | cpio -c -o | xz -9 --check=crc32 > ../initrd.img
    
  8. Скопируйте сгенерированный initrd.img обратно в ISO по адресу isolinux/initrd.img и images/pxe/initrd.img

Ожидаемые результаты

После обновления драйвера в initrd.img и копирования его в ISO я ожидаю, что новый драйвер (e1000e версии 3.6.0) будет загружен после завершения процесса загрузки установки ISO.

Фактические результаты

Мне удаётся загрузиться с ISO-образа и установить Centos 7, однако после установки Centos, выполняю следующую команду:

modinfo e1000e

Выдает старую версию драйвера, которая изначально была в образе initrd.img (e1000e версии 3.2.6), а не версию 3.6.0, которую я загрузил в образ initrd.img.

Я не совсем понимаю, что я делаю не так: неправильно ли создаю драйвер, неправильно ли загружаю драйвер, неправильно ли создаю initrd.img или что-то еще.

Любая помощь будет оценена по достоинству, так как я пытаюсь заставить это работать последние несколько дней. Это мой первый пост, так что дайте мне знать, если я делаю что-то неправильно или если требуется дополнительная информация для устранения этой проблемы.

Ваше здоровье

решение1

Только что разобрался. Драйверы также находятся в LiveOS/squashfs.img rootfs.img. Таким образом, модули initrd накладываются на rootfs.img. Это происходит во время процесса установки, но после загрузки установленной системы драйвер берется из установленного RPM (вероятно, в данном случае ядра), поэтому initrd больше не имеет к этому никакого отношения. Вам нужно будет обновить этот RPM или добавить отдельный RPM с обновленным драйвером, чтобы он работал в установленной системе.

Связанный контент