PXE functionality lost in crux 1.2.2

Through 1.2.0 we have been able to provision our equipment using PXE. We have done it back to the Vyatta 6.0 days, and prior I think. With 1.2.2 the ability has stopped working. The live boot process halts with the message…

Waiting for ethernet card(s) up... If this fails, maybe the ethernet card is not supported by the kernel 4.19.54-amd64-vyos.

We use PXE to provision everything Windows, Mac, & Linux. We have had to build our own initrd’s to include non-free firmware for other projects. We know our way around initrd issues with PXE. But what we are seeing now in vyos is failure with Protectli devices using the Intel 82583V. That is a very common NIC that loads with the Intel e1000e driver in 1.2.0.

What changed and how do we fix it? I did notice that initrd is a lot smaller in 1.2.2 vs 1.2.0, though we have not had the time to pull them open and compare to see what is missing.

We build our own distros, but have also checked the official 1.2.2. Same thing.

Did you manage to get to the bottom of this? I’m facing a similar error on a SuperMicro box with Intel X710 and X540 cards.

Did the system boot properly with the live CD from a USB stick? That’s the next thing for me to try but I’m not at the same location as the box so it’s not quick to do.

I’ve ended up getting 1.2.0-H4 onto our PXE server and that installs fine. On all versions (1.2.0, 1.2.2, 1.2-rolling) I’ve done this by extracting initrd.img, vmlinuz, and filesystem.squashfs from the /live directory in the ISO and serving them up over TFTP to PXE clients. Sounds like a regression between 1.2.0 and 1.2.1 to me.

No resolution. Not even an acknowledgement. I put the issue here first and have not yet filed a bug report.

To get around the issue for now, we use 1.2.0 to build machines via PXE, then move to higher versions by performing an upgrade.

Hi @patanne and @DanFoster,

I think you both are deploying VyOS through PXE. I would like to know how you make it work (I mean for those old versions you mention).

I did some tests trying to deploy VyOS-1.1.8. The farthest I got is it started to boot, but then it quickly gave me a kernel-panic : /

Where do you get the pxelinux.0 file from?
What is exactly your structure of directories and files shared in the TFTP server?
Would you please share the configuration file (or files) you use inside the pxelinux.cfg directory?

Thank you

talk to @Unicron on slack
1.1.8 not really intended for pxe boot

The oldest version I mentioned was the current hotfix branch of 1.2.0. I haven’t used 1.1.8 at all so can’t comment on that.

The get 1.2.0 to PXE boot, you need to add the vmlinuz and initrd.img files from the /live directory on the release ISO image to your TFTP server, same as you would to PXE boot anything else, and make the filesystem.squashfs available somewhere - in my case I put this on an internally accessible HTTP server. The section in my pxelinux.cfg/default file is:

    MENU LABEL ^VyOS 1.2.0
    KERNEL vyos-1.2.0/vmlinuz
    APPEND initrd=vyos-1.2.0/initrd.img boot=live components hostname=newvyos.34sp.com username=live nopersistence noautologin nonetworking union=overlay fetch=http://<web server IP>/vyos/1.2.0/filesystem.squashfs

The option then turns up in the normal PXE menu and is bootable.

Thank you very much, I will keep testing.

Anyway, I have opened a task in Phabricator because, as you mentioned, the e1000e driver does not seem to be in the initrd of the latest VyOS versions anymore.