[ipxe-devel] iPXE finds no PCI devices in Nitro-based Amazon VMs

Dominique Lefevre domingolefevre at gmail.com
Thu Mar 26 06:03:46 UTC 2020


Hi,

I've tried to run iPXE in Amazon VMs, and it seems to have a problem
enumerating PCI devices in nitro-based instances.

I've built an ipxe.usb image this way:

$ make bin/ipxe.usb CONFIG=cloud \
    DEBUG=pci,ena,dhcp,iscsi \
    EMBED=embed-stage0

As of now, embed-stage0 is an empty script (it just contains #!ipxe).
iPXE version is bdf0e029ae8c9a0e173d5988ee64ff910538af53.

When run in Xen-based and Nitro-based instances, ipxe.usb produces two
very different outputs.

In a Xen-based t2.micro instance I see the following printed to the console:
> Booting from Hard Disk...
> iPXE initialising devices...0000:00:00.0 (8086:1237 class 060000) has no driver
> 0000:00:01.0 (8086:7000 class 060100) has no driver
> 0000:00:01.1 (8086:7010 class 010180) has no driver
> 0000:00:01.3 (8086:7113 class 068000) has no driver
> 0000:00:02.0 (1013:00b8 class 030000) has no driver
> 0000:00:03.0 (5853:0001) has driver "hvm"
> 0000:00:03.0 has mem f2000000 io c000 irq 5
> 0000:00:03.0 latency timer is unreasonably low at 0. Setting to 32.
> ok
>
>
>
> iPXE 1.20.1+ (gbdf0e) -- Open Source Network Boot Firmware -- http://ipxe.org
> blah-blah-blah

So far so good. PCI devices get enumerated, and iPXE recognises a
device that interfaces with Xen.

Booting the same image in a t3.micro instance gives me the following:
> Booting from Hard Disk 0...
> iPXE initialising devices...ok
>
>
>
> iPXE 1.20.1+ (gbdf0e) -- Open Source Network Boot Firmware -- http://ipxe.org
> Features: DNS HTTP iSCSI TFTP SRP AoE ELF MBOOT PXE bzImage menu PXEXT
> No bootable device. Retrying in 60 seconds.

As if PCI devices were not there!

I've also tried another nitro-based instance type (c5.large), and
tried booting bin-x86_64-pcbios/ipxe.usb instead of a 32 bit version.
Still no PCI devices were found.

Amazon's ena is available in nitro-based EC2 instances only. Since
iPXE has a driver for ena, there certainly is a way to run iPXE in
nitro-based VMs. How did you do that? Is there a build option that I
have missed?

Thanks in advance, and best regards,
Dominique.



More information about the ipxe-devel mailing list