Makefile & config overhaul
authorJohn 'Warthog9' Hawley <warthog9@eaglescrag.net>
Fri, 11 Sep 2009 05:01:43 +0000 (22:01 -0700)
committerJohn 'Warthog9' Hawley <warthog9@eaglescrag.net>
Fri, 11 Sep 2009 05:01:43 +0000 (22:01 -0700)
This is a pretty massive change, this more or less puts all of the configuration for BKO into the makefile system I developed for pxeknife (yay for open source!)

This will build everything (syslinux, pxeknife, gpxe) with the correct bits, put them into the right place and at that point your more or less ready to go.

This *DOES* need work in the bko/ sub directory as right now it just prints that it's going to build

.gitignore [new file with mode: 0644]
.gitmodules
Makefile [new file with mode: 0644]
bko/.gitignore [new file with mode: 0644]
bko/D.conf [deleted file]
bko/Makefile [new file with mode: 0644]
config [moved from bko/configure with 57% similarity]
gpxe [new submodule]
gpxe_bko/pxeDHCP.bko.tmpl [new file with mode: 0644]
gpxe_bko/pxeSTATIC.bko.tmpl [new file with mode: 0644]

diff --git a/.gitignore b/.gitignore
new file mode 100644 (file)
index 0000000..936ed6b
--- /dev/null
@@ -0,0 +1 @@
+gpxe_images/
index d5e3c3a..1e35d3d 100644 (file)
@@ -4,3 +4,6 @@
 [submodule "syslinux"]
        path = syslinux
        url = git://git.kernel.org/pub/scm/boot/syslinux/syslinux.git
