Work Around BIOS Halting on iPXE Exit

Overview

Often times, iPXE users will need to exit iPXE and continue with the BIOS boot order for any number of reasons, such as installing an OS directly to a SAN device. Unfortunately, many system BIOSes will not continue with their boot order after iPXE exits and hands back control of the boot process.

In the majority of these scenarios, one can use the sanboot command directed at a local disk to achieve the same effect as having the BIOS continue to the next boot device. But when this doesn't work, a more robust option for booting a local drive is to use iPXE to simply chainload a different bootloader more suited to handling local disks.

Using GRUB4DOS

GRUB4DOS has the ability to chainload the MBR from a local disk, can execute a second stage bootloader1) directly from a FAT, NTFS, or EXT volume, and includes an ATAPI driver for chainloading CD/DVD drives.

Setup

  • Download the GRUB4DOS binaries of the latest version2) over at SourceForge.
    • Alternatively, the latest development version can be found here.
  • Place the file grub.exe from the archive on an HTTP/FTP/TFTP server so that you can chainload it with iPXE.

Usage

grub.exe is loaded like any other kernel image that iPXE can pass control to, and iPXE can pass commandline arguments to it to supply either a configuration file, or a simple string of commands.

For simplicity, we'll use the command-based approach:

  chain http://server/grub4dos/grub.exe --config-file="command1;command2;commandN"

Examples


Boot Hard Disk 0 (MBR)
  chain http://server/grub4dos/grub.exe --config-file="rootnoverify (hd0);chainloader +1"
Boot Hard Disk 0, Partition 0 (VBR)
  chain http://server/grub4dos/grub.exe --config-file="root (hd0,0);chainloader +1"
Boot CD/DVD 0
  chain http://server/grub4dos/grub.exe --config-file="cdrom --init;map --hook;root (cd0);chainloader (cd0)"
Find and Load the Windows Boot Manager
  • Notes: This is good for booting Windows when you don't know its disk number. For XP/2003, change BOOTMGR to NTLDR.
  chain http://server/grub4dos/grub.exe --config-file="find --set-root /BOOTMGR;chainloader /BOOTMGR"
Find a File, and Boot the Partition it's on
  • Notes: Unlike the BOOTMGR example, this will load the VBR of the partition, which will then chain your second-stage bootloader.
  chain http://server/grub4dos/grub.exe --config-file="find --set-root /filename;chainloader +1"

Troubleshooting / Other Options

GRUB4DOS includes extensive support for various filesystems and device types, including floppy disks (fd) and memory-mapped disks (rd). The contents of the (rd) device can even be an initrd downloaded by iPXE before executing GRUB4DOS. Consult the GRUB4DOS readme file for a comprehensive set of examples.

1)
such as the Windows Boot Manager
2)
grub4dos 0.4.4 at the time of this writing (January 2013)
appnote/work_around_bios_halting_on_ipxe_exit.txt ยท Last modified: 2013/05/22 01:31 by rulerof
Recent changes RSS feed CC Attribution-Share Alike 4.0 International Driven by DokuWiki
All uses of this content must include an attribution to the iPXE project and the URL https://ipxe.org
References to "iPXE" may not be altered or removed.