====== Differences ====== This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
soc:2009:dverkamp:notes:linux_mkbootfs [2009/06/05 08:01] drv created |
soc:2009:dverkamp:notes:linux_mkbootfs [2009/06/19 06:51] (current) drv |
||
---|---|---|---|
Line 16: | Line 16: | ||
Success is defined as reaching the busybox shell prompt. | 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. | ||