[ipxe-devel] Feedback of tests iPXE with UEFI

Michael Brown mcb30 at ipxe.org
Wed Sep 17 14:12:59 BST 2014


On 16/09/14 19:15, Rémi Palancher wrote:
> #!ipxe
> initrd http://10.89.89.60/disk/rhel6.5/initrd.img
> kernel http://10.89.89.60/disk/rhel6.5/vmlinuz
> boot
>
> Both the kernel and the initrd are those officially delivered by RedHat in
> their ISO (in images/pxeboot/ directory).
>
> But unfortunately, it finally hangs on these errors:
>
> http://10.89.89.60/disk/rhel6.5/initrd.img... ok
> http://10.89.89.60/disk/rhel6.5/vmlinuz... ok
> Could not select: Exec format error (http://ipxe.org/2e008081)
> Could not boot image: Exec format error (http://ipxe.org/2e008081)
> No more network devices

CentOS6.5 (and thus presumably also RHEL6.5) ship kernels built without 
CONFIG_EFI_STUB enabled.  The kernels are therefore not EFI binaries and 
so iPXE cannot (yet) load them under UEFI.

On 7.0 and later, the kernels are build with CONFIG_EFI_STUB and so this 
particular problem goes away.

> But it finally fails with a kernel panic when trying to mount the root FS from
> of the initrd:
>
> [    0.000000] Initializing cgroup subsys cpuset
> [    0.000000] Initializing cgroup subsys cpu
> [    0.000000] Initializing cgroup subsys cpuacct
> [    0.000000] Linux version 3.10.0-123.el7.x86_64 (mockbuild at x86-017.build.eng.bos.redhat.com) (gcc version 4.8.2 20140120 (Red Hat 4.8.2-16) (GCC) ) #1 SMP Mon May 5 11:16:57 EDT 2014
> [    0.000000] Command line: vmlinuz ip=eth0:dhcp ipv6.disable=1 console=ttyS0,115200n8r ksdevice=eth0 ks=http://10.89.89.60/disk/rhel7/kickstart.ks autostep net.ifnames=0 biosdevname=0

For UEFI kernels, you need to instruct the kernel to load the initrd 
(which has already been downloaded by iPXE) by adding an 
"initrd=<filename>" to the kernel command line.  If you add 
"initrd=initrd.img" to your kernel command line, it should start working.

Please note that there was a rather nasty memory corruption bug in 
kernels earlier than v3.16, which may cause the initrd to become 
corrupted (and so give the same "Unable to mount root fs" kernel panic). 
  Upgrading to v3.16 (or an older kernel which has the relevant bugfix 
backported) will avoid this problem.


All of these problems will go away when iPXE gains the ability to load 
bzImage kernels directly under UEFI (rather than going through the 
kernel's EFI stub).  Until then, please use the workarounds above.


> As a side note, fortunately, undionly.kpxe with legacy BIOS supports works like
> a charm on this server. Let me thank you for your awesome work on iPXE.

Thank you!

Michael


More information about the ipxe-devel mailing list