+[submodule "gpxe"]
+       path = gpxe
+       url = git://git.etherboot.org/scm/people/pravin/gpxe.git
diff --git a/Makefile b/Makefile
new file mode 100644 (file)
index 0000000..4d6f24e
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,80 @@
+SHELL = /bin/bash
+
+PWD := $(shell pwd)
+
+
+ifndef BKO_CONFIG
+BKO_CONFIG=config
+endif
+
+-include $(BKO_CONFIG)
+
+BKO_ABSPATH = 
+
+export BKOPREFIX
+
+.SILENT:
+
+COREDIR = bko
+GPXEDIR = gpxe
+SYSLINUXDIR = syslinux
+PXEKNIFEDIR = pxeknife
+SUPPORTDIRS = $(SYSLINUXDIR) $(PXEKNIFEDIR)
+
+GPXEIMAGESDIR = gpxe_images
+
+DIRS = $(COREDIR) $(SUPPORTDIRS)
+
+all: make_statement $(DIRS)
+
+bko: $(SUPPORTDIRS) $(GPXEDIR)
+
+clean: make_statement $(patsubst %,%.clean,$(DIRS))
+
+make_statement:
+       echo "boot.kernel.org build process manager says: HELLO WORLD!"
+
+
+$(SYSLINUXDIR): $(patsubst %,%.build,$(SYSLINUXDIR)) $(patsubst %,%.install,$(SYSLINUXDIR))
+$(GPXEDIR): $(patsubst %,%.build,$(GPXEDIR)) $(patsubst %,%.install,$(GPXEDIR))
+$(PXEKNIFEDIR): $(patsubst %,%.build,$(PXEKNIFEDIR))
+$(COREDIR): $(patsubst %,%.build,$(COREDIR))
+
+$(patsubst %,%.build,$(DIRS)): make_statement
+       $(MAKE) $(MFLAGS) BKO_ABSPATH="$(BKO_ABSPATH)/$(shell echo "$@" | sed 's/\.build//')" BKO_CONFIG="../$(BKO_CONFIG)" -C $(shell echo "$@" | sed 's/\.build//') -f Makefile
+
+$(patsubst %,%.build,$(GPXEDIR)): make_statement
+       cat gpxe_bko/pxeDHCP.bko.tmpl | sed 's/P_BOOT_URL/$(shell echo "$(BASE_URL)" | sed -e 's/\//\\\//gi' )/g' > $(GPXEDIR)/src/pxeDHCP.gpxe
+       cat gpxe_bko/pxeSTATIC.bko.tmpl | sed 's/P_BOOT_URL/$(shell echo "$(BASE_URL)" | sed -e 's/\//\\\//gi' )/g' > $(GPXEDIR)/src/pxeSTATIC.gpxe
+       $(MAKE) $(MFLAGS) EMBEDDED_IMAGE=pxeDHCP.gpxe,pxeSTATIC.gpxe -C $(GPXEDIR)/src -f Makefile
+
+gpxe_images: make_statement
+       mkdir -p gpxe_images
+
+$(patsubst %,%.install,$(SYSLINUXDIR)): make_statement
+       find \
+               $(SYSLINUXDIR) \
+                -type f \
+               \( \
+                       -name *.c32 \
+                       -o \
+                       -name memdisk \
+                       -o \
+                       -name pxelinux.0 \
+               \) \
+               -exec cp {} bko/ \;
+
+$(patsubst %,%.install,$(GPXEDIR)): make_statement gpxe_images
+       $(MAKE) $(MFLAGS) EMBEDDED_IMAGE=pxeDHCP.gpxe,pxeSTATIC.gpxe -C $(GPXEDIR)/src -f Makefile bin/gpxe.usb
+       $(MAKE) $(MFLAGS) EMBEDDED_IMAGE=pxeDHCP.gpxe,pxeSTATIC.gpxe -C $(GPXEDIR)/src -f Makefile bin/gpxe.dsk
+       $(MAKE) $(MFLAGS) EMBEDDED_IMAGE=pxeDHCP.gpxe,pxeSTATIC.gpxe -C $(GPXEDIR)/src -f Makefile bin/gpxe.iso
+       mv $(GPXEDIR)/src/bin/gpxe.usb $(GPXEDIR)/src/bin/gpxe.dsk $(GPXEDIR)/src/bin/gpxe.iso gpxe_images/
+       
+
+$(patsubst %,%.clean,$(DIRS)):
+       $(MAKE) $(MFLAGS) -C $(patsubst %.clean,%,$@) -f Makefile clean
+
+$(patsubst %,%.clean,$(GPXEDIR)):
+       $(MAKE) $(MFLAGS) -C $(patsubst %.clean,%,$@)/src -f Makefile clean
+
+
diff --git a/bko/.gitignore b/bko/.gitignore
new file mode 100644 (file)
index 0000000..f8fa231
--- /dev/null
@@ -0,0 +1,3 @@
+*.c32
+memdisk
+pxelinux.0
diff --git a/bko/D.conf b/bko/D.conf
deleted file mode 100644 (file)
index 513402d..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-DEFAULT menu.c32
-    PROMPT 0
-#    TIMEOUT 100 #this is optional - will start the default after 10 seconds
-    MENU TITLE --== BKO (boot.kernel.org) ==--
-
-LABEL rootmenu
-       MENU LABEL <---- Root Menu
-    TEXT HELP
-        Go back to boot time menu
-        You can boot from local hard-disk from there.
-    ENDTEXT
-    kernel menu.c32
-       append pxelinux.cfg/main
-
-LABEL D-debian
-    MENU DEFAULT
-       MENU LABEL debian --->
-       TEXT HELP
-        Boot Debian live CD 
-    ENDTEXT
-       kernel menu.c32
-       append D/D/debian.conf
-
-LABEL D-ubuntu
-       MENU LABEL Ubuntu --->
-       TEXT HELP
-        Boot Ubuntu
-        Does not work correctly, some problem with squashfs
-        So, boot it on your own risk
-    ENDTEXT
-       kernel menu.c32
-       append D/U/ubuntu.conf
-
-LABEL D-knoppix
-       MENU LABEL Knoppix --->
-       TEXT HELP
-        Boot Knoppix 
-        This is full fledged 700MB linux distribution 
-        with (almost) everything included.
-    ENDTEXT
-    kernel menu.c32
-       append D/K/knoppix.conf
-
-
-LABEL D-DSL
-       MENU LABEL Damm small linux --->
-    TEXT HELP
-        Boot Damm Small Linux
-        This is 50MB linux with GUI and most common softwares.
-    ENDTEXT
-       kernel menu.c32
-       append D/dsl/dsl.conf
-
-
-LABEL D-red-hat
-       MENU LABEL Red Hat --->
-       TEXT HELP
-        Boot fedora live CD 
-        Currently, fedora 11 live cd boots only in single user mode.
-    ENDTEXT
-       kernel menu.c32
-       append default
-       append D/R/red_hat.conf
-
-
-LABEL pxeknife 
-       MENU LABEL pxeknife --->
-       TEXT HELP
-        utilities from pxeknife for memory tests, hard drive utils
-        ntfs tools and meny more...
-    ENDTEXT
-       kernel menu.c32
-       append default
-       append D/pxeknife/pxeknife.conf
-
diff --git a/bko/Makefile b/bko/Makefile
new file mode 100644 (file)
index 0000000..a530124
--- /dev/null
@@ -0,0 +1,36 @@
+SHELL = /bin/bash
+
+PWD := $(shell pwd)
+
+
+ifndef CONFIG
+CONFIG=config
+endif
+
+-include $(CONFIG)
+
+ABSPATH = 
+
+export BKOPREFIX
+
+#.SILENT:
+
+all: make_statement
+
+bko: $(SUPPORTDIRS) $(GPXEDIR)
+
+clean: make_statement $(patsubst %,%.clean,$(DIRS))
+
+make_statement:
+       echo "  Working on building the bko menuing system"
+
+$(patsubst %,%.build,$(DIRS)): make_statement
+       $(MAKE) $(MFLAGS) -C $@ -f Makefile
+
+$(patsubst %,%.clean,$(DIRS)):
+       $(MAKE) $(MFLAGS) -C $(patsubst %.clean,%,$@) -f Makefile clean
+
+$(patsubst %,%.clean,$(GPXEDIR)):
+       $(MAKE) $(MFLAGS) -C $(patsubst %.clean,%,$@)/src -f Makefile clean
+
+
similarity index 57%
rename from bko/configure
rename to config
index 13ea7d4..f528fc2 100755 (executable)
+++ b/config
@@ -1,20 +1,14 @@
-#!/bin/bash
-#set -e
-
 ########################################################################
 ################ BEGIN CUSTOMIZE ####################
 
 # modify the paths as per your need.
 
