[LinuxBIOS] r70 - in buildrom-devel: . bin config/payloads packages packages/gpxe packages/gpxe/conf

svn at openbios.org svn at openbios.org
Fri Nov 30 22:04:37 CET 2007


Author: ward
Date: 2007-11-30 22:04:36 +0100 (Fri, 30 Nov 2007)
New Revision: 70

Added:
   buildrom-devel/packages/gpxe/
   buildrom-devel/packages/gpxe/conf/
   buildrom-devel/packages/gpxe/conf/Config.i386
   buildrom-devel/packages/gpxe/conf/Config.main
   buildrom-devel/packages/gpxe/gpxe.mk
Modified:
   buildrom-devel/Config.in
   buildrom-devel/bin/fetchgit.sh
   buildrom-devel/config/payloads/Config.in
   buildrom-devel/config/payloads/payloads.conf
Log:

This patch adds preliminary gPXE support to buildrom. gPXE is the successor 
of etherboot. It is currently undergoing some major work and does not have
LinuxBIOS support, so this is not useful yet. Peter and I talked to the 
friendly folks at #etherboot, and they were interested in re-adding LinuxBIOS
support, but are a bit short of time. If someone wants to help out that 
would be great.

The patch updates the fetchgit.sh script to bring it up to date with current 
git tools, and pulls in gPXE from the git 'head'. gPXE will only show up in 
kconfig when EXPERIMENTAL is enabled.

Signed-off-by: Ward Vandewege <ward at gnu.org>
Acked-by: Jordan Crouse <jordan.crouse at amd.com>



Modified: buildrom-devel/Config.in
===================================================================
--- buildrom-devel/Config.in	2007-11-30 20:27:25 UTC (rev 69)
+++ buildrom-devel/Config.in	2007-11-30 21:04:36 UTC (rev 70)
@@ -19,6 +19,16 @@
 	help
 	  Allow yourself to do advanced developer things
 
+config EXPERIMENTAL
+	bool "Enable experimental features"
+	default n
+	help
+		Experimental features are not yet ready for prime time and/or 
+		completely broken. The features revealed by this setting are likely to be 
+		only useful if you are a developer and want to hack on buildrom.
+
+		If you are not sure, say no.
+
 menu "LinuxBIOS configuration"
 
 config USE_LZMA

Modified: buildrom-devel/bin/fetchgit.sh
===================================================================
--- buildrom-devel/bin/fetchgit.sh	2007-11-30 20:27:25 UTC (rev 69)
+++ buildrom-devel/bin/fetchgit.sh	2007-11-30 21:04:36 UTC (rev 70)
@@ -5,12 +5,13 @@
 DIR=$2
 TAG=$3
 TARBALL=$4
+NAME=$5
 
 # If the base git directory doesn't exist, then we need to clone it
 
-if [ ! -d $DIR/git ]; then 
+if [ ! -d $DIR/.git ]; then 
 	echo "Cloning $URL..."
-	git-clone --bare $URL $DIR/git
+	git-clone $URL $DIR
 	if [ $? -ne 0 ]; then
 		echo "Couldn't clone $URL."
 		exit 1
@@ -19,7 +20,7 @@
 
 # Fetch the latest and greatest bits
 
-export GIT_DIR=$DIR/git
+export GIT_DIR=$DIR/.git
 
 git-fetch $URL
 git-fetch --tags $URL
@@ -27,4 +28,4 @@
 git-pack-redundant --all | xargs -r rm
 
 # Make the tarball 
-git-tar-tree $TAG git | gzip > $TARBALL
+git-tar-tree $TAG $NAME-$TAG | bzip2 > $TARBALL

Modified: buildrom-devel/config/payloads/Config.in
===================================================================
--- buildrom-devel/config/payloads/Config.in	2007-11-30 20:27:25 UTC (rev 69)
+++ buildrom-devel/config/payloads/Config.in	2007-11-30 21:04:36 UTC (rev 70)
@@ -12,6 +12,11 @@
 config PAYLOAD_CUSTOM
 	bool "Custom Payload"
 
