NUC10 NIC Compatibility
-
Wanted to see if anyone had any luck getting a NUC10 to boot to FOG. I’ve tried a variety of the most recent kernels to no avail. I also followed the documented procedure for compiling my own 5.4.12 kernel, with no luck. The NUC has a I219 controller in it, and I’ve seen some similar posts in various forums with people having issues getting the controller to work properly in Linux, but none of the fixes I’ve found seem to do anything.
Any help would be much appreciated!
-
@nextechinc said in NUC10 NIC Compatibility:
I’ve tried a variety of the most recent kernels to no avail.
Please post a picture of how far you get in the process of booting. Any error message?
-
Thanks for the speedy reply!
Based on this post, I’m currently operating off of the theory that version 3.2.6 of the e1000e driver is currently included with the 5.4.12 kernel, which may not be compatible with the controller built into the NUC. I’ve downloaded version 3.6.0 of the e1000e source code from Intel, and am trying to see if I can build a kernel with that version baked in. I don’t often drill into compiling my own kernels, so I’m not sure how much success, if any, I’ll have with this method.
-
@nextechinc Lets collect a bit more information on that NUC. Go back into fog and reschedule another capture/deploy (don’t matter), but before you hit the schedule task button, tick the debug check box then schedule the task. PXE boot the target computer. After a few screens of text you need to clear by pressing enter you will be dropped to the FOS Linux command prompt in debug mode. At the command prompt key in
lspci -nn | grep -i net
and post a screen shot of the output here. -
Ok, my kernel modification ended up working. Here’s a rundown of the steps I took to get it working…
cd /usr/src wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.4.12.tar.xz tar -xf linux-5.4.12.tar.xz cd linux-5.4.12 wget -O .config https://github.com/FOGProject/fos/raw/master/configs/kernelx64.config git clone git://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git make oldconfig cd /usr/src #The following line may need to be modified, if Intel ever changes the location of this driver wget https://downloadmirror.intel.com/15817/eng/e1000e-3.6.0.tar.gz tar -xf ./e1000e-3.6.0.tar.gz cd e1000e-3.6.0/src
The driver source code needs to be modified to account for a change that was made in the kernel source code. Modify line 2799 of kcompat.h.
Change:
#include <linux/pci-aspm.h>
to:#include <linux/pci.h>
Now to inject the 3.6.0 driver, and compile
cd /usr/src rm -rf linux-5.4.12/drivers/net/ethernet/intel/e1000e cp -rf e1000e-3.6.0/src linux-5.4.12/drivers/net/ethernet/intel/e1000e cd linux-5.4.12 make -j4 bzImage cp arch/x86/boot/bzImage /var/www/html/fog/service/ipxe/bzImage
I’m sure this is only going to be a temporary fix. I suspect the native linux kernel will be updated soon to include a more recent version of this driver. But until then, this seems to work.
-
@george1421
Here’s the result of the requested command:
-
@nextechinc Ok let me look up the codes.
-
8086:02f0 is the intel wireless adapter.
8086:0d4f is the intel 1000e network adapter.Looking at the kernel database 8086:0d4f is in the linux 5.5+ kernel and not before. ref: https://cateee.net/lkddb/web-lkddb/E1000E.html So that is why building linux 5.4 did not work for you (you might try adding that hardware ID to the existing 5.4 intel nic driver and it might work or might not). You ARE running on the bleeding edge with that hardware.
So what can you do? Well a USB3 or USB2 network adapter will work in a pinch. You will need to have both network adapters plugged in. The LOM nic for pxe booting and USB nic for FOS Linux imaging. Its kind of janky but until the linux kernel can catch up to the hardware, sometimes you have to just be janky.
-
@george1421
Do you think I’d be better of running with the RC of 5.5? Or with my tweaked version of 5.4, with the 3.6.0 e1000e driver injected in? -
@nextechinc I can’t answer that. If you can tweak 5.4 with the newer driver then go for it. 5.5rc may also work. I guess the question would be how many NUCs do you have and what would take the least amount of effort to do (probably 5.5). Understand that you can define a custom kernel for each host definition. SO what ever direction you go in keep the kernel name unique and only assign that kernel to the systems that need it.