Linux bzImage boot
Test
Boot into a minimal Linux/busybox system created using mkbootfs via HTTP.
DUT configuration
No physical disks present. System configured to boot from NIC equipped with gPXE ROM.
Environment configuration
Apache HTTP server providing gPXE script, kernel, initrd, and modules as separate files. gPXE script set to instruct client to download kernel, initrd and relevant modules. DHCP server providing network configuration and path to gPXE script on HTTP server.
Result
Success is defined as reaching the busybox shell prompt.
Detailed test procedure
Prerequisites
- x86 uClibc toolchain (configured with RPC and large-file support)
- wrapper script for uClibc compiler named
uclibc
- git
- x86 Linux kernel (TODO: this should be built from source as well)
- HTTP and DHCP servers
Source checkout
git clone git://git.etherboot.org/scm/people/mcb30/mkbootfs.git cd mkbootfs git-submodule init git-submodule update
mkbootfs build
In the mkbootfs
directory, ensuring the uclibc
wrapper is in the $PATH, simply make
.
Server configuration
Copy all .bp files from the mkbootfs directory to the HTTP server.
Copy the x86 Linux kernel bzImage to the HTTP server.
Write a gPXE script on the HTTP server to boot Linux with the .bp files as initrds:
#!gpxe kernel http://server/dir/bzImage initrd http://server/dir/skeleton.bp initrd http://server/dir/busybox.bp initrd http://server/dir/policy.bp initrd http://server/dir/iscsi.bp boot
Configure the DHCP server to instruct the device under test to boot from this gPXE script:
filename "http://server/dir/script.gpxe";
Boot
Start the test machine; it should boot to a busybox shell prompt with a “gPXE Universal Boot” banner.