summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrian Bidulock2022-06-19 15:08:56 -0600
committerBrian Bidulock2022-06-19 15:08:56 -0600
commitc9c66fa958c55dfc8c6e77205b5b4075e5a3f173 (patch)
tree7c2ca6552d95d7022daeacc234c3b365c52c45ba
downloadaur-c9c66fa958c55dfc8c6e77205b5b4075e5a3f173.tar.gz
initial version
-rw-r--r--.SRCINFO22
-rw-r--r--PKGBUILD27
-rw-r--r--boot.msg14
-rwxr-xr-xmkpxelinux90
-rw-r--r--mkpxelinux.conf36
-rw-r--r--options.msg6
6 files changed, 195 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO
new file mode 100644
index 000000000000..100ab8139a26
--- /dev/null
+++ b/.SRCINFO
@@ -0,0 +1,22 @@
+pkgbase = mkpxelinux
+ pkgdesc = Advanced, modular network pxe boot image creation utility
+ pkgver = 2013.10
+ pkgrel = 3
+ url = http://www.archlinux.org/
+ arch = any
+ license = GPL
+ depends = mkinitcpio
+ depends = tftp-hpa
+ depends = syslinux
+ optdepends = dhcp: for dhcp server usage
+ backup = etc/mkpxelinux.conf
+ source = boot.msg
+ source = mkpxelinux
+ source = mkpxelinux.conf
+ source = options.msg
+ md5sums = f4a30ab94fdc1974f4fbdfd7235ca512
+ md5sums = 90dd31f0501df4defdbe975368446f27
+ md5sums = 1b6aa3d4e77d6d7a61590d242d34a138
+ md5sums = b211c5f7e30d2ee36cde20f71aa3f2b8
+
+pkgname = mkpxelinux
diff --git a/PKGBUILD b/PKGBUILD
new file mode 100644
index 000000000000..835c3dd2f390
--- /dev/null
+++ b/PKGBUILD
@@ -0,0 +1,27 @@
+# Maintainer : Brian Bidulock <bidulock@openss7.org>
+# Contributor : Tobias Powalowski <tpowa@archlinux.org>
+
+pkgname=mkpxelinux
+pkgver=2013.10
+pkgrel=3
+pkgdesc="Advanced, modular network pxe boot image creation utility"
+arch=(any)
+license=('GPL')
+url="http://www.archlinux.org/"
+depends=('mkinitcpio' 'tftp-hpa' 'syslinux')
+backup=(etc/mkpxelinux.conf)
+optdepends=('dhcp: for dhcp server usage')
+source=('boot.msg' 'mkpxelinux' 'mkpxelinux.conf' 'options.msg')
+
+package()
+{
+ cd "$srcdir/"
+ install -D -m755 mkpxelinux "$pkgdir/usr/bin/mkpxelinux"
+ install -D -m644 mkpxelinux.conf "$pkgdir/etc/mkpxelinux.conf"
+ install -D -m644 boot.msg "$pkgdir/usr/share/mkpxelinux/boot.msg"
+ install -D -m644 options.msg "$pkgdir/usr/share/mkpxelinux/options.msg"
+}
+md5sums=('f4a30ab94fdc1974f4fbdfd7235ca512'
+ '90dd31f0501df4defdbe975368446f27'
+ '1b6aa3d4e77d6d7a61590d242d34a138'
+ 'b211c5f7e30d2ee36cde20f71aa3f2b8')
diff --git a/boot.msg b/boot.msg
new file mode 100644
index 000000000000..f8e8fa1f7526
--- /dev/null
+++ b/boot.msg
@@ -0,0 +1,14 @@
+
+
+------------------------------------------------------------------------------
+Arch Linux
+PXELINUX BOOT
+created with 'mkpxelinux' written by Tobias Powalowski <tpowa@archlinux.org>
+
+Press ENTER or type 'arch' to boot image.
+
+If you wish to change your defaults to boot into your existing system,
+type 'vmlinuz initrd=initrd.img <any_other_boot_option>'
+Use the F2 key for troubleshooting and options.
+------------------------------------------------------------------------------
+
diff --git a/mkpxelinux b/mkpxelinux
new file mode 100755
index 000000000000..7459eaa77f54
--- /dev/null
+++ b/mkpxelinux
@@ -0,0 +1,90 @@
+#! /bin/sh
+# Created by Tobias Powalowski <tpowa@archlinux.org>
+# Settings
+APPNAME=$(basename "${0}")
+CONFIG="/etc/mkpxelinux.conf"
+
+usage ()
+{
+ echo "${APPNAME}: usage"
+ echo""
+ echo " -d=INSTALLDIR Your INSTALLDIR overwrites config default"
+ echo " -c=CONFIG Use CONFIG file. default: /etc/mkpxelinux.conf"
+ echo " -h This message."
+ exit 1
+}
+
+[ "$1" == "" ] && usage && exit 1
+
+while [ $# -gt 0 ]; do
+ case $1 in
+ -c=*|--c=*) CONFIG="$(echo $1 | awk -F= '{print $2;}')" ;;
+ -d=*|--d=*) CUSTOMINSTALLDIR="$(echo $1 | awk -F= '{print $2;}')" ;;
+ -h|--h|?) usage ;;
+ *) usage ;;
+ esac
+ shift
+done
+
+if [ ! -f "${CONFIG}" ]; then
+ echo "config file '${CONFIG}' cannot be found, aborting..."
+ exit 1
+fi
+
+. "${CONFIG}"
+# export for mkinitcpio
+[ -n "${APPENDBOOTMESSAGE}" ] && export APPENDBOOTMESSAGE
+[ -n "${APPENDOPTIONSBOOTMESSAGE}" ] && export APPENDOPTIONSBOOTMESSAGE
+
+! [ "${CUSTOMINSTALLDIR}" = "" ] && INSTALLDIR=${CUSTOMINSTALLDIR}
+
+if [ "${INSTALLDIR}" = "" ]; then
+ echo "ERROR: No INSTALLDIR name specified, please use the -d option"
+ exit 1
+fi
+
+if ! [ $UID -eq 0 ]; then
+ echo "ERROR: only works when run as root!"
+ exit 1
+fi
+
+! [ -e ${INSTALLDIR} ] && echo "No ${INSTALLDIR} found!" && exit 1
+export TEMPDIR=${NFSROOTDIR}
+export INSTALLDIR=${INSTALLDIR}
+export RUNPROGRAM="${APPNAME}"
+[ "${BOOTMESSAGE}" = "" ] && export BOOTMESSAGE=$(mktemp /tmp/bootmessage.XXXX)
+[ "${OPTIONSBOOTMESSAGE}" = "" ] && export OPTIONSBOOTMESSAGE=$(mktemp /tmp/optionsbootmessage.XXXX)
+export USEKERNEL=${VERSION}
+# begin script
+# create default
+echo ":: Creating pxelinux default config file ..."
+mkdir -p ${INSTALLDIR}/pxelinux.cfg
+if [ "${PXELINUX_DEFAULT}" = "" ]; then
+ [ -e ${INSTALLDIR}/pxelinux.cfg/default ] && rm ${INSTALLDIR}/pxelinux.cfg/default
+ echo "prompt ${PROMPT}" >> ${INSTALLDIR}/pxelinux.cfg/default
+ echo "timeout ${TIMEOUT}" >> ${INSTALLDIR}/pxelinux.cfg/default
+ echo "display boot.msg" >> ${INSTALLDIR}/pxelinux.cfg/default
+ echo "F1 boot.msg" >> ${INSTALLDIR}/pxelinux.cfg/default
+ echo "F2 options.msg" >> ${INSTALLDIR}/pxelinux.cfg/default
+ echo "default arch" >> ${INSTALLDIR}/pxelinux.cfg/default
+ echo "label arch" >> ${INSTALLDIR}/pxelinux.cfg/default
+ echo "kernel vmlinuz" >> ${INSTALLDIR}/pxelinux.cfg/default
+ echo "append initrd=initrd.img ${KERNEL_BOOT_OPTIONS}" >> ${INSTALLDIR}/pxelinux.cfg/default
+else
+ sed "s|@@PROMPT@@|${PROMPT}|g;s|@@TIMEOUT@@|${TIMEOUT}|g;s|@@KERNEL_BOOT_OPTIONS@@|${KERNEL_BOOT_OPTIONS}|g" \
+ ${PXELINUX_DEFAULT} > ${INSTALLDIR}/pxelinux.cfg/default
+fi
+[ ! -s ${INSTALLDIR}/pxelinux.cfg/default ] && echo "No pxelinux default config found" && exit 1
+echo ":: Calling mkinitcpio CONFIG=${MKINITCPIO_CONFIG} KERNEL=${VERSION} ..."
+# generate initramdisk
+echo ":: Creating initramdisk ..."
+ mkinitcpio -c ${MKINITCPIO_CONFIG} -k ${VERSION} -g ${INSTALLDIR}/initrd.img
+echo ":: Using ${KERNEL} as image kernel ..."
+ install -m644 ${KERNEL} ${INSTALLDIR}/vmlinuz
+echo ":: Installing message files to ${INSTALLDIR} ..."
+ install -m644 ${BOOTMESSAGE} ${INSTALLDIR}/boot.msg
+ install -m644 ${OPTIONSBOOTMESSAGE} ${INSTALLDIR}/options.msg
+ [ ! -s ${INSTALLDIR}/boot.msg ] && echo 'ERROR:no boot.msg found, aborting!' && exit 1
+ [ ! -s ${INSTALLDIR}/options.msg ] && echo 'ERROR:no options.msg found, aborting!' && exit 1
+echo ":: Installing PXELINUX to ${INSTALLDIR} ..."
+ install -m644 /usr/lib/syslinux/bios/pxelinux.0 ${INSTALLDIR}/pxelinux.0 && echo "Installation completed."
diff --git a/mkpxelinux.conf b/mkpxelinux.conf
new file mode 100644
index 000000000000..f2427486f098
--- /dev/null
+++ b/mkpxelinux.conf
@@ -0,0 +1,36 @@
+# Created by Tobias Powalowski <tpowa@archlinux.org>
+# config file of mkpxelinux
+
+# DEFAULT kernel boot options like ip=:::::eth0:dhcp etc.
+# add your root= option, if you boot from a disk device
+# and don't want to add it by hand on each boot
+KERNEL_BOOT_OPTIONS=""
+
+# mkinitcpio config file, defaulted to stock config file
+MKINITCPIO_CONFIG="/etc/mkinitcpio.conf"
+
+# kernel version, defaulted to build for runtime kernel
+VERSION="$(uname -r)"
+
+# kernel image, defaulted to stock arch kernel
+KERNEL="/boot/vmlinuz-linux"
+
+# boot message files
+BOOTMESSAGE="/usr/share/mkpxelinux/boot.msg"
+OPTIONSBOOTMESSAGE="/usr/share/mkpxelinux/options.msg"
+
+#pxelinux default config file to use
+PXELINUX_DEFAULT=""
+
+# Prompt on boot, 1=yes 0=no
+PROMPT="1"
+
+# Timeout, 30 seconds to fix usb keyboard issues
+# 0 means wait for prompt
+TIMEOUT="300"
+
+# Installdir of tftp, default location
+INSTALLDIR="/var/tftpboot"
+
+# Nfsrootdir, for hooks that might need it
+NFSROOTDIR=""
diff --git a/options.msg b/options.msg
new file mode 100644
index 000000000000..3324145e1a08
--- /dev/null
+++ b/options.msg
@@ -0,0 +1,6 @@
+------------------------------------------------------------------------------
+Arch Linux options and troubleshooting:
+
+- If your system hangs during the boot process, any combinations of the
+ boot options noapic acpi=off pci=routeirq nosmp nomsi may be useful.
+------------------------------------------------------------------------------ \ No newline at end of file