+config PAYLOAD_GPXE
+	depends EXPERIMENTAL
+	bool "GPXE"
+	select PAYLOAD
+
 config PAYLOAD_ETHERBOOT
 	depends !PLATFORM_M57SLI
 	depends !PLATFORM_TYAN_S2891
@@ -127,4 +132,19 @@
 	  Etherboot project for more details
 
 endmenu
+
+menu "GPXE Configuration"
+depends PAYLOAD_GPXE
+depends EXPERIMENTAL
+
+config GPXE_DRIVER
+	string "GPXE NIC driver to support"
+	default "rtl8139"
+	help
+	  Specify the GPXE NIC driver to build a ROM for.  See the
+	  GPXE project for more details
+
 endmenu
+
+
+endmenu

Modified: buildrom-devel/config/payloads/payloads.conf
===================================================================
--- buildrom-devel/config/payloads/payloads.conf	2007-11-30 20:27:25 UTC (rev 69)
+++ buildrom-devel/config/payloads/payloads.conf	2007-11-30 21:04:36 UTC (rev 70)
@@ -18,6 +18,7 @@
 PCONF-y=
 PCONF-$(CONFIG_PAYLOAD_LAB) = lab.conf
 PCONF-$(CONFIG_PAYLOAD_ETHERBOOT) = etherboot.conf
+PCONF-$(CONFIG_PAYLOAD_GPXE) = gpxe.conf
 PCONF-$(CONFIG_PAYLOAD_FILO) = filo.conf
 #PCONF-$(CONFIG_PAYLOAD_OFW) = ofw.conf
 PCONF-$(CONFIG_PAYLOAD_MEMTEST) = memtest.conf

