From cae1bcfed91c4620a75f47b7adc389e407ab3dd2 Mon Sep 17 00:00:00 2001 From: jbjohnso Date: Mon, 20 Jul 2009 13:54:47 +0000 Subject: [PATCH] -Add an 'hdboot' command to xnba to allow a clean 'localboot' behavior -Add back in harmless kvm workaround, stable kvm still susceptible, two nops areacceptable even when they don't matter. -Add scalability enhancement patches to KVM -Explicitly remove troublesome 'IMAGE_EFI' support (causes UEFI systems to reboot) -Remove Multiboot image support (mboot.c32 is much more usable, and gPXE codebase would require a lot of code to become equivalent that would likely push it beyond the 64k limit. -Add 'NVO' commands, which really includes changing transient DHCP options --- gpxe/gpxe-0.9.7-config.patch | 18 +++++------ gpxe/gpxe-0.9.7-hdboot.patch | 60 ++++++++++++++++++++++++++++++++++++ gpxe/xnba-kvm.spec | 9 +++++- gpxe/xnba-undi.spec | 6 +++- 4 files changed, 82 insertions(+), 11 deletions(-) create mode 100644 gpxe/gpxe-0.9.7-hdboot.patch diff --git a/gpxe/gpxe-0.9.7-config.patch b/gpxe/gpxe-0.9.7-config.patch index f047620..b7a023f 100644 --- a/gpxe/gpxe-0.9.7-config.patch +++ b/gpxe/gpxe-0.9.7-config.patch @@ -1,6 +1,6 @@ diff -urN gpxe-0.9.7/src/config/general.h gpxe-0.9.7-config/src/config/general.h ---- gpxe-0.9.7/src/config/general.h 2009-03-01 21:23:42.000000000 -0500 -+++ gpxe-0.9.7-config/src/config/general.h 2009-06-23 12:49:23.000000000 -0400 +--- gpxe-0.9.7/src/config/general.h 2009-07-09 10:15:27.000000000 -0400 ++++ gpxe-0.9.7-config/src/config/general.h 2009-07-09 10:19:39.000000000 -0400 @@ -48,7 +48,7 @@ #undef DOWNLOAD_PROTO_NFS /* Network File System */ #define DOWNLOAD_PROTO_HTTP /* Hypertext Transfer Protocol */ @@ -19,7 +19,7 @@ diff -urN gpxe-0.9.7/src/config/general.h gpxe-0.9.7-config/src/config/general.h /* * Name resolution modules -@@ -76,16 +76,16 @@ +@@ -76,17 +76,17 @@ * you want to use. * */ @@ -33,26 +33,26 @@ diff -urN gpxe-0.9.7/src/config/general.h gpxe-0.9.7-config/src/config/general.h -//#define IMAGE_SCRIPT /* gPXE script image support */ -//#define IMAGE_BZIMAGE /* Linux bzImage image support */ -//#define IMAGE_COMBOOT /* SYSLINUX COMBOOT image support */ +-//#define IMAGE_EFI /* EFI image support */ +#define IMAGE_NBI /* NBI image support */ +#define IMAGE_ELF /* ELF image support */ +#define IMAGE_FREEBSD /* FreeBSD kernel image support */ -+#define IMAGE_MULTIBOOT /* MultiBoot image support */ ++#undef IMAGE_MULTIBOOT /* MultiBoot image support */ +#undef IMAGE_AOUT /* a.out image support */ +#undef IMAGE_WINCE /* WinCE image support */ +#define IMAGE_PXE /* PXE image support */ +#define IMAGE_SCRIPT /* gPXE script image support */ +#define IMAGE_BZIMAGE /* Linux bzImage image support */ +#undef IMAGE_COMBOOT /* SYSLINUX COMBOOT image support */ - //#define IMAGE_EFI /* EFI image support */ ++#undef IMAGE_EFI /* EFI image support */ /* -@@ -93,14 +93,14 @@ - * + * Command-line commands to include +@@ -94,13 +94,13 @@ */ #define AUTOBOOT_CMD /* Automatic booting */ --#define NVO_CMD /* Non-volatile option storage commands */ + #define NVO_CMD /* Non-volatile option storage commands */ -#define CONFIG_CMD /* Option configuration console */ -+#undef NVO_CMD /* Non-volatile option storage commands */ +#undef CONFIG_CMD /* Option configuration console */ #define IFMGMT_CMD /* Interface management commands */ #define ROUTE_CMD /* Routing table management commands */ diff --git a/gpxe/gpxe-0.9.7-hdboot.patch b/gpxe/gpxe-0.9.7-hdboot.patch new file mode 100644 index 0000000..6c57385 --- /dev/null +++ b/gpxe/gpxe-0.9.7-hdboot.patch @@ -0,0 +1,60 @@ +diff -urN gpxe-0.9.7/src/config/general.h gpxe-0.9.7-hdboot/src/config/general.h +--- gpxe-0.9.7/src/config/general.h 2009-07-20 09:44:50.000000000 -0400 ++++ gpxe-0.9.7-hdboot/src/config/general.h 2009-07-20 09:45:33.000000000 -0400 +@@ -100,6 +100,7 @@ + #define IMAGE_CMD /* Image management commands */ + #define DHCP_CMD /* DHCP management commands */ + #define SANBOOT_CMD /* SAN boot commands */ ++#define HDBOOT_CMD /* SAN boot commands */ + #undef LOGIN_CMD /* Login command */ + + /* +diff -urN gpxe-0.9.7/src/core/config.c gpxe-0.9.7-hdboot/src/core/config.c +--- gpxe-0.9.7/src/core/config.c 2009-03-01 21:23:42.000000000 -0500 ++++ gpxe-0.9.7-hdboot/src/core/config.c 2009-07-20 09:45:56.000000000 -0400 +@@ -193,6 +193,9 @@ + #ifdef SANBOOT_CMD + REQUIRE_OBJECT ( sanboot_cmd ); + #endif ++#ifdef HDBOOT_CMD ++REQUIRE_OBJECT ( hdboot_cmd ); ++#endif + #ifdef LOGIN_CMD + REQUIRE_OBJECT ( login_cmd ); + #endif +diff -urN gpxe-0.9.7/src/hci/commands/hdboot_cmd.c gpxe-0.9.7-hdboot/src/hci/commands/hdboot_cmd.c +--- gpxe-0.9.7/src/hci/commands/hdboot_cmd.c 1969-12-31 19:00:00.000000000 -0500 ++++ gpxe-0.9.7-hdboot/src/hci/commands/hdboot_cmd.c 2009-07-20 09:46:25.000000000 -0400 +@@ -0,0 +1,32 @@ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++/** ++ * The "hdboot" command ++ * ++ * @v argc Argument count ++ * @v argv Argument list ++ * @ret rc Exit code ++ */ ++static int hdboot_exec ( int argc, char **argv ) { ++ if (argc != 1) { ++ printf ( "Usage:\n" ++ " %s\n" ++ "\n" ++ "Boot from the first HD\n", ++ argv[0] ); ++ return 1; ++ } ++ int13_boot ( 0x80 ); ++ return 1; ++} ++ ++struct command hdboot_command __command = { ++ .name = "hdboot", ++ .exec = hdboot_exec, ++}; diff --git a/gpxe/xnba-kvm.spec b/gpxe/xnba-kvm.spec index cc2fc51..e9b2520 100644 --- a/gpxe/xnba-kvm.spec +++ b/gpxe/xnba-kvm.spec @@ -1,12 +1,13 @@ Name: xnba-kvm Version: 0.9.7 -Release: 3 +Release: 8 Summary: gPXE loader for virtual guests Group: System Environment/Kernel License: GPL URL: http://etherboot.org/wiki/index.php BuildRoot: %{_tmppath}/%{name}-%{version}-%{release} +Obsoletes: gpxe-kvm ExclusiveArch: i386 x86_64 @@ -20,6 +21,9 @@ Source0: gpxe-0.9.7.tar.gz Patch0: gpxe-0.9.7-branding.patch Patch1: gpxe-0.9.7-registeriscsionpxe.patch Patch2: gpxe-0.9.7-config.patch +Patch3: gpxe-0.9.7-ignorepackets.patch +Patch4: gpxe-0.9.7-kvmworkaround.patch +Patch5: gpxe-0.9.7-hdboot.patch %description The gPXE network bootloader provides network boot capability for virtual machines with e1000 and virtio network devices. This includes iSCSI and PXE with tftp or ftp image download capability. @@ -30,6 +34,9 @@ The gPXE network bootloader provides network boot capability for virtual machine %patch -p1 %patch1 -p1 %patch2 -p1 +%patch3 -p1 +%patch4 -p1 +%patch5 -p1 %build diff --git a/gpxe/xnba-undi.spec b/gpxe/xnba-undi.spec index d7988a4..89b1590 100644 --- a/gpxe/xnba-undi.spec +++ b/gpxe/xnba-undi.spec @@ -1,6 +1,6 @@ Name: xnba-undi Version: 0.9.7 -Release: 5 +Release: 8 Summary: xCAT Network Boot Agent for x86 PXE hosts Obsoletes: gpxe-xcat Obsoletes: gpxe-undi @@ -21,6 +21,8 @@ Patch0: gpxe-0.9.7-branding.patch Patch1: gpxe-0.9.7-registeriscsionpxe.patch Patch2: gpxe-0.9.7-config.patch Patch3: gpxe-0.9.7-ignorepackets.patch +Patch4: gpxe-0.9.7-kvmworkaround.patch +Patch5: gpxe-0.9.7-hdboot.patch %description The xCAT Network Boot Agent is a slightly modified version of gPXE. It provides enhanced boot features for any UNDI compliant x86 host. This includes iSCSI, http/ftp downloads, and gPXE script based booting. @@ -32,6 +34,8 @@ The xCAT Network Boot Agent is a slightly modified version of gPXE. It provides %patch1 -p1 %patch2 -p1 %patch3 -p1 +%patch4 -p1 +%patch5 -p1 %build