May the #! be with you

USTC Ethernet Boot Service Update (2011-04-01)

| Stephen Zhang | Comments

Introduction to iPXE

USTC Ethernet Boot Service was first started by Fengguang Wu early in 2000. It enables people within USTC campus to boot their computer through network, to install Linux, experience Linux, and perform system maintainance tasks such as partitioning and backup.

In 2010, we upgrade the service with gPXE, which is an enhanced version to PXE. It is capable with protocols like HTTP, FTP, etc, which gains great performance improvement against TFTP.

Today, we upgrade gPXE to iPXE. iPXE is the official replacement of gPXE. It is developed by people who originally developed gPXE (which envolved from Etherboot). Unfortunately, the and domains are owned by an individual who wishes to exercise a high degree of control over the project and the codebase, so in April 2010 the decision was taken to create a new project named iPXE, using theexisting code base as a starting point. Since the two project diverged, development on gPXE has stopped, while iPXE is very actively updated.

Update Contents

The first notable update is the chain load sequence. In previous configuration, our chain is like:

[PXE (BIOS)]/Grub --> gPXE --> menu.c32 (Syslinux <= 3.86) --> gPXE

As gPXE/iPXE does not support natively load com32r modules from Syslinux newer than 3.86, and is not that compatible with that older than Syslinux 3.86, it caused many incompatible problems. Many PC’s will reboot immediately after hit one menu item. Now then chain load sequence has changed to:

[PXE (BIOS)]/Grub --> iPXE --> Syslinux 4.0.3 --> menu.c32

Now, it works perfectly!

There are some minor updates with the service. Added Offline NT Password & Registry Editor. Added Hardware Detection Tool from Syslinux.


For users within USTC campus, there are generally two ways to use the newly updated iPXE.

  • Chain load from PXE. If your PC supports PXE, you can boot from LAN and get loaded into PXE, and then type “iPXE”, then you will be brought to iPXE.
  • Chain load from Grub. If your PC does not support PXE, or you are in a LAN without DHCP server setup properly, you can download ustc.ipxe.lkrn, and boot it with grub.
    • Grub 1: kernel ustc.ipxe.lkrn
    • Grub 2: linux16 ustc.ipxe.lkrn


  • If you don’t know how to use it, please post your problem in Linux board of USTCBBS.
  • If you encountered some bugs, please contact lug AT

Source Code

The source code are located in;a=summary. You can get the code:

git clone

Then setup your web server, add a virtual path to ustc-pxe/src. Then get the binary files:

cd src

you then can boot you other PC with grub loading bin/ipxe.lkrn, after iPXE starts, press CTRL-B to enter command line. Then type the following commands:

chain http://your-site/path-to-src/boot.php

If you want native PXE boot environment, you have to set up tftp and dhcp. See instructions here:

Enjoy it!