How to exchange (and which) iPXE ROM file?

Robert Dahlem

Active Member
May 7, 2018
16
1
43
61
Hello,

first: I know about Problems with iPXE pxe-virtio.rom and https. I'm on the latest Proxmox VE with no outstanding upgrades as of today.

I have a problem (which I will describe only if asked to because it is irrelevant to this case) with the delivered iPXE 1.20.1+ which I hope to solve by using 1.21.1. My first tests with chainloading undionly.kpxe where promising.

From what I read I need to replace /usr/share/kvm/pxe-virtio.rom with what has been compiled from iPXE as bin/virtio-net.rom and change the machine type with qm set 104 -machine pc-i440fx-8.1.pxe.

Unfortunately this doesn't seem to work: my boot screen still shows "iPXE 1.20.1+". Even deleting pxe-virtio.rom doesn't give any reaction.

Out of despair I moved efi-virtio.rom out of the way and bingo! Now the VM fails to start with failed to find romfile "efi-virtio.rom".

Now:
  • Which file do I need to compile in iPXE with which I can replace efi-virtio.rom?
  • Why is an EFI file in the game? My BIOS type is Default (SeaBIOS) and I don't see any other EFI relevant settings.
Kind regards,
Robert
 
Fun fact: I copied bin/virtio-net.rom from iPXE over /usr/share/kvm/efi-virtio.rom and now my VM boots "iPXE 1.12.1+ (g119c4)".

AND: my original problem is gone! :)

Let's lose a word about that: I'm using ReaR (Relax and Recover) for Backup & Restore purposes. In PXE-Restore mode basically it provides a kernel and initrd to boot the system and restore the data. The initrd is typically a thing with 500 or 700 MB. By default PXE downloads this by using TFTP, which is pretty slow. Newer ReaR versions support HTTP downloads which are way faster. But with iPXE 1.20.1 this ends up in a kernel panic because the root filesystem cannot be mounted:

kernel-panic.jpg

I suspected there might be something wrong with iPXE 1.20.1 and how it puts together HTTP downloads and wanted to give 1.21.1 a try.

Now that this is all solved: what would I need to do to get iPXE 1.21.1 into Proxmox? Please don't send me over to the bugtracker unless you have a good explanation for Bug 2939. :p
 
I suspected there might be something wrong with iPXE 1.20.1 and how it puts together HTTP downloads and wanted to give 1.21.1 a try.
I'm using http for netboot on 7.4 and it works fine. It is - as you expected - much faster than tftp.


The initrd is typically a thing with 500 or 700 MB.
That's very big. Is there no way to just boot of NFS? The initrd will be much smaller.
 
That's very big. Is there no way to just boot of NFS? The initrd will be much smaller.

That initrd is built by ReaR (Relax and Recover). It is intentionally that big because the rescue system includes all modules the original system knows about. This way it has a chance to run even if the target is a completely different machine than the original.
 
That initrd is built by ReaR (Relax and Recover). It is intentionally that big because the rescue system includes all modules the original system knows about. This way it has a chance to run even if the target is a completely different machine than the original.
The linux kernel isn't that big and network boot images normally only contain network drivers in their initrd and everything else is conditionally loaded via NFS to reduce the required bandwidth, at least this is what Debian normally does in its network boot image and it is also what debian-live builds. As far as I understand the webpage, the program "just networkifized" the original backup media, so you may not hook into the process and may need to live with the huge files.
 
The linux kernel isn't that big and network boot images normally only contain network drivers in their initrd and everything else is conditionally loaded via NFS to reduce the required bandwidth, at least this is what Debian normally does in its network boot image and it is also what debian-live builds. As far as I understand the webpage, the program "just networkifized" the original backup media, so you may not hook into the process and may need to live with the huge files.
You might perhaps like to adjust your perspective on what "normal" is. :) We are not talking about Debian (I use RHEL), we are not talking about a network image or a Live ISO, but about an initrd, which must support whatever hardware is found an the target system (which could be completely different from the original system) and also include the rescue/restore software. The reason is that there are exactly two files (kernel and initrd) which need to provide everything that is needed during restore, nothing can be loaded conditionally.

But let's get back to the questions in this thread:
  • What is the correct file to be exchanged for virtio ROM?
  • How do we get iPXE 1.21.1 into Proxmox?
 
There is no persistent way to change the iPXE. Maybe chainloading (load the new ipxe via the old one) is an option?
 

About

The Proxmox community has been around for many years and offers help and support for Proxmox VE, Proxmox Backup Server, and Proxmox Mail Gateway.
We think our community is one of the best thanks to people like you!

Get your subscription!

The Proxmox team works very hard to make sure you are running the best software and getting stable updates and security enhancements, as well as quick enterprise support. Tens of thousands of happy customers have a Proxmox subscription. Get yours easily in our online shop.

Buy now!