Added: buildrom-devel/packages/gpxe/conf/Config.i386
===================================================================
--- buildrom-devel/packages/gpxe/conf/Config.i386	                        (rev 0)
+++ buildrom-devel/packages/gpxe/conf/Config.i386	2007-11-30 21:04:36 UTC (rev 70)
@@ -0,0 +1,66 @@
+
+CFLAGS+=	-DLINUXBIOS -DCONFIG_TSC_CURRTICKS  -DCONSOLE_SERIAL -DCOMCONSOLE=0x3f8 -DCOMPRESERVE -DCONFIG_PCI_DIRECT -DELF_IMAGE 
+
+CFLAGS+= -fstrength-reduce -fomit-frame-pointer -march=i386
+GCC_VERSION	 = $(subst ., ,$(shell $(CC) -dumpversion))
+GCC_MAJORVERSION = $(firstword $(GCC_VERSION))
+ifeq ($(GCC_MAJORVERSION),2)
+CFLAGS+=	-malign-jumps=1 -malign-loops=1 -malign-functions=1
+else
+CFLAGS+=	-falign-jumps=1 -falign-loops=1 -falign-functions=1
+endif
+GCC_MINORVERSION = $(word 2, $(GCC_VERSION))
+ifneq ($(GCC_MINORVERSION),4)
+CFLAGS+=	-march=i386
+endif
+
+LDFLAGS+=	-N
+
+ifeq "$(shell uname -s)" "FreeBSD"
+CFLAGS+=	-DIMAGE_FREEBSD -DELF_IMAGE -DAOUT_IMAGE
+endif
+
+
+CFLAGS+=	-DLINUXBIOS -DCONFIG_TSC_CURRTICKS  -DCONSOLE_SERIAL -DCOMCONSOLE=0x3f8 -DCOMPRESERVE -DCONFIG_PCI_DIRECT -DELF_IMAGE 
+
+CFLAGS+= -fstrength-reduce -fomit-frame-pointer -march=i386
+GCC_VERSION	 = $(subst ., ,$(shell $(CC) -dumpversion))
+GCC_MAJORVERSION = $(firstword $(GCC_VERSION))
+ifeq ($(GCC_MAJORVERSION),2)
+CFLAGS+=	-malign-jumps=1 -malign-loops=1 -malign-functions=1
+else
+CFLAGS+=	-falign-jumps=1 -falign-loops=1 -falign-functions=1
+endif
+GCC_MINORVERSION = $(word 2, $(GCC_VERSION))
+ifneq ($(GCC_MINORVERSION),4)
+CFLAGS+=	-march=i386
+endif
+
+LDFLAGS+=	-N
+
+ifeq "$(shell uname -s)" "FreeBSD"
+CFLAGS+=	-DIMAGE_FREEBSD -DELF_IMAGE -DAOUT_IMAGE
+endif
+
+
+CFLAGS+=	-DLINUXBIOS -DCONFIG_TSC_CURRTICKS  -DCONSOLE_SERIAL -DCOMCONSOLE=0x3f8 -DCOMPRESERVE -DCONFIG_PCI_DIRECT -DELF_IMAGE 
+
+CFLAGS+= -fstrength-reduce -fomit-frame-pointer -march=i386
+GCC_VERSION	 = $(subst ., ,$(shell $(CC) -dumpversion))
+GCC_MAJORVERSION = $(firstword $(GCC_VERSION))
+ifeq ($(GCC_MAJORVERSION),2)
+CFLAGS+=	-malign-jumps=1 -malign-loops=1 -malign-functions=1
+else
+CFLAGS+=	-falign-jumps=1 -falign-loops=1 -falign-functions=1
+endif
+GCC_MINORVERSION = $(word 2, $(GCC_VERSION))
+ifneq ($(GCC_MINORVERSION),4)
+CFLAGS+=	-march=i386
+endif
+
+LDFLAGS+=	-N
+
+ifeq "$(shell uname -s)" "FreeBSD"
+CFLAGS+=	-DIMAGE_FREEBSD -DELF_IMAGE -DAOUT_IMAGE
+endif
+

