CentOS 7.6 - Initrd.img가 업데이트된 드라이버를 로드하지 않음

CentOS 7.6 - Initrd.img가 업데이트된 드라이버를 로드하지 않음

Centos 7.6 ISO 부팅 시 업데이트된 드라이버와 함께 업데이트된 initrd.img 파일을 로드하려고 시도했지만 드라이버를 교체했는데도 여전히 이전 드라이버를 로드하는 것 같습니다.

취한 조치:

ISO에서 추출된 initrd 이미지:

  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. Intel 웹사이트에서 최신 e1000e NIC 드라이버를 다운로드하십시오. e1000e 다운로드 링크
  2. tar 파일을 추출했습니다
    tar xvf e1000e-3.6.0.tar.gz
    
  3. gcc 및 kernel-devel 라이브러리가 설치되어 있는지 확인하여 소스 코드를 만듭니다.

    cd e1000e-3.6.0/src
    make install
    

    참고: 이 드라이버는 CentOS 7.6 ISO로 생성된 Linux 환경에서 컴파일되었습니다.

  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를 isolinux/initrd.img 및 Images/pxe/initrd.img의 ISO에 다시 복사합니다.

예상 결과

initrd.img에서 드라이버를 업데이트하고 이를 ISO에 복사한 후 ISO 설치 부팅 프로세스가 완료된 후 새 드라이버(e1000e 버전 3.6.0)가 로드될 것으로 예상합니다.

실제 결과

ISO에서 부팅하여 Centos 7을 설치할 수 있지만 Centos를 설치한 후 다음 명령을 실행합니다.

modinfo e1000e

initrd.img 이미지에 로드한 버전 3.6.0이 아닌 처음에 initrd.img에 있던 드라이버의 이전 버전(e1000e 버전 3.2.6)을 제공합니다.

드라이버를 잘못 생성했는지, 드라이버를 잘못 로드했는지, initrd.img를 잘못 생성했는지 등 내가 뭘 잘못하고 있는지 잘 모르겠습니다.

지난 며칠 동안 이 작업을 수행하려고 노력했기 때문에 도움을 주시면 감사하겠습니다. 이것은 내 첫 번째 게시물이므로 내가 잘못하고 있는 것이 있거나 이 문제를 디버그하기 위해 추가 정보가 필요한 경우 알려 주시기 바랍니다.

건배

답변1

방금 알아 냈습니다. 드라이버는 LiveOS/squashfs.img rootfs.img에도 있습니다. 따라서 initrd 모듈은 rootfs.img로 오버레이됩니다. 이는 설치 프로세스 중이지만 설치된 시스템이 부팅되면 드라이버는 설치된 RPM(이 경우 커널)에서 제공되므로 initrd는 더 이상 이와 관련이 없습니다. 설치된 시스템에서 작동하려면 해당 RPM을 업데이트하거나 업데이트된 드라이버로 별도의 RPM을 추가해야 합니다.

관련 정보