david/ipxe
Archived
1
0
Commit Graph

77 Commits

Author SHA1 Message Date
Michael Brown
2e03610c0d [multiboot] Allow for unspecified {load,bss}_end_addr for raw images
The multiboot specification states that, for raw images, if
load_end_addr is zero then it should be interpreted as meaning "use
the entire file", and if bss_end_addr is zero it should be interpreted
as meaning "no bss".
2008-09-06 01:57:52 +01:00
Daniel Verkamp
e8b22f203f [comboot] Add COMBOOT and COM32 support 2008-08-28 23:52:19 +01:00
Michael Brown
4815188dfc [elf] Add execution entry point debug messages for elf/multiboot images 2008-08-22 02:12:44 +01:00
Michael Brown
03c80c12b8 [iSCSI] Support Windows Server 2008 direct iSCSI installation
Add yet another ugly hack to iscsiboot.c, this time to allow the user to
inhibit the shutdown/removal of the iSCSI INT13 device (and the network
devices, since they are required for the iSCSI device to function).

On the plus side, the fact that shutdown() now takes flags to
differentiate between shutdown-for-exit and shutdown-for-boot means that
another ugly hack (to allow returning via the PXE stack on BIOSes that
have broken INT 18 calls) will be easier.

I feel dirty.
2008-07-17 17:45:17 +01:00
Michael Brown
dbe9269f3a [bzimage] Kill off the initrd image type
We can just treat all non-kernel images as initrds, which matches our
behaviour for multiboot kernels.  This allows us to eliminate initrd as
an image type, and treat the "initrd" command as just another synonym for
"imgfetch".
2008-07-08 01:30:11 +01:00
Stefan Hajnoczi
ce51128534 [bzImage] Support loading zImage kernels
zImage kernels require the real-mode portion to be loaded at 9000:0000
rather than 1000:0000.
2008-06-30 19:51:41 +01:00
Michael Brown
ac28d054c8 [bzimage] Support kernel command lines of greater than 256 characters
2.6.22+ kernels have an extra field in the bzimage_header structure to
indicate the maximum permitted command-line length.  Use this if it is
available.
2008-06-12 02:19:10 +01:00
Michael Brown
77a5cc6b13 [ELF] Add ability to boot ELF images generated by wraplinux and mkelfImage
Delete ELF as a generic image type.  The method for invoking an
ELF-based image (as well as any tables that must be set up to allow it
to boot) will always depend on the specific architecture.  core/elf.c
now only provides the elf_load() function, to avoid duplicating
functionality between ELF-based image types.

Add arch/i386/image/elfboot.c, to handle the generic case of 32-bit
x86 ELF images.  We don't currently set up any multiboot tables, ELF
notes, etc.  This seems to be sufficient for loading kernels generated
using both wraplinux and coreboot's mkelfImage.

Note that while Etherboot 5.4 allowed ELF images to return, we don't.
There is no callback mechanism for the loaded image to shut down gPXE,
which means that we have to shut down before invoking the image.  This
means that we lose device state, protection against being trampled on,
etc.  It is not safe to continue afterwards.
2008-06-09 13:50:00 +01:00
Michael Brown
3475b693b7 [HCI] Display "Not an executable image" when appropriate
PXE is a catch-all image format with no signature checks.  If an
unsupported image file is loaded, it will be treated as a PXE image.  In
most cases, the image will be too large to be loaded as a PXE image (which
has to fit in base memory), so the error returned to the user will be that
the segment could not fit within the memory region.

Add an explicit check to pxe_image.c to reject images larger than base
memory with ENOEXEC.

Add ENOEXEC to the error string table.
2008-04-08 16:28:00 +01:00
Michael Brown
92d15eff30 [Settings] Remove assumption that all settings have DHCP tag values
Allow for settings to be described by something other than a DHCP option
tag if desirable.  Currently used only for the MAC address setting.

Separate out fake DHCP packet creation code from dhcp.c to fakedhcp.c.

Remove notion of settings from dhcppkt.c.

Rationalise dhcp.c to use settings API only for final registration of the
DHCP options, rather than using {store,fetch}_setting throughout.
2008-03-25 20:46:16 +00:00
Michael Brown
ee4206a8a7 [DHCP] Fix up fake-packet creation as used by PXENV_GET_CACHED_INFO
Add dedicated functions create_dhcpdiscover(), create_dhcpack() and
create_proxydhcpack() for use by external code such as the PXE preboot
code.

Register ProxyDHCP options under the global scope "proxydhcp".

Unregister previously-acquired DHCP and ProxyDHCP settings when DHCP
succeeds.
2008-03-23 21:58:05 +00:00
Michael Brown
8afb36c3bc [Settings] Migrate DHCP and NVO code to the new settings API (untested) 2008-03-21 22:15:31 +00:00
Michael Brown
1949641d10 Fix compiler warnings that appear only on OpenBSD. 2007-12-06 14:16:46 -06:00
Michael Brown
755cb8379d Allow space for the kernel's real-mode .bss. Previously we weren't
allowing any space for this, which makes it surprising that bzImage
loading ever worked.
2007-11-04 04:27:38 +00:00
Michael Brown
56550e400e Redefine bzimage_exec_context::mem_limit to be the highest permissible
byte, rather than the number of permissible bytes (i.e. subtract one
from the value under the previous definition to get the value under
the new definition).