Added: buildrom-devel/packages/gpxe/conf/Config.main
===================================================================
--- buildrom-devel/packages/gpxe/conf/Config.main	                        (rev 0)
+++ buildrom-devel/packages/gpxe/conf/Config.main	2007-11-30 21:04:36 UTC (rev 70)
@@ -0,0 +1,96 @@
+CFLAGS+=	-DCONFIG_PCI -DCONFIG_ISA
+CFLAGS+=	-DASK_BOOT=3 -DBOOT_FIRST=BOOT_NIC
+
+ifdef	INCLUDE_FILO
+CFLAGS+=	-DCONFIG_FILO
+endif
+
+CFLAGS+=	-DALLOW_ONLY_ENCAPSULATED
+CFLAGS+=	-DBACKOFF_LIMIT=7 -DCONGESTED
+CFLAGS+=	-DTAGGED_IMAGE -DELF_IMAGE
+CFLAGS+=	-DDOWNLOAD_PROTO_TFTP
+
+HOST_CC=	gcc
+CPP=		gcc -E -Wp,-Wall
+RM=		rm -f
+TOUCH=		touch
+PERL=		/usr/bin/perl
+CC=		gcc
+AS=		as
+LD=		ld
+SIZE=		size
+AR=		ar
+RANLIB=		ranlib
+OBJCOPY=	objcopy
+
+CFLAGS+=	-Os -ffreestanding
+CFLAGS+=	-Wall -W -Wno-format
+CFLAGS+=	$(EXTRA_CFLAGS)
+ASFLAGS+=	$(EXTRA_ASFLAGS)
+LDFLAGS+=	$(EXTRA_LDFLAGS)
+
+BIN=bin
+CFLAGS+=	-DCONFIG_PCI -DCONFIG_ISA
+CFLAGS+=	-DASK_BOOT=3 -DBOOT_FIRST=BOOT_NIC
+
+ifdef	INCLUDE_FILO
+CFLAGS+=	-DCONFIG_FILO
+endif
+
+CFLAGS+=	-DALLOW_ONLY_ENCAPSULATED
+CFLAGS+=	-DBACKOFF_LIMIT=7 -DCONGESTED
+CFLAGS+=	-DTAGGED_IMAGE -DELF_IMAGE
+CFLAGS+=	-DDOWNLOAD_PROTO_TFTP
+
+HOST_CC=	gcc
+CPP=		gcc -E -Wp,-Wall
+RM=		rm -f
+TOUCH=		touch
+PERL=		/usr/bin/perl
+CC=		gcc
+AS=		as
+LD=		ld
+SIZE=		size
+AR=		ar
+RANLIB=		ranlib
+OBJCOPY=	objcopy
+
+CFLAGS+=	-Os -ffreestanding
+CFLAGS+=	-Wall -W -Wno-format
+CFLAGS+=	$(EXTRA_CFLAGS)
+ASFLAGS+=	$(EXTRA_ASFLAGS)
+LDFLAGS+=	$(EXTRA_LDFLAGS)
+
+BIN=bin
+CFLAGS+=	-DCONFIG_PCI -DCONFIG_ISA
+CFLAGS+=	-DASK_BOOT=3 -DBOOT_FIRST=BOOT_NIC
+
+ifdef	INCLUDE_FILO
+CFLAGS+=	-DCONFIG_FILO
+endif
+
+CFLAGS+=	-DALLOW_ONLY_ENCAPSULATED
+CFLAGS+=	-DBACKOFF_LIMIT=7 -DCONGESTED
+CFLAGS+=	-DTAGGED_IMAGE -DELF_IMAGE
+CFLAGS+=	-DDOWNLOAD_PROTO_TFTP
+
+HOST_CC=	gcc
+CPP=		gcc -E -Wp,-Wall
+RM=		rm -f
+TOUCH=		touch
+PERL=		/usr/bin/perl
+CC=		gcc
+AS=		as
+LD=		ld
+SIZE=		size
+AR=		ar
+RANLIB=		ranlib
+OBJCOPY=	objcopy
+
+CFLAGS+=	-Os -ffreestanding
+CFLAGS+=	-Wall -W -Wno-format
+CFLAGS+=	$(EXTRA_CFLAGS)
+ASFLAGS+=	$(EXTRA_ASFLAGS)
+LDFLAGS+=	$(EXTRA_LDFLAGS)
+
+BIN=bin

