diff options
-rw-r--r-- | .gitmodules | 3 | ||||
-rw-r--r-- | Makefile | 16 | ||||
-rwxr-xr-x | configure | 2 | ||||
-rw-r--r-- | hw/e1000.c | 2 | ||||
-rw-r--r-- | hw/eepro100.c | 2 | ||||
-rw-r--r-- | hw/ne2000.c | 2 | ||||
-rw-r--r-- | hw/pcnet-pci.c | 2 | ||||
-rw-r--r-- | hw/rtl8139.c | 2 | ||||
-rw-r--r-- | hw/virtio-pci.c | 2 | ||||
-rw-r--r-- | pc-bios/README | 19 | ||||
-rw-r--r-- | pc-bios/gpxe-eepro100-80861209.rom | bin | 56832 -> 0 bytes | |||
-rw-r--r-- | pc-bios/pxe-e1000.bin | bin | 72192 -> 0 bytes | |||
-rw-r--r-- | pc-bios/pxe-e1000.rom | bin | 0 -> 67072 bytes | |||
-rw-r--r-- | pc-bios/pxe-eepro100.rom | bin | 0 -> 61440 bytes | |||
-rw-r--r-- | pc-bios/pxe-ne2k_pci.bin | bin | 56320 -> 0 bytes | |||
-rw-r--r-- | pc-bios/pxe-ne2k_pci.rom | bin | 0 -> 61440 bytes | |||
-rw-r--r-- | pc-bios/pxe-pcnet.bin | bin | 56832 -> 0 bytes | |||
-rw-r--r-- | pc-bios/pxe-pcnet.rom | bin | 0 -> 61440 bytes | |||
-rw-r--r-- | pc-bios/pxe-rtl8139.bin | bin | 56320 -> 0 bytes | |||
-rw-r--r-- | pc-bios/pxe-rtl8139.rom | bin | 0 -> 61440 bytes | |||
-rw-r--r-- | pc-bios/pxe-virtio.bin | bin | 56320 -> 0 bytes | |||
-rw-r--r-- | pc-bios/pxe-virtio.rom | bin | 0 -> 60416 bytes | |||
m--------- | roms/ipxe | 0 | ||||
-rwxr-xr-x | scripts/refresh-pxe-roms.sh | 99 |
24 files changed, 126 insertions, 25 deletions
diff --git a/.gitmodules b/.gitmodules index 44fdd1a02d..788447189e 100644 --- a/.gitmodules +++ b/.gitmodules @@ -7,3 +7,6 @@ [submodule "roms/SLOF"] path = roms/SLOF url = git://git.qemu.org/SLOF.git +[submodule "roms/ipxe"] + path = roms/ipxe + url = git://git.qemu.org/ipxe.git @@ -180,10 +180,8 @@ ifdef INSTALL_BLOBS BLOBS=bios.bin vgabios.bin vgabios-cirrus.bin \ vgabios-stdvga.bin vgabios-vmware.bin vgabios-qxl.bin \ ppc_rom.bin openbios-sparc32 openbios-sparc64 openbios-ppc \ -gpxe-eepro100-80861209.rom \ -pxe-e1000.bin \ -pxe-ne2k_pci.bin pxe-pcnet.bin \ -pxe-rtl8139.bin pxe-virtio.bin \ +pxe-e1000.rom pxe-eepro100.rom pxe-ne2k_pci.rom \ +pxe-pcnet.rom pxe-rtl8139.rom pxe-virtio.rom \ bamboo.dtb petalogix-s3adsp1800.dtb petalogix-ml605.dtb \ multiboot.bin linuxboot.bin \ s390-zipl.rom \ @@ -329,10 +327,12 @@ tarbin: $(datadir)/openbios-sparc32 \ $(datadir)/openbios-sparc64 \ $(datadir)/openbios-ppc \ - $(datadir)/pxe-ne2k_pci.bin \ - $(datadir)/pxe-rtl8139.bin \ - $(datadir)/pxe-pcnet.bin \ - $(datadir)/pxe-e1000.bin \ + $(datadir)/pxe-e1000.rom \ + $(datadir)/pxe-eepro100.rom \ + $(datadir)/pxe-ne2k_pci.rom \ + $(datadir)/pxe-pcnet.rom \ + $(datadir)/pxe-rtl8139.rom \ + $(datadir)/pxe-virtio.rom \ $(docdir)/qemu-doc.html \ $(docdir)/qemu-tech.html \ $(mandir)/man1/qemu.1 \ @@ -3447,7 +3447,7 @@ FILES="Makefile tests/Makefile" FILES="$FILES tests/cris/Makefile tests/cris/.gdbinit" FILES="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps" FILES="$FILES roms/seabios/Makefile roms/vgabios/Makefile" -for bios_file in $source_path/pc-bios/*.bin $source_path/pc-bios/*.dtb $source_path/pc-bios/openbios-*; do +for bios_file in $source_path/pc-bios/*.bin $source_path/pc-bios/*.rom $source_path/pc-bios/*.dtb $source_path/pc-bios/openbios-*; do FILES="$FILES pc-bios/`basename $bios_file`" done mkdir -p $DIRS diff --git a/hw/e1000.c b/hw/e1000.c index fe3e812610..f160bfc2ab 100644 --- a/hw/e1000.c +++ b/hw/e1000.c @@ -1220,7 +1220,7 @@ static PCIDeviceInfo e1000_info = { .qdev.vmsd = &vmstate_e1000, .init = pci_e1000_init, .exit = pci_e1000_uninit, - .romfile = "pxe-e1000.bin", + .romfile = "pxe-e1000.rom", .qdev.props = (Property[]) { DEFINE_NIC_PROPERTIES(E1000State, conf), DEFINE_PROP_END_OF_LIST(), diff --git a/hw/eepro100.c b/hw/eepro100.c index edf48f61d1..369ad7f840 100644 --- a/hw/eepro100.c +++ b/hw/eepro100.c @@ -2054,7 +2054,7 @@ static void eepro100_register_devices(void) PCIDeviceInfo *pci_dev = &e100_devices[i].pci; /* We use the same rom file for all device ids. QEMU fixes the device id during rom load. */ - pci_dev->romfile = "gpxe-eepro100-80861209.rom"; + pci_dev->romfile = "pxe-eepro100.rom"; pci_dev->init = e100_nic_init; pci_dev->exit = pci_nic_uninit; pci_dev->qdev.props = e100_properties; diff --git a/hw/ne2000.c b/hw/ne2000.c index 5966359852..b668ad1070 100644 --- a/hw/ne2000.c +++ b/hw/ne2000.c @@ -742,7 +742,7 @@ static int pci_ne2000_init(PCIDevice *pci_dev) if (!pci_dev->qdev.hotplugged) { static int loaded = 0; if (!loaded) { - rom_add_option("pxe-ne2k_pci.bin", -1); + rom_add_option("pxe-ne2k_pci.rom", -1); loaded = 1; } } diff --git a/hw/pcnet-pci.c b/hw/pcnet-pci.c index 339a401967..40ee29d38b 100644 --- a/hw/pcnet-pci.c +++ b/hw/pcnet-pci.c @@ -310,7 +310,7 @@ static int pci_pcnet_init(PCIDevice *pci_dev) if (!pci_dev->qdev.hotplugged) { static int loaded = 0; if (!loaded) { - rom_add_option("pxe-pcnet.bin", -1); + rom_add_option("pxe-pcnet.rom", -1); loaded = 1; } } diff --git a/hw/rtl8139.c b/hw/rtl8139.c index d5459336e5..8790a00afb 100644 --- a/hw/rtl8139.c +++ b/hw/rtl8139.c @@ -3484,7 +3484,7 @@ static PCIDeviceInfo rtl8139_info = { .qdev.vmsd = &vmstate_rtl8139, .init = pci_rtl8139_init, .exit = pci_rtl8139_uninit, - .romfile = "pxe-rtl8139.bin", + .romfile = "pxe-rtl8139.rom", .qdev.props = (Property[]) { DEFINE_NIC_PROPERTIES(RTL8139State, conf), DEFINE_PROP_END_OF_LIST(), diff --git a/hw/virtio-pci.c b/hw/virtio-pci.c index 555f23f1da..c19629d507 100644 --- a/hw/virtio-pci.c +++ b/hw/virtio-pci.c @@ -877,7 +877,7 @@ static PCIDeviceInfo virtio_info[] = { .qdev.size = sizeof(VirtIOPCIProxy), .init = virtio_net_init_pci, .exit = virtio_net_exit_pci, - .romfile = "pxe-virtio.bin", + .romfile = "pxe-virtio.rom", .qdev.props = (Property[]) { DEFINE_PROP_BIT("ioeventfd", VirtIOPCIProxy, flags, VIRTIO_PCI_FLAG_USE_IOEVENTFD_BIT, false), diff --git a/pc-bios/README b/pc-bios/README index 646a31a313..fe221a940f 100644 --- a/pc-bios/README +++ b/pc-bios/README @@ -18,16 +18,15 @@ https://github.com/dgibson/SLOF, and the image currently in qemu is built from git tag qemu-slof-20110323. -- The PXE roms come from Rom-o-Matic gPXE 0.9.9 with BANNER_TIMEOUT=0 - - e1000 8086:100E - eepro100 8086:1209 (also used for 8086:1229 and 8086:2449) - ns8390 1050:0940 - pcnet32 1022:2000 - rtl8139 10ec:8139 - virtio 1af4:1000 - - http://rom-o-matic.net/ +- The PXE roms come from the iPXE project. Built with BANNER_TIME 0. + Sources available at http://ipxe.org. Vendor:Device ID -> ROM mapping: + + 8086:100e -> pxe-e1000.rom + 8086:1209 -> pxe-eepro100.rom + 1050:0940 -> pxe-ne2k_pci.rom + 1022:2000 -> pxe-pcnet.rom + 10ec:8139 -> pxe-rtl8139.rom + 1af4:1000 -> pxe-virtio.rom - The S390 zipl loader is an addition to the official IBM s390-tools package. That fork is maintained in its own git repository at: diff --git a/pc-bios/gpxe-eepro100-80861209.rom b/pc-bios/gpxe-eepro100-80861209.rom Binary files differdeleted file mode 100644 index 2ca59ec369..0000000000 --- a/pc-bios/gpxe-eepro100-80861209.rom +++ /dev/null diff --git a/pc-bios/pxe-e1000.bin b/pc-bios/pxe-e1000.bin Binary files differdeleted file mode 100644 index 7ac744eb39..0000000000 --- a/pc-bios/pxe-e1000.bin +++ /dev/null diff --git a/pc-bios/pxe-e1000.rom b/pc-bios/pxe-e1000.rom Binary files differnew file mode 100644 index 0000000000..2e5f8b28a4 --- /dev/null +++ b/pc-bios/pxe-e1000.rom diff --git a/pc-bios/pxe-eepro100.rom b/pc-bios/pxe-eepro100.rom Binary files differnew file mode 100644 index 0000000000..d292e8feca --- /dev/null +++ b/pc-bios/pxe-eepro100.rom diff --git a/pc-bios/pxe-ne2k_pci.bin b/pc-bios/pxe-ne2k_pci.bin Binary files differdeleted file mode 100644 index 5cb68ab2da..0000000000 --- a/pc-bios/pxe-ne2k_pci.bin +++ /dev/null diff --git a/pc-bios/pxe-ne2k_pci.rom b/pc-bios/pxe-ne2k_pci.rom Binary files differnew file mode 100644 index 0000000000..62010cbc72 --- /dev/null +++ b/pc-bios/pxe-ne2k_pci.rom diff --git a/pc-bios/pxe-pcnet.bin b/pc-bios/pxe-pcnet.bin Binary files differdeleted file mode 100644 index 7a54baba1e..0000000000 --- a/pc-bios/pxe-pcnet.bin +++ /dev/null diff --git a/pc-bios/pxe-pcnet.rom b/pc-bios/pxe-pcnet.rom Binary files differnew file mode 100644 index 0000000000..512d6d4339 --- /dev/null +++ b/pc-bios/pxe-pcnet.rom diff --git a/pc-bios/pxe-rtl8139.bin b/pc-bios/pxe-rtl8139.bin Binary files differdeleted file mode 100644 index db7d76d9ca..0000000000 --- a/pc-bios/pxe-rtl8139.bin +++ /dev/null diff --git a/pc-bios/pxe-rtl8139.rom b/pc-bios/pxe-rtl8139.rom Binary files differnew file mode 100644 index 0000000000..67c77fbf73 --- /dev/null +++ b/pc-bios/pxe-rtl8139.rom diff --git a/pc-bios/pxe-virtio.bin b/pc-bios/pxe-virtio.bin Binary files differdeleted file mode 100644 index 6dde514c79..0000000000 --- a/pc-bios/pxe-virtio.bin +++ /dev/null diff --git a/pc-bios/pxe-virtio.rom b/pc-bios/pxe-virtio.rom Binary files differnew file mode 100644 index 0000000000..b1ec909628 --- /dev/null +++ b/pc-bios/pxe-virtio.rom diff --git a/roms/ipxe b/roms/ipxe new file mode 160000 +Subproject 7aee315f61aaf1be6d2fff26339f28a1137231a diff --git a/scripts/refresh-pxe-roms.sh b/scripts/refresh-pxe-roms.sh new file mode 100755 index 0000000000..14d586070f --- /dev/null +++ b/scripts/refresh-pxe-roms.sh @@ -0,0 +1,99 @@ +#!/bin/bash + +# PXE ROM build script +# +# 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 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, see <http://www.gnu.org/licenses/>. +# +# Copyright (C) 2011 Red Hat, Inc. +# Authors: Alex Williamson <alex.williamson@redhat.com> +# +# Usage: Run from root of qemu tree +# ./scripts/refresh-pxe-roms.sh + +QEMU_DIR=$PWD +ROM_DIR="pc-bios" +BUILD_DIR="roms/ipxe" +LOCAL_CONFIG="src/config/local/general.h" + +function cleanup () +{ + if [ -n "$SAVED_CONFIG" ]; then + cp "$SAVED_CONFIG" "$BUILD_DIR"/"$LOCAL_CONFIG" + rm "$SAVED_CONFIG" + fi + cd "$QEMU_DIR" +} + +function make_rom () +{ + cd "$BUILD_DIR"/src + + BUILD_LOG=$(mktemp) + + echo Building "$2"... + make bin/"$1".rom > "$BUILD_LOG" 2>&1 + if [ $? -ne 0 ]; then + echo Build failed + tail --lines=100 "$BUILD_LOG" + rm "$BUILD_LOG" + cleanup + exit 1 + fi + rm "$BUILD_LOG" + + cp bin/"$1".rom "$QEMU_DIR"/"$ROM_DIR"/"$2" + + cd "$QEMU_DIR" +} + +if [ ! -d "$QEMU_DIR"/"$ROM_DIR" ]; then + echo "error: can't find $ROM_DIR directory," \ + "run me from the root of the qemu tree" + exit 1 +fi + +if [ ! -d "$BUILD_DIR"/src ]; then + echo "error: $BUILD_DIR not populated, try:" + echo " git submodule init $BUILD_DIR" + echo " git submodule update $BUILD_DIR" + exit 1 +fi + +if [ -e "$BUILD_DIR"/"$LOCAL_CONFIG" ]; then + SAVED_CONFIG=$(mktemp) + cp "$BUILD_DIR"/"$LOCAL_CONFIG" "$SAVED_CONFIG" +fi + +echo "#undef BANNER_TIMEOUT" > "$BUILD_DIR"/"$LOCAL_CONFIG" +echo "#define BANNER_TIMEOUT 0" >> "$BUILD_DIR"/"$LOCAL_CONFIG" + +IPXE_VERSION=$(cd "$BUILD_DIR" && git describe --tags) +if [ -z "$IPXE_VERSION" ]; then + echo "error: unable to retrieve git version" + cleanup + exit 1 +fi + +echo "#undef PRODUCT_NAME" >> "$BUILD_DIR"/"$LOCAL_CONFIG" +echo "#define PRODUCT_NAME \"iPXE $IPXE_VERSION\"" >> "$BUILD_DIR"/"$LOCAL_CONFIG" + +make_rom 8086100e pxe-e1000.rom +make_rom 80861209 pxe-eepro100.rom +make_rom 10500940 pxe-ne2k_pci.rom +make_rom 10222000 pxe-pcnet.rom +make_rom 10ec8139 pxe-rtl8139.rom +make_rom 1af41000 pxe-virtio.rom + +echo done +cleanup |