From: Chen Jin, Bharath Pattabiraman, and Patrick Foley Date: Fri, 3 Jan 2014 21:19:49 +0000 (-0600) Subject: Guest PXE boot code X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?p=palacios.git;a=commitdiff_plain;h=29c15fa34687b243a7e410489efcb4b087ace387 Guest PXE boot code --- diff --git a/guest/pxe/README b/guest/pxe/README new file mode 100644 index 0000000..675275a --- /dev/null +++ b/guest/pxe/README @@ -0,0 +1,57 @@ +PXE is a standard for network booting of a machine that leverages +DHCP, TFTP, and a specialized bootloader. + +It is possible to PXE boot a guest in Palacios in one of two ways. First, +the BIOS and/or virtual NIC firmware you use may directly support it. +The second option is to boot a tiny image that contains a PXE boot +engine, which is what is described here. + +This technique was developed by Chen Kin, Bharath Pattabiraman, +and Patrick Foley during EECS 441 at Northwestern. + +The Etherboot/gPXE project (http://etherboot.org/wiki/index.php) has +created a PXE boot engine that can be compiled into a variety of +forms (firmware, isos, etc). You can use rom-o-matic to create a custom +iso image: http://rom-o-matic.net/gpxe/gpxe-1.0.1/contrib/rom-o-matic/ + +In this directory, the file gpxe-1.0.1-gpxe.iso is one such custom +iso image, one that includes all available NIC drivers. The file +gpxe.pal is an example of how to use such an image (the same as +any other bootable CD image). + +In addition to booting from gpxe, your guest configuration must include +a NIC that gpxe can drive, and that NIC needs to attached to a network +on which the PXE server can be found. One approach is to use +a passthrough device. The following maps an NE2000 NIC available on +the host into the VM: + + + pci0 + 0x10EC + 0x8029 + 50 + + +Another possibility is to map a virtual NIC and bridge to a physical +NIC: + + + MACADDR + PCI_BUS_ID + + + + + + + +A third possibility is to map a virtual NIC and bridge it to VNET. +See the technical report for more information on this. + +Note that more recent versions of gpxe (1.0.1+) include support for +the paravirtualized virtio-nic. This is probably the kind of NIC you +want to use. + +Configuring a PXE server is outside the scope of this document, but +a related document available from our web site describes how to do so +to support PXE-based Kitten/Palacios development. diff --git a/guest/pxe/gpxe-1.0.1-gpxe.iso b/guest/pxe/gpxe-1.0.1-gpxe.iso new file mode 100644 index 0000000..f21715a Binary files /dev/null and b/guest/pxe/gpxe-1.0.1-gpxe.iso differ diff --git a/guest/pxe/gpxe.pal b/guest/pxe/gpxe.pal new file mode 100644 index 0000000..0803ed7 --- /dev/null +++ b/guest/pxe/gpxe.pal @@ -0,0 +1,162 @@ + + + + + + + 256 + + + false + VTLB + + + + + + + + + + 100 + + + + friendly + 1000 + + + + + enable + + + + + + + + + + + + apic + + + + pci0 + + + pci0 + + + + + + + + user + + + + + + + + + + + + + + + + pci0 + southbridge + + + ide0_0_0 + + V3VEE CDROM + CDROM + 0 + 0 + + + + pci0 + 01:02:03:04:05:06 + + + + + + ide0 + + + + + 0x00 + 0x07 + PRINT_AND_IGNORE + + + + 0xc0 + 0xc7 + PRINT_AND_IGNORE + + + + 0x81 + 0x87 + PRINT_AND_IGNORE + + + + 0x88 + 0x8f + PRINT_AND_IGNORE + + + + 0x08 + 0x0f + PRINT_AND_IGNORE + + + + 0xd0 + 0xde + PRINT_AND_IGNORE + + + + 0x274 + 0x277 + PRINT_AND_IGNORE + + + + 0x279 + 0x279 + PRINT_AND_IGNORE + + + + 0xa79 + 0xa79 + PRINT_AND_IGNORE + + + + 0x378 + 0x37f + PRINT_AND_IGNORE + + + + +