Added: buildrom-devel/packages/gpxe/gpxe.mk
===================================================================
--- buildrom-devel/packages/gpxe/gpxe.mk	                        (rev 0)
+++ buildrom-devel/packages/gpxe/gpxe.mk	2007-11-30 21:04:36 UTC (rev 70)
@@ -0,0 +1,144 @@
+GPXE_URL=git://git.etherboot.org/scm/gpxe.git
+GPXE_DIR=$(BUILD_DIR)/gpxe
+GPXE_TAG=master
+GPXE_SRC_DIR=$(GPXE_DIR)/gpxe-$(GPXE_TAG)/src
+GPXE_SOURCE=gpxe-$(GPXE_TAG).tar.bz2
+GPXE_STAMP_DIR=$(GPXE_DIR)/stamps
+GPXE_LOG_DIR=$(GPXE_DIR)/logs
+
+ifeq ($(GPXE_ARCH),)
+GPXE_ARCH=i386
+endif
+
+GPXE_PATCHES = 
+
+# Filter the quotes off the config string
+GPXE_DRIVER := $(shell echo $(CONFIG_GPXE_DRIVER) | sed -e s:\"::g)
+GPXE_OUTPUT=$(GPXE_SRC_DIR)/bin/$(GPXE_DRIVER).elf
+
+ifeq ($(CONFIG_VERBOSE),y)
+GPXE_FETCH_LOG=/dev/stdout
+GPXE_BUILD_LOG=/dev/stdout
+GPXE_INSTALL_LOG=/dev/stdout
+else
+GPXE_FETCH_LOG=$(GPXE_LOG_DIR)/fetch.log
+GPXE_BUILD_LOG=$(GPXE_LOG_DIR)/build.log
+GPXE_INSTALL_LOG=$(GPXE_LOG_DIR)/install.log
+endif
+
+$(SOURCE_DIR)/$(GPXE_SOURCE):
+	@ echo "Fetching the GPXE source..."
+	$(BIN_DIR)/fetchgit.sh $(GPXE_URL) $(SOURCE_DIR)/gpxe \
+	$(GPXE_TAG) $(SOURCE_DIR)/$(GPXE_SOURCE) gpxe \
+	> $(GPXE_FETCH_LOG) 2>&1
+
+$(GPXE_STAMP_DIR)/.unpacked: $(SOURCE_DIR)/$(GPXE_SOURCE)
+	@ echo "Unpacking GPXE..."
+	@ tar -C $(GPXE_DIR) -jxf $(SOURCE_DIR)/$(GPXE_SOURCE)
+	@ touch $@	
+
+$(GPXE_STAMP_DIR)/.patched: $(GPXE_STAMP_DIR)/.unpacked
+	@ echo "Patching GPXE..."
+	@ $(BIN_DIR)/doquilt.sh $(GPXE_SRC_DIR)/.. $(GPXE_PATCHES)
+	@ touch $@
+
+$(GPXE_STAMP_DIR)/.configured: $(GPXE_STAMP_DIR)/.patched
+	@ cp $(PACKAGE_DIR)/gpxe/conf/Config.main \
+	$(GPXE_SRC_DIR)/Config
+	@ cp $(PACKAGE_DIR)/gpxe/conf/Config.$(GPXE_ARCH) \
+	$(GPXE_SRC_DIR)/arch/$(GPXE_ARCH)/Config
+	@ touch $@
+
+$(GPXE_OUTPUT): $(GPXE_STAMP_DIR)/.configured
+	@ echo "Building GPXE..."
+	@ ( unset CFLAGS; export EXTRA_CFLAGS="$(CFLAGS)"; \
+	unset ASFLAGS; export EXTRA_ASFLAGS="$(ASFLAGS)"; \
+	unset LDFLAGS; \
+	$(MAKE) -C $(GPXE_SRC_DIR) ARCH=$(GPXE_ARCH) \
+	bin/$(GPXE_DRIVER).elf > $(GPXE_BUILD_LOG) 2>&1)
+
+$(GPXE_STAMP_DIR) $(GPXE_LOG_DIR):
+	@ mkdir -p $@
+
+gpxe: $(GPXE_STAMP_DIR) $(GPXE_LOG_DIR) $(GPXE_OUTPUT) 
+	@ mkdir -p $(OUTPUT_DIR)
+	@ cp $(GPXE_OUTPUT) $(PAYLOAD_ELF)
+
+gpxe-clean:
+	@ echo "Cleaning GPXE..."
+	@ $(MAKE) -C $(GPXE_SRC_DIR) clean > /dev/null 2>&1
+
+gpxe-distclean:
+	@ rm -rf $(GPXE_DIR)/*
+GPXE_URL=git://git.etherboot.org/scm/gpxe.git
+GPXE_DIR=$(BUILD_DIR)/gpxe
+GPXE_TAG=master
+GPXE_SRC_DIR=$(GPXE_DIR)/gpxe-$(GPXE_TAG)/src
+GPXE_SOURCE=gpxe-$(GPXE_TAG).tar.bz2
+GPXE_STAMP_DIR=$(GPXE_DIR)/stamps
+GPXE_LOG_DIR=$(GPXE_DIR)/logs
+
+ifeq ($(GPXE_ARCH),)
+GPXE_ARCH=i386
+endif
+
+GPXE_PATCHES = 
+
+# Filter the quotes off the config string
+GPXE_DRIVER := $(shell echo $(CONFIG_GPXE_DRIVER) | sed -e s:\"::g)
+GPXE_OUTPUT=$(GPXE_SRC_DIR)/bin/$(GPXE_DRIVER).elf
+
+ifeq ($(CONFIG_VERBOSE),y)
+GPXE_FETCH_LOG=/dev/stdout
+GPXE_BUILD_LOG=/dev/stdout
+GPXE_INSTALL_LOG=/dev/stdout
+else
+GPXE_FETCH_LOG=$(GPXE_LOG_DIR)/fetch.log
+GPXE_BUILD_LOG=$(GPXE_LOG_DIR)/build.log
+GPXE_INSTALL_LOG=$(GPXE_LOG_DIR)/install.log
+endif
+
+$(SOURCE_DIR)/$(GPXE_SOURCE):
+	@ echo "Fetching the GPXE source..."
+	$(BIN_DIR)/fetchgit.sh $(GPXE_URL) $(SOURCE_DIR)/gpxe \
+	$(GPXE_TAG) $(SOURCE_DIR)/$(GPXE_SOURCE) gpxe \
+	> $(GPXE_FETCH_LOG) 2>&1
+
+$(GPXE_STAMP_DIR)/.unpacked: $(SOURCE_DIR)/$(GPXE_SOURCE)
+	@ echo "Unpacking GPXE..."
+	@ tar -C $(GPXE_DIR) -jxf $(SOURCE_DIR)/$(GPXE_SOURCE)
+	@ touch $@	
+
+$(GPXE_STAMP_DIR)/.patched: $(GPXE_STAMP_DIR)/.unpacked
+	@ echo "Patching GPXE..."
+	@ $(BIN_DIR)/doquilt.sh $(GPXE_SRC_DIR)/.. $(GPXE_PATCHES)
+	@ touch $@
+
+$(GPXE_STAMP_DIR)/.configured: $(GPXE_STAMP_DIR)/.patched
+	@ cp $(PACKAGE_DIR)/gpxe/conf/Config.main \
+	$(GPXE_SRC_DIR)/Config
+	@ cp $(PACKAGE_DIR)/gpxe/conf/Config.$(GPXE_ARCH) \
+	$(GPXE_SRC_DIR)/arch/$(GPXE_ARCH)/Config
+	@ touch $@
+
+$(GPXE_OUTPUT): $(GPXE_STAMP_DIR)/.configured
+	@ echo "Building GPXE..."
+	@ ( unset CFLAGS; export EXTRA_CFLAGS="$(CFLAGS)"; \
+	unset ASFLAGS; export EXTRA_ASFLAGS="$(ASFLAGS)"; \
+	unset LDFLAGS; \
+	$(MAKE) -C $(GPXE_SRC_DIR) ARCH=$(GPXE_ARCH) \
+	bin/$(GPXE_DRIVER).elf > $(GPXE_BUILD_LOG) 2>&1)
+
+$(GPXE_STAMP_DIR) $(GPXE_LOG_DIR):
+	@ mkdir -p $@
+
+gpxe: $(GPXE_STAMP_DIR) $(GPXE_LOG_DIR) $(GPXE_OUTPUT) 
+	@ mkdir -p $(OUTPUT_DIR)
+	@ cp $(GPXE_OUTPUT) $(PAYLOAD_ELF)
+
+gpxe-clean:
+	@ echo "Cleaning GPXE..."
+	@ $(MAKE) -C $(GPXE_SRC_DIR) clean > /dev/null 2>&1
+
+gpxe-distclean:
+	@ rm -rf $(GPXE_DIR)/*





More information about the coreboot mailing list