This avoids integer overflow on 64-bit kernels, where
bzhdr.initrd_addr_max may be 0xffffffffffffffff; under the old
behaviour we set mem_limit equal to initrd_addr_max+1, which meant it
ended up as zero.  Kernel loads would fail with ENOBUFS.
2007-09-28 01:23:06 +01:00
Michael Brown
688bac1656 Place multiboot command lines in base memory; Xen won't pick them up
otherwise.  :(
2007-08-02 23:09:03 +01:00
Michael Brown
d4947c05b2 Allow images to hold references to the originating URI.
Some shuffling around of the image management code; this needs tidying up.
2007-08-02 20:18:32 +01:00
Michael Brown
9fd6a0418f Allowed zero-cost enforced ordering of features in startup banner
list.

Added FEATURE() macros to most relevant (non-driver) files.
2007-08-02 14:51:03 +01:00
Michael Brown
726e366e8f Add code for constructing single-file cpio archives on the fly 2007-08-01 23:10:30 +01:00
Michael Brown
24f32a1945 Initrd concatenation now working 2007-08-01 15:29:15 +01:00
Michael Brown
c5d9114064 Allow loading of multiple initramfs images. 2007-07-31 18:09:18 +01:00
Michael Brown
5e26df0325 Centralise construction of the DHCP request and response packets. 2007-07-31 03:02:21 +01:00
Holger Lubitz
9a4790667a make multiboot_load static 2007-07-27 22:01:23 +02:00
Holger Lubitz
dc38303ff9 make nbi_load static 2007-07-27 22:00:51 +02:00
Holger Lubitz
5ec4e2ad50 make eltorito_load static 2007-07-27 21:58:31 +02:00
Michael Brown
d5e39286f7 We probably shouldn't leave interrupts disabled when starting an OS. 2007-07-25 02:02:24 +01:00
Michael Brown
07e11f8af9 Minor debug improvement 2007-07-19 17:01:21 +01:00
Michael Brown
6d2e4e719c Move uninitialised .data16 variables to .bss16; saves around 2000
bytes of useless zeroes in the final image.
2007-07-16 13:22:12 +01:00
Michael Brown
89349d7fad Separated out initialisation functions from startup/shutdown functions. 2007-07-03 23:09:56 +01:00
Michael Brown
071356d976 Ensure that pxe_netdev is set before starting up PXE NBP. 2007-07-03 00:02:26 +01:00
Michael Brown
e42eba4af4 Use a common base-memory packet buffer for DHCP construction (as used
by PXE and NBI) and UNDI packets (as used by undinet and UNDI).
2007-07-02 18:33:41 +01:00
Michael Brown
5f17089b14 pxe_netdev now holds a reference to the network device.
Use generic fields in struct device_description rather than assuming
that the struct device * is contained within a pci_device or
isapnp_device; this assumption is broken when using the undionly
driver.

Add PXENV_UNDI_SET_STATION_ADDRESS.
2007-07-02 17:43:32 +01:00
Michael Brown
e1646b4080 Place the actual version string in .data16, rather than just the
pointer to it.
2007-06-30 21:36:54 +01:00
Michael Brown
8130443f9f Separate out pxe_start_nbp() from pxe_image.c into pxe_call.c
Implement PXENV_RESTART_TFTP.
2007-06-30 14:56:35 +01:00
Michael Brown
d71b116f54 Fix stack on return from PXE NBP so that we can return properly. 2007-06-28 23:37:49 +01:00
Michael Brown
0d9b3e2dd2 Add 32-bit support.
Generate DHCP data block for images.
2007-03-22 16:18:46 +00:00
Michael Brown
160e66dbb9 Typo 2007-03-20 18:55:00 +00:00
Michael Brown
5578d3b2de Support 32-bit (linear) NBI images. We don't yet provide a bootp data
block, so first32.c dies immediately.
2007-03-14 00:39:12 +00:00
Michael Brown
2cf1e33df1 Split bootsector execution code out into bootsector.c.
Added basic El Torito ISO image boot capability
2007-01-29 04:21:38 +00:00
Michael Brown
6a765fdc15 Use base "0" in strtoul for consistency with "mem=" 2007-01-24 22:54:08 +00:00
Michael Brown
99cb46943f "vga=" is specified in decimal, not hex. 2007-01-22 23:56:24 +00:00
Michael Brown
ebb00e032c Misread the definition of the type_of_loader field; it should include a
version.
2007-01-19 15:40:01 +00:00
Michael Brown
a5f6408d8e We can now load an initrd as well as a kernel 2007-01-14 16:09:01 +00:00
Michael Brown
b9f99858ab Make the getmemsize() prototype available in memsizes.h, for code that
doesn't want to go to the hassle of processing a full memory map.
2007-01-14 15:32:25 +00:00
Michael Brown
10c9b03cdb Actually, the initrd image should be architecture-independent. 2007-01-14 15:07:11 +00:00
Michael Brown
f92e04dea4 Add dummy "initrd" image format, just so that images can be marked as
initrds.
2007-01-14 15:03:39 +00:00
Michael Brown
8a490146bf Copy command line at execution time rather than load time.
Parse command line for "vga=" and "mem=" parameters
2007-01-14 14:29:30 +00:00
Michael Brown
3ccd7335f0 Split bzimage_load into separate functions 2007-01-14 13:36:33 +00:00
Michael Brown
97a3037f76 Can start a Linux kernel directly (albeit with no initrd support) 2007-01-14 12:34:35 +00:00
Michael Brown
784e10635a Can almost start a kernel now. It dies with "No setup signature found" 2007-01-14 06:36:20 +00:00