Skip to content

Help needed with kernel compilation for an Intel network interface #10

@areksobiczewski

Description

@areksobiczewski

kernel: 5.15.35-pcpCore-v8
platform: Raspberri Pi CM4 + Official I/O Board.

I'm tryingi to install a new network card from Intel (PCI-E). It has an i350AM2 chipset. The card doesn't work from the get go with PCP.
I downloaded drivers (source) from Intel's website and I was trying to use this guide: https://github.com/piCorePlayer/pCP-Kernels

I'm stuck at point no. 4 - Compile your driver. The compilation process isn't working as expected.
The guide says:
a) Set all the CONFIG_PLATFORM* = n
b) Then set CONFIG_PLATFORM_ARM_RPI = y (or CONFIG_PLATFORM_ARM64_RPI = y) whichever closest matches your system.

But the makefile from Intel doesn't have such variables. I was trying to compile it without modifying anything with following results:
make[1]: Entering directory '/mnt/mmcblk0p2/tce/kernelsrc' CC [M] /mnt/mmcblk0p2/tce/intel-drivers/igb_main.o CC [M] /mnt/mmcblk0p2/tce/intel-drivers/e1000_api.o CC [M] /mnt/mmcblk0p2/tce/intel-drivers/igb_ethtool.o CC [M] /mnt/mmcblk0p2/tce/intel-drivers/igb_hwmon.o CC [M] /mnt/mmcblk0p2/tce/intel-drivers/e1000_mbx.o CC [M] /mnt/mmcblk0p2/tce/intel-drivers/e1000_mac.o CC [M] /mnt/mmcblk0p2/tce/intel-drivers/e1000_manage.o CC [M] /mnt/mmcblk0p2/tce/intel-drivers/e1000_nvm.o CC [M] /mnt/mmcblk0p2/tce/intel-drivers/igb_param.o CC [M] /mnt/mmcblk0p2/tce/intel-drivers/e1000_phy.o CC [M] /mnt/mmcblk0p2/tce/intel-drivers/igb_procfs.o CC [M] /mnt/mmcblk0p2/tce/intel-drivers/igb_vmdq.o CC [M] /mnt/mmcblk0p2/tce/intel-drivers/e1000_82575.o CC [M] /mnt/mmcblk0p2/tce/intel-drivers/e1000_i210.o CC [M] /mnt/mmcblk0p2/tce/intel-drivers/e1000_base.o CC [M] /mnt/mmcblk0p2/tce/intel-drivers/igb_debugfs.o CC [M] /mnt/mmcblk0p2/tce/intel-drivers/igb_ptp.o CC [M] /mnt/mmcblk0p2/tce/intel-drivers/kcompat.o /mnt/mmcblk0p2/tce/intel-drivers/igb_main.c: In function 'igb_get_os_driver_version': /mnt/mmcblk0p2/tce/intel-drivers/igb_main.c:10296:7: error: implicit declaration of function 'isdigit' [-Werror=implicit-function-declaration] 10296 | if(!isdigit(*c) && *c != '.') | ^~~~~~~ cc1: some warnings being treated as errors make[2]: *** [scripts/Makefile.build:277: /mnt/mmcblk0p2/tce/intel-drivers/igb_main.o] Error 1 make[2]: *** Waiting for unfinished jobs.... make[1]: *** [Makefile:1868: /mnt/mmcblk0p2/tce/intel-drivers] Error 2 make[1]: Leaving directory '/mnt/mmcblk0p2/tce/kernelsrc' make: *** [Makefile:87: default] Error 2

I've attached the makefile downloaded from Intel to this post.
Makefile.txt

Another thing is that the guide then says: Run: pcp_make_module_extension -k -e < extension name >.
And I don't know what is the name of the extension that should be generated during the compiling process! I'm only guessing that for Intel it should something called "igb" or similar. Nothing like that has been built during my compilations with errors.

Also, after some digging I realized that PCP might have drivers for that Intel NIC but not compiled into the kernel.
Looking at /mnt/mmcblk0p2/tce/kernelsrc/drivers/net/ethernet/intel
I see there is an "igb" folder that is supposed to be the driver for my card / chipset. It also has a makefile. Trying to compile it I get:
/mnt/mmcblk0p2/tce/kernelsrc/drivers/net/ethernet/intel
That makefile is much shorter than the one I downloaded from Intel. Bui it also didn't have any variables related to a platform target.

It's the first time I'm compiling a linux kerner. Today I spend 5 hours trying to solve this - I'm hopeless now... I don't entirely understand the process and I'm not familiar with PCP's achitecture. I need help, I'm out of options.
I think there's no other guide in the PCP documenation related to compiling drivers than the one I reffering in this post. It only has some examples for popular Realtek chips.

Digging thru the internet (Tiny Core Linux forum) I've concluded that I may need an additional module: "i2c-KERNEL". Yet, there's no such thing in PCP...
(https://forum.tinycorelinux.net/index.php/topic,23589.0.html) > Another user there was able to install his Intel NIC with some help.
I don't undestand that process, because I'm not familiar with the Tiny Core and the differences between it and the PCP...

PS: The new Intel NIC I can see using "lspci" but it's not available in "ifconfig" or any similar tool. I concluded it's because of no driver in the kernel.
PS2: A manual contained in the drivers from Intel I downloaded claims completely different things are going to happen during compilation than the ones included in the manual from PCP. I think it's not relevant to how PCP works, so it's of no help.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions