diff options
Diffstat (limited to 'qemu/roms/ipxe/src/config')
37 files changed, 1247 insertions, 0 deletions
diff --git a/qemu/roms/ipxe/src/config/.gitignore b/qemu/roms/ipxe/src/config/.gitignore new file mode 100644 index 000000000..8e94f32fe --- /dev/null +++ b/qemu/roms/ipxe/src/config/.gitignore @@ -0,0 +1 @@ +.buildserial.* diff --git a/qemu/roms/ipxe/src/config/colour.h b/qemu/roms/ipxe/src/config/colour.h new file mode 100644 index 000000000..57d20c1db --- /dev/null +++ b/qemu/roms/ipxe/src/config/colour.h @@ -0,0 +1,38 @@ +#ifndef CONFIG_COLOUR_H +#define CONFIG_COLOUR_H + +/** @file + * + * Display colour configuration + * + */ + +FILE_LICENCE ( GPL2_OR_LATER ); + +#define COLOR_NORMAL_FG COLOR_WHITE +#define COLOR_NORMAL_BG COLOR_BLUE + +#define COLOR_SELECT_FG COLOR_WHITE +#define COLOR_SELECT_BG COLOR_RED + +#define COLOR_SEPARATOR_FG COLOR_CYAN +#define COLOR_SEPARATOR_BG COLOR_BLUE + +#define COLOR_EDIT_FG COLOR_BLACK +#define COLOR_EDIT_BG COLOR_CYAN + +#define COLOR_ALERT_FG COLOR_WHITE +#define COLOR_ALERT_BG COLOR_RED + +#define COLOR_URL_FG COLOR_CYAN +#define COLOR_URL_BG COLOR_BLUE + +#define COLOR_PXE_FG COLOR_BLACK +#define COLOR_PXE_BG COLOR_WHITE + +#include <config/named.h> +#include NAMED_CONFIG(colour.h) +#include <config/local/colour.h> +#include LOCAL_NAMED_CONFIG(colour.h) + +#endif /* CONFIG_COLOUR_H */ diff --git a/qemu/roms/ipxe/src/config/config.c b/qemu/roms/ipxe/src/config/config.c new file mode 100644 index 000000000..6c8b9551a --- /dev/null +++ b/qemu/roms/ipxe/src/config/config.c @@ -0,0 +1,358 @@ +/* + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2, or (at + * your option) any later version. + */ + +FILE_LICENCE ( GPL2_OR_LATER ); + +#include <config/general.h> +#include <config/console.h> +#include <config/sideband.h> +#include <config/settings.h> + +/** @file + * + * Configuration options + * + * This file contains macros that pull various objects into the link + * based on definitions in configuration header files. Ideally it + * should be the only place in iPXE where one might need to use #ifdef + * for compile-time options. + * + * In the fairly common case where an object should only be considered + * for inclusion if the subsystem it depends on is present, its + * configuration macros should be placed in a file named + * <tt>config_<i>subsystem</i>.c</tt>, where @e subsystem is the + * object basename of the main source file for that subsystem. The + * build system will pull in that file if @c subsystem.c is included + * in the final iPXE executable built. + */ + +/* + * Build ID string calculations + * + */ +#undef XSTR +#undef STR +#define XSTR(s) STR(s) +#define STR(s) #s + +#ifdef BUILD_SERIAL +#include "config/.buildserial.h" +#define BUILD_SERIAL_STR " #" XSTR(BUILD_SERIAL_NUM) +#else +#define BUILD_SERIAL_STR "" +#endif + +#ifdef BUILD_ID +#define BUILD_ID_STR " " BUILD_ID +#else +#define BUILD_ID_STR "" +#endif + +#if defined(BUILD_ID) || defined(BUILD_SERIAL) +#define BUILD_STRING " [build" BUILD_ID_STR BUILD_SERIAL_STR "]" +#else +#define BUILD_STRING "" +#endif + +/* + * Drag in all requested console types + * + */ + +#ifdef CONSOLE_PCBIOS +REQUIRE_OBJECT ( bios_console ); +#endif +#ifdef CONSOLE_SERIAL +REQUIRE_OBJECT ( serial_console ); +#endif +#ifdef CONSOLE_DIRECT_VGA +REQUIRE_OBJECT ( video_subr ); +#endif +#ifdef CONSOLE_PC_KBD +REQUIRE_OBJECT ( pc_kbd ); +#endif +#ifdef CONSOLE_SYSLOG +REQUIRE_OBJECT ( syslog ); +#endif +#ifdef CONSOLE_SYSLOGS +REQUIRE_OBJECT ( syslogs ); +#endif +#ifdef CONSOLE_EFI +REQUIRE_OBJECT ( efi_console ); +#endif +#ifdef CONSOLE_LINUX +REQUIRE_OBJECT ( linux_console ); +#endif +#ifdef CONSOLE_VMWARE +REQUIRE_OBJECT ( vmconsole ); +#endif +#ifdef CONSOLE_DEBUGCON +REQUIRE_OBJECT ( debugcon ); +#endif +#ifdef CONSOLE_VESAFB +REQUIRE_OBJECT ( vesafb ); +#endif + +/* + * Drag in all requested network protocols + * + */ +#ifdef NET_PROTO_IPV4 +REQUIRE_OBJECT ( ipv4 ); +#endif +#ifdef NET_PROTO_IPV6 +REQUIRE_OBJECT ( ipv6 ); +#endif + +/* + * Drag in all requested PXE support + * + */ +#ifdef PXE_MENU +REQUIRE_OBJECT ( pxemenu ); +#endif +#ifdef PXE_STACK +REQUIRE_OBJECT ( pxe_call ); +#endif + +/* + * Drag in all requested download protocols + * + */ +#ifdef DOWNLOAD_PROTO_TFTP +REQUIRE_OBJECT ( tftp ); +#endif +#ifdef DOWNLOAD_PROTO_HTTP +REQUIRE_OBJECT ( http ); +#endif +#ifdef DOWNLOAD_PROTO_HTTPS +REQUIRE_OBJECT ( https ); +#endif +#ifdef DOWNLOAD_PROTO_FTP +REQUIRE_OBJECT ( ftp ); +#endif +#ifdef DOWNLOAD_PROTO_NFS +REQUIRE_OBJECT ( nfs_open ); +#endif +#ifdef DOWNLOAD_PROTO_SLAM +REQUIRE_OBJECT ( slam ); +#endif + +/* + * Drag in all requested SAN boot protocols + * + */ +#ifdef SANBOOT_PROTO_ISCSI +REQUIRE_OBJECT ( iscsi ); +#endif + +/* + * Drag in all requested resolvers + * + */ +#ifdef DNS_RESOLVER +REQUIRE_OBJECT ( dns ); +#endif + +/* + * Drag in all requested image formats + * + */ +#ifdef IMAGE_NBI +REQUIRE_OBJECT ( nbi ); +#endif +#ifdef IMAGE_ELF +REQUIRE_OBJECT ( elfboot ); +#endif +#ifdef IMAGE_MULTIBOOT +REQUIRE_OBJECT ( multiboot ); +#endif +#ifdef IMAGE_PXE +REQUIRE_OBJECT ( pxe_image ); +#endif +#ifdef IMAGE_SCRIPT +REQUIRE_OBJECT ( script ); +#endif +#ifdef IMAGE_BZIMAGE +REQUIRE_OBJECT ( bzimage ); +#endif +#ifdef IMAGE_ELTORITO +REQUIRE_OBJECT ( eltorito ); +#endif +#ifdef IMAGE_COMBOOT +REQUIRE_OBJECT ( comboot ); +REQUIRE_OBJECT ( com32 ); +REQUIRE_OBJECT ( comboot_call ); +REQUIRE_OBJECT ( com32_call ); +REQUIRE_OBJECT ( com32_wrapper ); +REQUIRE_OBJECT ( comboot_resolv ); +#endif +#ifdef IMAGE_EFI +REQUIRE_OBJECT ( efi_image ); +#endif +#ifdef IMAGE_SDI +REQUIRE_OBJECT ( sdi ); +#endif +#ifdef IMAGE_PNM +REQUIRE_OBJECT ( pnm ); +#endif +#ifdef IMAGE_PNG +REQUIRE_OBJECT ( png ); +#endif + +/* + * Drag in all requested commands + * + */ +#ifdef AUTOBOOT_CMD +REQUIRE_OBJECT ( autoboot_cmd ); +#endif +#ifdef NVO_CMD +REQUIRE_OBJECT ( nvo_cmd ); +#endif +#ifdef CONFIG_CMD +REQUIRE_OBJECT ( config_cmd ); +#endif +#ifdef IFMGMT_CMD +REQUIRE_OBJECT ( ifmgmt_cmd ); +#endif +/* IWMGMT_CMD is brought in by net80211.c if requested */ +#ifdef ROUTE_CMD +REQUIRE_OBJECT ( route_cmd ); +#endif +#ifdef IMAGE_CMD +REQUIRE_OBJECT ( image_cmd ); +#endif +#ifdef IMAGE_TRUST_CMD +REQUIRE_OBJECT ( image_trust_cmd ); +#endif +#ifdef DHCP_CMD +REQUIRE_OBJECT ( dhcp_cmd ); +#endif +#ifdef SANBOOT_CMD +REQUIRE_OBJECT ( sanboot_cmd ); +#endif +#ifdef MENU_CMD +REQUIRE_OBJECT ( menu_cmd ); +#endif +#ifdef LOGIN_CMD +REQUIRE_OBJECT ( login_cmd ); +#endif +#ifdef TIME_CMD +REQUIRE_OBJECT ( time_cmd ); +#endif +#ifdef DIGEST_CMD +REQUIRE_OBJECT ( digest_cmd ); +#endif +#ifdef PXE_CMD +REQUIRE_OBJECT ( pxe_cmd ); +#endif +#ifdef LOTEST_CMD +REQUIRE_OBJECT ( lotest_cmd ); +#endif +#ifdef VLAN_CMD +REQUIRE_OBJECT ( vlan_cmd ); +#endif +#ifdef POWEROFF_CMD +REQUIRE_OBJECT ( poweroff_cmd ); +#endif +#ifdef REBOOT_CMD +REQUIRE_OBJECT ( reboot_cmd ); +#endif +#ifdef CPUID_CMD +REQUIRE_OBJECT ( cpuid_cmd ); +#endif +#ifdef SYNC_CMD +REQUIRE_OBJECT ( sync_cmd ); +#endif +#ifdef NSLOOKUP_CMD +REQUIRE_OBJECT ( nslookup_cmd ); +#endif +#ifdef PCI_CMD +REQUIRE_OBJECT ( pci_cmd ); +#endif +#ifdef PARAM_CMD +REQUIRE_OBJECT ( param_cmd ); +#endif +#ifdef NEIGHBOUR_CMD +REQUIRE_OBJECT ( neighbour_cmd ); +#endif +#ifdef PING_CMD +REQUIRE_OBJECT ( ping_cmd ); +#endif +#ifdef CONSOLE_CMD +REQUIRE_OBJECT ( console_cmd ); +#endif +#ifdef IPSTAT_CMD +REQUIRE_OBJECT ( ipstat_cmd ); +#endif +#ifdef PROFSTAT_CMD +REQUIRE_OBJECT ( profstat_cmd ); +#endif + +/* + * Drag in miscellaneous objects + * + */ +#ifdef NULL_TRAP +REQUIRE_OBJECT ( nulltrap ); +#endif +#ifdef GDBSERIAL +REQUIRE_OBJECT ( gdbidt ); +REQUIRE_OBJECT ( gdbserial ); +REQUIRE_OBJECT ( gdbstub_cmd ); +#endif +#ifdef GDBUDP +REQUIRE_OBJECT ( gdbidt ); +REQUIRE_OBJECT ( gdbudp ); +REQUIRE_OBJECT ( gdbstub_cmd ); +#endif + +/* + * Drag in objects that are always required, but not dragged in via + * symbol dependencies. + * + */ +REQUIRE_OBJECT ( device ); +REQUIRE_OBJECT ( embedded ); + +/* linux drivers aren't picked up by the parserom utility so drag them in here */ +#ifdef DRIVERS_LINUX +REQUIRE_OBJECT ( tap ); +#endif + +/* + * Drag in relevant sideband entry points + */ +#ifdef CONFIG_BOFM +#ifdef BOFM_EFI +REQUIRE_OBJECT ( efi_bofm ); +#endif /* BOFM_EFI */ +#endif /* CONFIG_BOFM */ + +/* + * Drag in relevant settings sources + */ +#ifdef PCI_SETTINGS +REQUIRE_OBJECT ( pci_settings ); +#endif +#ifdef VMWARE_SETTINGS +REQUIRE_OBJECT ( guestinfo ); +#endif +#ifdef CPUID_SETTINGS +REQUIRE_OBJECT ( cpuid_settings ); +#endif +#ifdef MEMMAP_SETTINGS +REQUIRE_OBJECT ( memmap_settings ); +#endif + +/* + * Drag in selected keyboard map + */ +#define REQUIRE_KEYMAP_OBJECT( _map ) REQUIRE_OBJECT ( keymap_ ## _map ) +#define REQUIRE_KEYMAP( _map ) REQUIRE_KEYMAP_OBJECT ( _map ) +REQUIRE_KEYMAP ( KEYBOARD_MAP ); diff --git a/qemu/roms/ipxe/src/config/config_ethernet.c b/qemu/roms/ipxe/src/config/config_ethernet.c new file mode 100644 index 000000000..d13bd6144 --- /dev/null +++ b/qemu/roms/ipxe/src/config/config_ethernet.c @@ -0,0 +1,26 @@ +/* + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2, or (at + * your option) any later version. + */ + +FILE_LICENCE ( GPL2_OR_LATER ); + +#include <config/general.h> + +/** @file + * + * Ethernet configuration options + * + */ + +/* + * Drag in Ethernet-specific protocols + */ +#ifdef SANBOOT_PROTO_AOE +REQUIRE_OBJECT ( aoe ); +#endif +#ifdef NET_PROTO_FCOE +REQUIRE_OBJECT ( fcoe ); +#endif diff --git a/qemu/roms/ipxe/src/config/config_fc.c b/qemu/roms/ipxe/src/config/config_fc.c new file mode 100644 index 000000000..414646994 --- /dev/null +++ b/qemu/roms/ipxe/src/config/config_fc.c @@ -0,0 +1,31 @@ +/* + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2, or (at + * your option) any later version. + */ + +FILE_LICENCE ( GPL2_OR_LATER ); + +#include <config/general.h> + +/** @file + * + * Fibre Channel configuration options + * + */ + +/* + * Drag in Fibre Channel-specific commands + * + */ +#ifdef FCMGMT_CMD +REQUIRE_OBJECT ( fcmgmt_cmd ); +#endif + +/* + * Drag in Fibre Channel-specific protocols + */ +#ifdef SANBOOT_PROTO_FCP +REQUIRE_OBJECT ( fcp ); +#endif diff --git a/qemu/roms/ipxe/src/config/config_infiniband.c b/qemu/roms/ipxe/src/config/config_infiniband.c new file mode 100644 index 000000000..432e621d0 --- /dev/null +++ b/qemu/roms/ipxe/src/config/config_infiniband.c @@ -0,0 +1,23 @@ +/* + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2, or (at + * your option) any later version. + */ + +FILE_LICENCE ( GPL2_OR_LATER ); + +#include <config/general.h> + +/** @file + * + * Infiniband configuration options + * + */ + +/* + * Drag in Infiniband-specific protocols + */ +#ifdef SANBOOT_PROTO_IB_SRP +REQUIRE_OBJECT ( ib_srp ); +#endif diff --git a/qemu/roms/ipxe/src/config/config_net80211.c b/qemu/roms/ipxe/src/config/config_net80211.c new file mode 100644 index 000000000..b33c363b1 --- /dev/null +++ b/qemu/roms/ipxe/src/config/config_net80211.c @@ -0,0 +1,50 @@ +/* + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2, or (at + * your option) any later version. + */ + +FILE_LICENCE ( GPL2_OR_LATER ); + +#include <config/general.h> + +/** @file + * + * 802.11 configuration options + * + */ + +/* + * Drag in 802.11-specific commands + * + */ +#ifdef IWMGMT_CMD +REQUIRE_OBJECT ( iwmgmt_cmd ); +#endif + +/* + * Drag in 802.11 error message tables + * + */ +#ifdef ERRMSG_80211 +REQUIRE_OBJECT ( wireless_errors ); +#endif + +/* + * Drag in 802.11 cryptosystems and handshaking protocols + * + */ +#ifdef CRYPTO_80211_WEP +REQUIRE_OBJECT ( wep ); +#endif + +#ifdef CRYPTO_80211_WPA2 +#define CRYPTO_80211_WPA +REQUIRE_OBJECT ( wpa_ccmp ); +#endif + +#ifdef CRYPTO_80211_WPA +REQUIRE_OBJECT ( wpa_psk ); +REQUIRE_OBJECT ( wpa_tkip ); +#endif diff --git a/qemu/roms/ipxe/src/config/config_romprefix.c b/qemu/roms/ipxe/src/config/config_romprefix.c new file mode 100644 index 000000000..85f1e78ab --- /dev/null +++ b/qemu/roms/ipxe/src/config/config_romprefix.c @@ -0,0 +1,24 @@ +/* + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2, or (at + * your option) any later version. + */ + +FILE_LICENCE ( GPL2_OR_LATER ); + +#include <config/general.h> + +/** @file + * + * ROM prefix configuration options + * + */ + +/* + * Provide UNDI loader if PXE stack is requested + * + */ +#ifdef PXE_STACK +REQUIRE_OBJECT ( undiloader ); +#endif diff --git a/qemu/roms/ipxe/src/config/config_route.c b/qemu/roms/ipxe/src/config/config_route.c new file mode 100644 index 000000000..33e18cdd3 --- /dev/null +++ b/qemu/roms/ipxe/src/config/config_route.c @@ -0,0 +1,27 @@ +/* + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2, or (at + * your option) any later version. + */ + +FILE_LICENCE ( GPL2_OR_LATER ); + +#include <config/general.h> + +/** @file + * + * Routing management configuration options + * + */ + +/* + * Drag in routing management for relevant protocols + * + */ +#ifdef NET_PROTO_IPV4 +REQUIRE_OBJECT ( route_ipv4 ); +#endif +#ifdef NET_PROTO_IPV6 +REQUIRE_OBJECT ( route_ipv6 ); +#endif diff --git a/qemu/roms/ipxe/src/config/console.h b/qemu/roms/ipxe/src/config/console.h new file mode 100644 index 000000000..908ec5a0b --- /dev/null +++ b/qemu/roms/ipxe/src/config/console.h @@ -0,0 +1,36 @@ +#ifndef CONFIG_CONSOLE_H +#define CONFIG_CONSOLE_H + +/** @file + * + * Console configuration + * + * These options specify the console types that Etherboot will use for + * interaction with the user. + * + */ + +FILE_LICENCE ( GPL2_OR_LATER ); + +#include <config/defaults.h> + +//#define CONSOLE_PCBIOS /* Default BIOS console */ +//#define CONSOLE_SERIAL /* Serial port */ +//#define CONSOLE_DIRECT_VGA /* Direct access to VGA card */ +//#define CONSOLE_PC_KBD /* Direct access to PC keyboard */ +//#define CONSOLE_SYSLOG /* Syslog console */ +//#define CONSOLE_SYSLOGS /* Encrypted syslog console */ +//#define CONSOLE_VMWARE /* VMware logfile console */ +//#define CONSOLE_DEBUGCON /* Debug port console */ +//#define CONSOLE_VESAFB /* VESA framebuffer console */ + +#define KEYBOARD_MAP us + +#define LOG_LEVEL LOG_NONE + +#include <config/named.h> +#include NAMED_CONFIG(console.h) +#include <config/local/console.h> +#include LOCAL_NAMED_CONFIG(console.h) + +#endif /* CONFIG_CONSOLE_H */ diff --git a/qemu/roms/ipxe/src/config/crypto.h b/qemu/roms/ipxe/src/config/crypto.h new file mode 100644 index 000000000..1e021b0fb --- /dev/null +++ b/qemu/roms/ipxe/src/config/crypto.h @@ -0,0 +1,25 @@ +#ifndef CONFIG_CRYPTO_H +#define CONFIG_CRYPTO_H + +/** @file + * + * Cryptographic configuration + * + */ + +FILE_LICENCE ( GPL2_OR_LATER ); + +/** Margin of error (in seconds) allowed in signed timestamps + * + * We default to allowing a reasonable margin of error: 12 hours to + * allow for the local time zone being non-GMT, plus 30 minutes to + * allow for general clock drift. + */ +#define TIMESTAMP_ERROR_MARGIN ( ( 12 * 60 + 30 ) * 60 ) + +#include <config/named.h> +#include NAMED_CONFIG(crypto.h) +#include <config/local/crypto.h> +#include LOCAL_NAMED_CONFIG(crypto.h) + +#endif /* CONFIG_CRYPTO_H */ diff --git a/qemu/roms/ipxe/src/config/defaults.h b/qemu/roms/ipxe/src/config/defaults.h new file mode 100644 index 000000000..389c0b07b --- /dev/null +++ b/qemu/roms/ipxe/src/config/defaults.h @@ -0,0 +1,10 @@ +#ifndef CONFIG_DEFAULTS_H +#define CONFIG_DEFAULTS_H + +FILE_LICENCE ( GPL2_OR_LATER ); + +#define CONFIG_DEFAULTS(_platform) <config/defaults/_platform.h> + +#include CONFIG_DEFAULTS(PLATFORM) + +#endif /* CONFIG_DEFAULTS_H */ diff --git a/qemu/roms/ipxe/src/config/defaults/efi.h b/qemu/roms/ipxe/src/config/defaults/efi.h new file mode 100644 index 000000000..4276d9366 --- /dev/null +++ b/qemu/roms/ipxe/src/config/defaults/efi.h @@ -0,0 +1,32 @@ +#ifndef CONFIG_DEFAULTS_EFI_H +#define CONFIG_DEFAULTS_EFI_H + +/** @file + * + * Configuration defaults for EFI + * + */ + +FILE_LICENCE ( GPL2_OR_LATER ); + +#define UACCESS_EFI +#define IOAPI_X86 +#define PCIAPI_EFI +#define CONSOLE_EFI +#define TIMER_EFI +#define NAP_EFIX86 +#define UMALLOC_EFI +#define SMBIOS_EFI +#define SANBOOT_NULL +#define BOFM_EFI +#define ENTROPY_NULL +#define TIME_NULL +#define REBOOT_EFI + +#define IMAGE_EFI /* EFI image support */ +#define IMAGE_SCRIPT /* iPXE script image support */ + +#define REBOOT_CMD /* Reboot command */ +#define CPUID_CMD /* x86 CPU feature detection command */ + +#endif /* CONFIG_DEFAULTS_EFI_H */ diff --git a/qemu/roms/ipxe/src/config/defaults/linux.h b/qemu/roms/ipxe/src/config/defaults/linux.h new file mode 100644 index 000000000..bc5ba7851 --- /dev/null +++ b/qemu/roms/ipxe/src/config/defaults/linux.h @@ -0,0 +1,28 @@ +#ifndef CONFIG_DEFAULTS_LINUX_H +#define CONFIG_DEFAULTS_LINUX_H + +/** @file + * + * Configuration defaults for linux + * + */ + +FILE_LICENCE ( GPL2_OR_LATER ); + +#define CONSOLE_LINUX +#define TIMER_LINUX +#define UACCESS_LINUX +#define UMALLOC_LINUX +#define NAP_LINUX +#define SMBIOS_LINUX +#define SANBOOT_NULL +#define ENTROPY_LINUX +#define TIME_LINUX +#define REBOOT_NULL +#define PCIAPI_LINUX + +#define DRIVERS_LINUX + +#define IMAGE_SCRIPT + +#endif /* CONFIG_DEFAULTS_LINUX_H */ diff --git a/qemu/roms/ipxe/src/config/defaults/pcbios.h b/qemu/roms/ipxe/src/config/defaults/pcbios.h new file mode 100644 index 000000000..7debc8d2f --- /dev/null +++ b/qemu/roms/ipxe/src/config/defaults/pcbios.h @@ -0,0 +1,42 @@ +#ifndef CONFIG_DEFAULTS_PCBIOS_H +#define CONFIG_DEFAULTS_PCBIOS_H + +/** @file + * + * Configuration defaults for PCBIOS + * + */ + +FILE_LICENCE ( GPL2_OR_LATER ); + +#define UACCESS_LIBRM +#define IOAPI_X86 +#define PCIAPI_PCBIOS +#define TIMER_PCBIOS +#define CONSOLE_PCBIOS +#define NAP_PCBIOS +#define UMALLOC_MEMTOP +#define SMBIOS_PCBIOS +#define SANBOOT_PCBIOS +#define ENTROPY_RTC +#define TIME_RTC +#define REBOOT_PCBIOS + +#define IMAGE_ELF /* ELF image support */ +#define IMAGE_MULTIBOOT /* MultiBoot image support */ +#define IMAGE_PXE /* PXE image support */ +#define IMAGE_SCRIPT /* iPXE script image support */ +#define IMAGE_BZIMAGE /* Linux bzImage image support */ + +#define PXE_STACK /* PXE stack in iPXE - required for PXELINUX */ +#define PXE_MENU /* PXE menu booting */ + +#define SANBOOT_PROTO_ISCSI /* iSCSI protocol */ +#define SANBOOT_PROTO_AOE /* AoE protocol */ +#define SANBOOT_PROTO_IB_SRP /* Infiniband SCSI RDMA protocol */ +#define SANBOOT_PROTO_FCP /* Fibre Channel protocol */ + +#define REBOOT_CMD /* Reboot command */ +#define CPUID_CMD /* x86 CPU feature detection command */ + +#endif /* CONFIG_DEFAULTS_PCBIOS_H */ diff --git a/qemu/roms/ipxe/src/config/entropy.h b/qemu/roms/ipxe/src/config/entropy.h new file mode 100644 index 000000000..7de2f6737 --- /dev/null +++ b/qemu/roms/ipxe/src/config/entropy.h @@ -0,0 +1,16 @@ +#ifndef CONFIG_ENTROPY_H +#define CONFIG_ENTROPY_H + +/** @file + * + * Entropy API configuration + * + */ + +FILE_LICENCE ( GPL2_OR_LATER ); + +#include <config/defaults.h> + +#include <config/local/entropy.h> + +#endif /* CONFIG_ENTROPY_H */ diff --git a/qemu/roms/ipxe/src/config/general.h b/qemu/roms/ipxe/src/config/general.h new file mode 100644 index 000000000..539203457 --- /dev/null +++ b/qemu/roms/ipxe/src/config/general.h @@ -0,0 +1,190 @@ +#ifndef CONFIG_GENERAL_H +#define CONFIG_GENERAL_H + +/** @file + * + * General configuration + * + */ + +FILE_LICENCE ( GPL2_OR_LATER ); + +#include <config/defaults.h> + +/* + * Branding + * + * Vendors may use these strings to add their own branding to iPXE. + * PRODUCT_NAME is displayed prior to any iPXE branding in startup + * messages, and PRODUCT_SHORT_NAME is used where a brief product + * label is required (e.g. in BIOS boot selection menus). + * + * To minimise end-user confusion, it's probably a good idea to either + * make PRODUCT_SHORT_NAME a substring of PRODUCT_NAME or leave it as + * "iPXE". + * + */ +#define PRODUCT_NAME "" +#define PRODUCT_SHORT_NAME "iPXE" + +/* + * Banner timeout configuration + * + * This controls the timeout for the "Press Ctrl-B for the iPXE + * command line" banner displayed when iPXE starts up. The value is + * specified in tenths of a second for which the banner should appear. + * A value of 0 disables the banner. + * + * ROM_BANNER_TIMEOUT controls the "Press Ctrl-B to configure iPXE" + * banner displayed only by ROM builds of iPXE during POST. This + * defaults to being twice the length of BANNER_TIMEOUT, to allow for + * BIOSes that switch video modes immediately before calling the + * initialisation vector, thus rendering the banner almost invisible + * to the user. + */ +#define BANNER_TIMEOUT 20 +#define ROM_BANNER_TIMEOUT ( 2 * BANNER_TIMEOUT ) + +/* + * Network protocols + * + */ + +#define NET_PROTO_IPV4 /* IPv4 protocol */ +#undef NET_PROTO_IPV6 /* IPv6 protocol */ +#undef NET_PROTO_FCOE /* Fibre Channel over Ethernet protocol */ + +/* + * PXE support + * + */ +//#undef PXE_STACK /* PXE stack in iPXE - you want this! */ +//#undef PXE_MENU /* PXE menu booting */ + +/* + * Download protocols + * + */ + +#define DOWNLOAD_PROTO_TFTP /* Trivial File Transfer Protocol */ +#define DOWNLOAD_PROTO_HTTP /* Hypertext Transfer Protocol */ +#undef DOWNLOAD_PROTO_HTTPS /* Secure Hypertext Transfer Protocol */ +#undef DOWNLOAD_PROTO_FTP /* File Transfer Protocol */ +#undef DOWNLOAD_PROTO_SLAM /* Scalable Local Area Multicast */ +#undef DOWNLOAD_PROTO_NFS /* Network File System Protocol */ + +/* + * SAN boot protocols + * + */ + +//#undef SANBOOT_PROTO_ISCSI /* iSCSI protocol */ +//#undef SANBOOT_PROTO_AOE /* AoE protocol */ +//#undef SANBOOT_PROTO_IB_SRP /* Infiniband SCSI RDMA protocol */ +//#undef SANBOOT_PROTO_FCP /* Fibre Channel protocol */ + +/* + * 802.11 cryptosystems and handshaking protocols + * + */ +#define CRYPTO_80211_WEP /* WEP encryption (deprecated and insecure!) */ +#define CRYPTO_80211_WPA /* WPA Personal, authenticating with passphrase */ +#define CRYPTO_80211_WPA2 /* Add support for stronger WPA cryptography */ + +/* + * Name resolution modules + * + */ + +#define DNS_RESOLVER /* DNS resolver */ + +/* + * Image types + * + * Etherboot supports various image formats. Select whichever ones + * you want to use. + * + */ +//#define IMAGE_NBI /* NBI image support */ +//#define IMAGE_ELF /* ELF image support */ +//#define IMAGE_MULTIBOOT /* MultiBoot image support */ +//#define IMAGE_PXE /* PXE image support */ +//#define IMAGE_SCRIPT /* iPXE 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_SDI /* SDI image support */ +//#define IMAGE_PNM /* PNM image support */ +//#define IMAGE_PNG /* PNG image support */ + +/* + * Command-line commands to include + * + */ +#define AUTOBOOT_CMD /* Automatic booting */ +#define NVO_CMD /* Non-volatile option storage commands */ +#define CONFIG_CMD /* Option configuration console */ +#define IFMGMT_CMD /* Interface management commands */ +#define IWMGMT_CMD /* Wireless interface management commands */ +#define FCMGMT_CMD /* Fibre Channel management commands */ +#define ROUTE_CMD /* Routing table management commands */ +#define IMAGE_CMD /* Image management commands */ +#define DHCP_CMD /* DHCP management commands */ +#define SANBOOT_CMD /* SAN boot commands */ +#define MENU_CMD /* Menu commands */ +#define LOGIN_CMD /* Login command */ +#define SYNC_CMD /* Sync command */ +//#define NSLOOKUP_CMD /* DNS resolving command */ +//#define TIME_CMD /* Time commands */ +//#define DIGEST_CMD /* Image crypto digest commands */ +//#define LOTEST_CMD /* Loopback testing commands */ +//#define VLAN_CMD /* VLAN commands */ +//#define PXE_CMD /* PXE commands */ +//#define REBOOT_CMD /* Reboot command */ +//#define POWEROFF_CMD /* Power off command */ +//#define IMAGE_TRUST_CMD /* Image trust management commands */ +//#define PCI_CMD /* PCI commands */ +//#define PARAM_CMD /* Form parameter commands */ +//#define NEIGHBOUR_CMD /* Neighbour management commands */ +//#define PING_CMD /* Ping command */ +//#define CONSOLE_CMD /* Console command */ +//#define IPSTAT_CMD /* IP statistics commands */ +//#define PROFSTAT_CMD /* Profiling commands */ + +/* + * ROM-specific options + * + */ +#undef NONPNP_HOOK_INT19 /* Hook INT19 on non-PnP BIOSes */ + +/* + * Error message tables to include + * + */ +#undef ERRMSG_80211 /* All 802.11 error descriptions (~3.3kb) */ + +/* + * Obscure configuration options + * + * You probably don't need to touch these. + * + */ + +#define NETDEV_DISCARD_RATE 0 /* Drop every N packets (0=>no drop) */ +#undef BUILD_SERIAL /* Include an automatic build serial + * number. Add "bs" to the list of + * make targets. For example: + * "make bin/rtl8139.dsk bs" */ +#undef BUILD_ID /* Include a custom build ID string, + * e.g "test-foo" */ +#undef NULL_TRAP /* Attempt to catch NULL function calls */ +#undef GDBSERIAL /* Remote GDB debugging over serial */ +#undef GDBUDP /* Remote GDB debugging over UDP + * (both may be set) */ + +#include <config/named.h> +#include NAMED_CONFIG(general.h) +#include <config/local/general.h> +#include LOCAL_NAMED_CONFIG(general.h) + +#endif /* CONFIG_GENERAL_H */ diff --git a/qemu/roms/ipxe/src/config/ioapi.h b/qemu/roms/ipxe/src/config/ioapi.h new file mode 100644 index 000000000..ce19c6d71 --- /dev/null +++ b/qemu/roms/ipxe/src/config/ioapi.h @@ -0,0 +1,19 @@ +#ifndef CONFIG_IOAPI_H +#define CONFIG_IOAPI_H + +/** @file + * + * I/O API configuration + * + */ + +FILE_LICENCE ( GPL2_OR_LATER ); + +#include <config/defaults.h> + +//#undef PCIAPI_PCBIOS /* Access via PCI BIOS */ +//#define PCIAPI_DIRECT /* Direct access via Type 1 accesses */ + +#include <config/local/ioapi.h> + +#endif /* CONFIG_IOAPI_H */ diff --git a/qemu/roms/ipxe/src/config/isa.h b/qemu/roms/ipxe/src/config/isa.h new file mode 100644 index 000000000..e2a05050f --- /dev/null +++ b/qemu/roms/ipxe/src/config/isa.h @@ -0,0 +1,17 @@ +#ifndef CONFIG_ISA_H +#define CONFIG_ISA_H + +/** @file + * + * ISA probe address configuration + * + * You can override the list of addresses that will be probed by any + * ISA drivers. + * + */ +#undef ISA_PROBE_ADDRS /* e.g. 0x200, 0x300 */ +#undef ISA_PROBE_ONLY /* Do not probe any other addresses */ + +#include <config/local/isa.h> + +#endif /* CONFIG_ISA_H */ diff --git a/qemu/roms/ipxe/src/config/named.h b/qemu/roms/ipxe/src/config/named.h new file mode 100644 index 000000000..36efdabdd --- /dev/null +++ b/qemu/roms/ipxe/src/config/named.h @@ -0,0 +1,26 @@ +#ifndef CONFIG_NAMED_H +#define CONFIG_NAMED_H + +/** @file + * + * Named configurations + * + */ + +FILE_LICENCE ( GPL2_OR_LATER ); + +/* config/<name>/<header>.h */ +#ifdef CONFIG +#define NAMED_CONFIG(_header) <config/CONFIG/_header> +#else +#define NAMED_CONFIG(_header) <config/_header> +#endif + +/* config/local/<name>/<header>.h */ +#ifdef LOCAL_CONFIG +#define LOCAL_NAMED_CONFIG(_header) <config/local/LOCAL_CONFIG/_header> +#else +#define LOCAL_NAMED_CONFIG(_header) <config/_header> +#endif + +#endif /* CONFIG_NAMED_H */ diff --git a/qemu/roms/ipxe/src/config/nap.h b/qemu/roms/ipxe/src/config/nap.h new file mode 100644 index 000000000..187af4289 --- /dev/null +++ b/qemu/roms/ipxe/src/config/nap.h @@ -0,0 +1,19 @@ +#ifndef CONFIG_NAP_H +#define CONFIG_NAP_H + +/** @file + * + * CPU sleeping + * + */ + +FILE_LICENCE ( GPL2_OR_LATER ); + +#include <config/defaults.h> + +//#undef NAP_PCBIOS +//#define NAP_NULL + +#include <config/local/nap.h> + +#endif /* CONFIG_NAP_H */ diff --git a/qemu/roms/ipxe/src/config/reboot.h b/qemu/roms/ipxe/src/config/reboot.h new file mode 100644 index 000000000..240ef87be --- /dev/null +++ b/qemu/roms/ipxe/src/config/reboot.h @@ -0,0 +1,16 @@ +#ifndef CONFIG_REBOOT_H +#define CONFIG_REBOOT_H + +/** @file + * + * Reboot API configuration + * + */ + +FILE_LICENCE ( GPL2_OR_LATER ); + +#include <config/defaults.h> + +#include <config/local/reboot.h> + +#endif /* CONFIG_REBOOT_H */ diff --git a/qemu/roms/ipxe/src/config/sanboot.h b/qemu/roms/ipxe/src/config/sanboot.h new file mode 100644 index 000000000..1d7f5f177 --- /dev/null +++ b/qemu/roms/ipxe/src/config/sanboot.h @@ -0,0 +1,16 @@ +#ifndef CONFIG_SANBOOT_H +#define CONFIG_SANBOOT_H + +/** @file + * + * sanboot API configuration + * + */ + +FILE_LICENCE ( GPL2_OR_LATER ); + +#include <config/defaults.h> + +#include <config/local/sanboot.h> + +#endif /* CONFIG_SANBOOT_H */ diff --git a/qemu/roms/ipxe/src/config/serial.h b/qemu/roms/ipxe/src/config/serial.h new file mode 100644 index 000000000..08368efdb --- /dev/null +++ b/qemu/roms/ipxe/src/config/serial.h @@ -0,0 +1,40 @@ +#ifndef CONFIG_SERIAL_H +#define CONFIG_SERIAL_H + +/** @file + * + * Serial port configuration + * + * These options affect the operation of the serial console. They + * take effect only if the serial console is included using the + * CONSOLE_SERIAL option. + * + */ + +FILE_LICENCE ( GPL2_OR_LATER ); + +#define COM1 0x3f8 +#define COM2 0x2f8 +#define COM3 0x3e8 +#define COM4 0x2e8 + +#define COMCONSOLE COM1 /* I/O port address */ + +/* Keep settings from a previous user of the serial port (e.g. lilo or + * LinuxBIOS), ignoring COMSPEED, COMDATA, COMPARITY and COMSTOP. + */ +#undef COMPRESERVE + +#ifndef COMPRESERVE +#define COMSPEED 115200 /* Baud rate */ +#define COMDATA 8 /* Data bits */ +#define COMPARITY 0 /* Parity: 0=None, 1=Odd, 2=Even */ +#define COMSTOP 1 /* Stop bits */ +#endif + +#include <config/named.h> +#include NAMED_CONFIG(serial.h) +#include <config/local/serial.h> +#include LOCAL_NAMED_CONFIG(serial.h) + +#endif /* CONFIG_SERIAL_H */ diff --git a/qemu/roms/ipxe/src/config/settings.h b/qemu/roms/ipxe/src/config/settings.h new file mode 100644 index 000000000..42fe9cc81 --- /dev/null +++ b/qemu/roms/ipxe/src/config/settings.h @@ -0,0 +1,22 @@ +#ifndef CONFIG_SETTINGS_H +#define CONFIG_SETTINGS_H + +/** @file + * + * Configuration settings sources + * + */ + +FILE_LICENCE ( GPL2_OR_LATER ); + +#define PCI_SETTINGS /* PCI device settings */ +//#define CPUID_SETTINGS /* CPUID settings */ +//#define MEMMAP_SETTINGS /* Memory map settings */ +//#define VMWARE_SETTINGS /* VMware GuestInfo settings */ + +#include <config/named.h> +#include NAMED_CONFIG(settings.h) +#include <config/local/settings.h> +#include LOCAL_NAMED_CONFIG(settings.h) + +#endif /* CONFIG_SETTINGS_H */ diff --git a/qemu/roms/ipxe/src/config/sideband.h b/qemu/roms/ipxe/src/config/sideband.h new file mode 100644 index 000000000..039bb5d09 --- /dev/null +++ b/qemu/roms/ipxe/src/config/sideband.h @@ -0,0 +1,19 @@ +#ifndef CONFIG_SIDEBAND_H +#define CONFIG_SIDEBAND_H + +/** @file + * + * Sideband access by platform firmware + * + */ + +FILE_LICENCE ( GPL2_OR_LATER ); + +//#define CONFIG_BOFM /* IBM's BladeCenter Open Fabric Manager */ + +#include <config/named.h> +#include NAMED_CONFIG(sideband.h) +#include <config/local/sideband.h> +#include LOCAL_NAMED_CONFIG(sideband.h) + +#endif /* CONFIG_SIDEBAND_H */ diff --git a/qemu/roms/ipxe/src/config/time.h b/qemu/roms/ipxe/src/config/time.h new file mode 100644 index 000000000..0576211fd --- /dev/null +++ b/qemu/roms/ipxe/src/config/time.h @@ -0,0 +1,16 @@ +#ifndef CONFIG_TIME_H +#define CONFIG_TIME_H + +/** @file + * + * Time API configuration + * + */ + +FILE_LICENCE ( GPL2_OR_LATER ); + +#include <config/defaults.h> + +#include <config/local/time.h> + +#endif /* CONFIG_TIME_H */ diff --git a/qemu/roms/ipxe/src/config/timer.h b/qemu/roms/ipxe/src/config/timer.h new file mode 100644 index 000000000..abd669851 --- /dev/null +++ b/qemu/roms/ipxe/src/config/timer.h @@ -0,0 +1,19 @@ +#ifndef CONFIG_TIMER_H +#define CONFIG_TIMER_H + +/** @file + * + * Timer configuration. + * + */ + +FILE_LICENCE ( GPL2_OR_LATER ); + +#include <config/defaults.h> + +//#undef TIMER_PCBIOS +//#define TIMER_RDTSC + +#include <config/local/timer.h> + +#endif /* CONFIG_TIMER_H */ diff --git a/qemu/roms/ipxe/src/config/umalloc.h b/qemu/roms/ipxe/src/config/umalloc.h new file mode 100644 index 000000000..245c6b4aa --- /dev/null +++ b/qemu/roms/ipxe/src/config/umalloc.h @@ -0,0 +1,16 @@ +#ifndef CONFIG_UMALLOC_H +#define CONFIG_UMALLOC_H + +/** @file + * + * User memory allocation API configuration + * + */ + +FILE_LICENCE ( GPL2_OR_LATER ); + +#include <config/defaults.h> + +#include <config/local/umalloc.h> + +#endif /* CONFIG_UMALLOC_H */ diff --git a/qemu/roms/ipxe/src/config/vbox/README b/qemu/roms/ipxe/src/config/vbox/README new file mode 100644 index 000000000..b6f2da950 --- /dev/null +++ b/qemu/roms/ipxe/src/config/vbox/README @@ -0,0 +1,18 @@ +Build using this command line: + +make CONFIG=vbox bin/intel--virtio-net--pcnet32.isarom + +Max size of a VirtualBox ROM is 56KB, 57344 bytes. There should be no need +to pad the image as long as the binary is smaller or equal to this size. + +To use the ROM in VirtualBox you need to enable it using this command: + +vboxmanage setextradata global \ + VBoxInternal/Devices/pcbios/0/Config/LanBootRom \ + /absolute/path/to/intel--virtio-net--pcnet32.isarom + +NB: If you build the ROM using the .rom prefix then it'll be built as a PCI +ROM, which won't work properly in VirtualBox. The error message you'll see +is "No more network devices", which is somewhat confusing. If you enter the +shell and use the "autoboot" command things will work as intended. Remember +to always build as a .isarom to avoid this issue. diff --git a/qemu/roms/ipxe/src/config/vbox/colour.h b/qemu/roms/ipxe/src/config/vbox/colour.h new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/qemu/roms/ipxe/src/config/vbox/colour.h diff --git a/qemu/roms/ipxe/src/config/vbox/console.h b/qemu/roms/ipxe/src/config/vbox/console.h new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/qemu/roms/ipxe/src/config/vbox/console.h diff --git a/qemu/roms/ipxe/src/config/vbox/crypto.h b/qemu/roms/ipxe/src/config/vbox/crypto.h new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/qemu/roms/ipxe/src/config/vbox/crypto.h diff --git a/qemu/roms/ipxe/src/config/vbox/general.h b/qemu/roms/ipxe/src/config/vbox/general.h new file mode 100644 index 000000000..27d15daf2 --- /dev/null +++ b/qemu/roms/ipxe/src/config/vbox/general.h @@ -0,0 +1,27 @@ +/* Disabled from config/defaults/pcbios.h */ + +#undef IMAGE_ELF +#undef SANBOOT_PROTO_ISCSI +#undef SANBOOT_PROTO_AOE +#undef SANBOOT_PROTO_IB_SRP +#undef SANBOOT_PROTO_FCP +#undef REBOOT_CMD +#undef CPUID_CMD + +/* Disabled from config/general.h */ + +#undef DOWNLOAD_PROTO_HTTP +#undef CRYPTO_80211_WEP +#undef CRYPTO_80211_WPA +#undef CRYPTO_80211_WPA2 +#undef IWMGMT_CMD +#undef FCMGMT_CMD +#undef SANBOOT_CMD +#undef MENU_CMD +#undef LOGIN_CMD +#undef SYNC_CMD + +/* Ensure ROM banner is not displayed */ + +#undef ROM_BANNER_TIMEOUT +#define ROM_BANNER_TIMEOUT 0 diff --git a/qemu/roms/ipxe/src/config/vbox/serial.h b/qemu/roms/ipxe/src/config/vbox/serial.h new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/qemu/roms/ipxe/src/config/vbox/serial.h diff --git a/qemu/roms/ipxe/src/config/vbox/settings.h b/qemu/roms/ipxe/src/config/vbox/settings.h new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/qemu/roms/ipxe/src/config/vbox/settings.h diff --git a/qemu/roms/ipxe/src/config/vbox/sideband.h b/qemu/roms/ipxe/src/config/vbox/sideband.h new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/qemu/roms/ipxe/src/config/vbox/sideband.h |