-# Location of gpxe git
-GPXE_GIT_LOCATION="../gpxe"
-
 # URL to be used for embedding into compiled gpxe for downloading images.
-BOOT_URL="http:\/\/boot.kernel.org\/"
-#BOOT_URL="http:\/\/rom.etherboot.org\/share\/pravin\/BKO\/"
-#BOOT_URL="http:\/\/192.168.111.11\/BKO\/"
+BASE_URL = http://boot.kernel.org/
+#BOOT_URL = http://rom.etherboot.org/share/pravin/BKO/
+#BOOT_URL = http://192.168.111.11/BKO/
 
-# HTTP location on local server where all iso images are kept.
+# HTTP location on server where all iso images are kept.
 ISO_LOCATION_LOCAL="http:\/\/mirrors.kernel.org\/ISO\/"
 #ISO_LOCATION_LOCAL="http:\/\/192.168.111.11\/ISO\/"
 #ISO_LOCATION_LOCAL="http:\/\/rom.etherboot.org\/share\/pravin\/ISO\/"
@@ -24,10 +18,7 @@ ISO_LOCATION_LOCAL="http:\/\/mirrors.kernel.org\/ISO\/"
 
 # IP and Port for iscsi for local server
 #ISCSI_LOCATION_LOCAL="192.168.111.11:3260"
-ISCSI_LOCATION_LOCAL="140.211.167.194:3260"
-# Location from where initramfs files will be downloaded 
-# (ie. in case you dont compile on your machine )
-REMOTE_INITRAMFS_DOWNLOAD_LOCATION=http://rom.etherboot.org/share/pravin/BKO/
+ISCSI_SERVER = 140.211.167.194:3260
 
 ################# END CUSTOMIZATION #################
 #######################################################################
diff --git a/gpxe b/gpxe
new file mode 160000 (submodule)
index 0000000..1d7f929
--- /dev/null
+++ b/gpxe
@@ -0,0 +1 @@
+Subproject commit 1d7f92923a432fa36a8bf36f963248631e615e53
diff --git a/gpxe_bko/pxeDHCP.bko.tmpl b/gpxe_bko/pxeDHCP.bko.tmpl
new file mode 100644 (file)
index 0000000..11d4e16
--- /dev/null
@@ -0,0 +1,18 @@
+#!gpxe
+echo Hi User, We will be using BKO from URL P_BOOT_URL 
+echo We will try to use dhcp networking initially,
+echo Also loading pxeSTATIC.gpxe fallback script, just in case ......
+echo
+imgload pxeSTATIC.gpxe
+imgstat
+echo Opening first network interface ...
+ifopen net0
+echo If you don't have DHCP, then hit Control+C to cancel
+echo Otherwise, we will try DHCP, and then try static-IP upon failure
+sleep 4
+dhcp net0
+set 209:string pxelinux.cfg/default
+set 210:string P_BOOT_URL
+echo Here we go!
+chain ${210:string}pxelinux.0
+echo PxeKnife booting cancelled, using local disk instead...
diff --git a/gpxe_bko/pxeSTATIC.bko.tmpl b/gpxe_bko/pxeSTATIC.bko.tmpl
new file mode 100644 (file)
index 0000000..788d9c1
--- /dev/null
@@ -0,0 +1,16 @@
+#!gpxe
+echo As you dont have DHCP, you need to give details about network configuration
+echo Soon, you will be presented with interface to provide details about network configuration
+echo Please provide, IP address, Netmask, Gateway and Router
+ifopen net0
+set net0/ip 10.0.2.15
+set net0/netmask 255.255.255.0
+set net0/gateway 10.0.2.2
+set net0/dns 10.0.2.3
+sleep 3
+config net0
+set 209:string pxelinux.cfg/default
+set 210:string P_BOOT_URL
+echo Here we go!
+chain ${210:string}pxelinux.0
+echo PxeKnife booting cancelled, using local disk instead...