• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[Gelöst] Odroid H2+: Build module r8125 - pci-aspm.h not found (CentOS 8.3)

gehrke

Administrator
Teammitglied
Moin *

Spaß am Sonntag: Nach einem 'dnf upgrade' ist das Netzwerk auf dem Homeserver kaputt. Das ist unschön.

Es handelt sich um ein Odroid H2+. Das Teil verfügt über zwei 2,5 Gbit/s-NICs, für die es im Standardkernel von CentOS 8.x noch keinen Treiber gibt. Den muss man noch selbst bauen, was bislang in den vergangenen Monaten auch problemlos möglich war:

https://wiki.odroid.com/odroid-h2/hardware/install_ethernet_driver_on_h2plus

Heute ist es anders, beim Build des Treibers gibt es eine Fehlermeldung:
Code:
# cd r8125-9.004.01/ ; ./autorun.sh
Check old driver and unload it.
Build the module and install
/root/r8125-9.004.01/src/r8125_n.c:62:10: schwerwiegender Fehler: linux/pci-aspm.h: Datei oder Verzeichnis nicht gefunden
 #include <linux/pci-aspm.h>
          ^~~~~~~~~~~~~~~~~~
Kompilierung beendet.
make[3]: *** [scripts/Makefile.build:316: /root/r8125-9.004.01/src/r8125_n.o] Fehler 1
make[2]: *** [Makefile:1544: _module_/root/r8125-9.004.01/src] Fehler 2
make[1]: *** [Makefile:159: modules] Fehler 2
make: *** [Makefile:41: modules] Fehler 2
Scheinbar fehlt die Datei tatsächlich für den aktuellen Kernel:
Code:
# find / -name *pci-aspm.h* -ls
   658569      4 -rw-r--r--   2  root     root          889 Jul 26  2020 /usr/src/kernels/4.18.0-193.28.1.el8_2.x86_64/include/linux/pci-aspm.h
   658569      4 -rw-r--r--   2  root     root          889 Jul 26  2020 /usr/src/kernels/4.18.0-193.19.1.el8_2.x86_64/include/linux/pci-aspm.h
Code:
# uname -a
Linux j15 4.18.0-240.10.1.el8_3.x86_64 #1 SMP Mon Jan 18 17:05:51 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
Zum Vergleich - mit 4.18.0-193.* funktionierte das Build und die Nutzung des Netzwerkes noch problemlos:
Code:
# ls -ltar /boot/vmlinuz-*.x86_64
-rwxr-xr-x. 1 root root 8920200 14. Sep 16:45 /boot/vmlinuz-4.18.0-193.19.1.el8_2.x86_64
-rwxr-xr-x. 1 root root 8924296 22. Okt 02:28 /boot/vmlinuz-4.18.0-193.28.1.el8_2.x86_64
-rwxr-xr-x. 1 root root 9514120 18. Jan 18:14 /boot/vmlinuz-4.18.0-240.10.1.el8_3.x86_64

Das Paket 'kernel-devel' scheint für alle Versionen installiert:
Code:
# dnf info kernel-devel
Letzte Prüfung auf abgelaufene Metadaten: vor 1:29:09 am So 24 Jan 2021 13:48:37 CET.
Installierte Pakete
Name         : kernel-devel
Version      : 4.18.0
Release      : 193.19.1.el8_2
Architecture : x86_64
Size         : 47 M
Quelle       : kernel-4.18.0-193.19.1.el8_2.src.rpm
Repository   : @System
Aus Paketque : BaseOS
Summary      : Development package for building kernel modules to match the kernel
URL          : http://www.kernel.org/
Lizenz       : GPLv2 and Redistributable, no modification permitted
Description  : This package provides kernel headers and makefiles sufficient to build modules
             : against the kernel package.

Name         : kernel-devel
Version      : 4.18.0
Release      : 193.28.1.el8_2
Architecture : x86_64
Size         : 47 M
Quelle       : kernel-4.18.0-193.28.1.el8_2.src.rpm
Repository   : @System
Aus Paketque : BaseOS
Summary      : Development package for building kernel modules to match the kernel
URL          : http://www.kernel.org/
Lizenz       : GPLv2 and Redistributable, no modification permitted
Description  : This package provides kernel headers and makefiles sufficient to build modules
             : against the kernel package.

