CentOS 7 PXE-Installation mit I2019-V NIC (e1000e)


 

Die neusten integrierten NIC's von Intel werden von CentOS out-of-the-box nicht mehr unterstützt, aber Intel liefert dennoch neuere Treiber dafür.

Die Installation via PXE wird natürlich schwierig ohne Netzwerkverbindung. Somit muss man den aktualisierten Treiber irgendwie unterjubeln. Die Stichworte hier sind: Driver Update Disc oder kurz DUD.

 

In der Doku von RHEL6 ist beschrieben, wie man eine DUD via PXE bereitstellt. Diese Infos fehlen bei RHEL7 oder RHEL8.

Aber erst mal muss die DUD beschafft oder gebaut werden. Für Selberbauer hats einige Infos im anaconda (OS Installer) Repo README.driver-updates.md . Aber zum Glück bietet ELRepo neben dem Paketierten kmod-e1000e RPM Paket bereits auch fertige DUD's an

Das ISO File als einzige Datei in einem neuen Ordner speichern. Dann umbenennen nach dd.img und mit cpio und gzip verarbeiten:

find . | cpio --quiet -o -H newc | gzip -9 >../dd.img
 
Dieses verarbeitete dd.img muss dann via TFTP Server verfügbar gemacht und im initrd Parameter hinzugefügt werden.


DEFAULT pxeboot
TIMEOUT 20
PROMPT 0
LABEL pxeboot
    KERNEL centos-7.9.2009/images/pxeboot/vmlinuz
    APPEND initrd=centos-7.9.2009/images/pxeboot/initrd.img,dd-initrd/dd.img console=ttyS0 inst.ks=http://192.168.122.1:8000/kickstart.cfg inst.dd=file:/dd.img
IPAPPEND 2

Die Liste beim initrd Parameter war mir neu. Aber das gibts offiziell gemäss der syslinux Homepage (suche dort nach INITRD). Die Images werden zusammengefügt. Das dd-initrd/dd.img wird entpackt und ist dann als /dd.img verfügbar. Entsprechend muss der inst.dd Parameter auf diese Datei zeigen.

Die IPAPPEND 2 Option fügt übrigens ein BOOTIF= hinzu. Das System im Initramfs inspizieren kann man mit Hinzufügen von rd.break zu APPEND.

Output während der Initram Phase :


[    8.411481] dracut-initqueue[753]: DD: Examining /dd.img
[    8.425489] loop: module loaded
[    8.430152] Buffer I/O error on dev loop0, logical block 0, async page read
[    8.449503] dracut-initqueue[753]: mount: /dev/loop0 is write-protected, mounting read-only
[    8.548243] dracut-initqueue[753]: DD: Extracting: kmod-e1000e
[   10.513903] pps_core: LinuxPPS API ver. 1 registered
[   10.519222] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[   10.534185] PTP clock support registered
[   10.539296] Request for unknown module key 'The ELRepo Project (http://elrepo.org): ELRepo.org Secure Boot Key: f365ad3481a7b20e3427b61b2a26635b83fe427b' err -11
[   10.557874] e1000e: loading out-of-tree module taints kernel.
[   10.571768] e1000e: module verification failed: signature and/or required key missing - tainting kernel
[   10.601372] e1000e: Intel(R) PRO/1000 Network Driver - 3.8.4-NAPI
[   10.608908] e1000e: Copyright(c) 1999 - 2020 Intel Corporation.
[   10.656867] 8139cp 0000:00:03.0 ens3: link up, 100Mbps, full-duplex, lpa 0x05E1
[   12.934545] dracut-initqueue[753]: DD: Examining /dev/loop0
[   12.945678] SQUASHFS error: squashfs_read_data failed to read block 0x0
[   12.957053] SQUASHFS error: unable to read squashfs_super_block
[   12.966322] dracut-initqueue[753]: mount: /dev/loop0: can't read superblock
[   12.974332] dracut-initqueue[753]: DD: ERROR: Command '['mount', '/dev/loop0', '/media/DD-2']' returned non-zero exit status 32
[   14.879554] dracut-initqueue[753]: DD: Examining /dev/loop0
[   14.889157] SQUASHFS error: squashfs_read_data failed to read block 0x0
[   14.896860] SQUASHFS error: unable to read squashfs_super_block
[   14.906159] dracut-initqueue[753]: mount: /dev/loop0: can't read superblock
[   14.912621] dracut-initqueue[753]: DD: ERROR: Command '['mount', '/dev/loop0', '/media/DD-3']' returned non-zero exit status 32

 

Ich habe das ganze mit dem Libvirt PXE Setup vom Dusty Mabe getestet: Easy PXE boot testing with only HTTP using iPXE and libvirt (dustymabe.com)

Beliebte Posts aus diesem Blog