Name         : kernel-devel
Version      : 4.18.0
Release      : 240.10.1.el8_3
Architecture : x86_64
Size         : 47 M
Quelle       : kernel-4.18.0-240.10.1.el8_3.src.rpm
Repository   : @System
Aus Paketque : BaseOS
Summary      : Development package for building kernel modules to match the kernel
URL          : http://www.kernel.org/
Lizenz       : GPLv2 and Redistributable, no modification permitted
Description  : This package provides kernel headers and makefiles sufficient to build modules
             : against the kernel package.
Unter /usr/src/kernels/4.18.0-240.10.1.el8_3.x86_64/include/linux liegen auch eine Menge Header-Files, aber nicht die gesuchte.

Eine Recherche zeigt einen ähnlichen Fall, allerdings ohne Lösung:
https://forums.centos.org/viewtopic.php?t=76740&p=322657
 
Ist der kernel gepatched?
openSUSE hat z.B in Leap 15.1 einen von kernel 4.19 auf kernel 4.12 zurückportierten kernel.

Evtl musst du eine patch nehmen, da es jetzt statt
Code:
#include <linux/pci-aspm.h>
Code:
#include <linux/pci.h>
ist?

Siehe hier:
https://bugs.gentoo.org/701200

Kannst du ja mal in den 3. Sourcen vergleichen.
 

josef-wien

Ultimate Guru
Im Langzeit-Kernel 4.19 gibt es die Datei noch, im Langzeit-Kernel 5.4 gibt es sie nicht mehr. Es könnte also ein typischer Rückportier-Fehler sein, bei dem ein bug report an die für Deinen Distributions-Kernel Zuständigen angebracht zu sein scheint. Es könnte aber auch sein, daß die von Sauerland genannte Änderung in Deinem neuen Distributions-Kernel Eingang gefunden hat und das Makefile Deines Moduls damit nicht zurechtkommt.
 
OP
gehrke

gehrke

Administrator
Teammitglied
TNX - ich denke, das ist tatsächlich ein Bug.

Um wieder im Spiel zu sein, habe ich zunächst mal den letzten Kernel gebootet.
 
OP
gehrke

gehrke

Administrator
Teammitglied
Das Problem ist gelöst, die Macht der Geduld hat geholfen.
Ich weiß nur nicht, wodurch. :-o

Nach einem halben Jahr habe ich noch mal die aktuellen Sourcen von RealTek gezogen.

Diese liessen sich dann auch mit der bis dahin eingefrorenen Version von CentOS fehlerfrei bauen und das Modul funktional laden.
Code:
[root@j15 ~]# ls -ltar r8125-9.005.06
insgesamt 28
-rwxrwxrwx. 1 root root 3827 13. Mai 11:49 README
-rwxrwxrwx. 1 root root 1860 13. Mai 11:49 Makefile
-rwxrwxrwx. 1 root root 2062 13. Mai 11:49 autorun.sh
drwxrwxrwx. 3 root root 4096 10. Jul 12:44 .
drwxrwxrwx. 3 root root 4096 10. Jul 12:44 src
-rw-r--r--. 1 root root 1782 10. Jul 12:44 log.txt

Danach habe ich CentOS aktualisiert:
Code:
Aktualisiert:
  kernel-headers-4.18.0-305.7.1.el8_4.x86_64                                     kernel-tools-4.18.0-305.7.1.el8_4.x86_64                                
  kernel-tools-libs-4.18.0-305.7.1.el8_4.x86_64                                  kexec-tools-2.0.20-46.el8_4.1.x86_64                                    
[...]
Entfernt:
  kernel-4.18.0-193.19.1.el8_2.x86_64                 kernel-core-4.18.0-193.19.1.el8_2.x86_64         kernel-devel-4.18.0-193.19.1.el8_2.x86_64        
  kernel-modules-4.18.0-193.19.1.el8_2.x86_64
Danach ein Reboot.

Neu war jetzt, dass damit das Netzwerk sofort funktionierte, ohne zuvor die Sourcen via autorun.sh zu bauen und das Modul manuell zu laden, wie es vorher der Fall war. Daher vermute ich, dass es nun eine Kernel-Unterstützung gibt. Ist aber nur eine Spekulation.

Code:
# lsmod | grep r8125
<leer>

Code:
# cat /etc/centos-release
CentOS Linux release 8.4.2105
 
Oben