From 744ba24aff5b7af05a1c82503653e53a112fe3d6 Mon Sep 17 00:00:00 2001 From: Jon Clausen Date: Wed, 11 Jul 2018 13:26:11 +0200 Subject: added some initial files/placeholders --- create-boot-floppy | 223 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 223 insertions(+) create mode 100755 create-boot-floppy (limited to 'create-boot-floppy') diff --git a/create-boot-floppy b/create-boot-floppy new file mode 100755 index 0000000..7494043 --- /dev/null +++ b/create-boot-floppy @@ -0,0 +1,223 @@ +#!/bin/sh +# +# proof of concept script to create a bootable 'deployment' floppy +# +# This one can run on a centos7, to generate a boot floppy for a centos7. +# + +Self=$(basename $0) + +function print_usage { + echo "usage: $Self " +} + +function print_help { +cat < + +Script to create a bootable 'install' floppy image. + +The image uses ipxe to retrieve a kernel to boot, and sets URLs for the +'install' initrd and kickstart config the kernel should use. + +The whole thing is pretty CentOS 7 -centric at this point. + +Options given to this script will set values for the bootstrapping of the +*install* stage only. All values may subsequently be overridden from the +kickstart stage, once that is retrieved and control is handed over to it. + +Options: + -D, --domain domain, to complete FQDN + -G, --gateway Gateway of target system + -H, --host hostname of the target system + -I, --ip IP address of target system + -K, --kserver Kickstart server + -M, --netmask Netmask of target system + -N, --nameserver Nameserver of target system + -S, --cosmos-hash Hash used by cosmos to verify stuff + -h, --help this + +If --cosmos-hash is set to 'disabled', the kickstart stage should skip cosmos +bootstrapping, and leave the system unmanaged. + +If -N, -K, -S options are not given, default values are provided. + +EOF +} + +function parse_commadline { + while [ "$#" -gt 0 ] ; do + case "$1" in + -h|--help) + print_help + exit 0 + ;; + -H|--host) + Host="$2" + shift + ;; + -D|--domain) + Domain="$2" + shift + ;; + -I|--ip) + IP="$2" + shift + ;; + -M|--netmask) + NM="$2" + shift + ;; + -G|--gateway) + GW="$2" + shift + ;; + -N|--nameserver) + NS="$2" + shift + ;; + -K|--kserver) + Kserver="$2" + shift + ;; + -S|--cosmos-hash) + CosmosHash="$2" + shift + ;; + *) + echo "what do you mean \"$1\"?" + exit 1 + ;; + esac + shift + done + if [ "x${Host}" = "x" ] + then + echo "${Self}: --host is mandatory" + print_usage + exit 1 + elif [ "x${Domain}" = "x" ] + then + echo "${Self}: --domain is mandatory" + print_usage + exit 1 + elif [ "x${IP}" = "x" ] + then + echo "${Self}: --ip is mandatory" + print_usage + exit 1 + elif [ "x${NM}" = "x" ] + then + echo "${Self}: --netmask is mandatory" + print_usage + exit 1 + elif [ "x${GW}" = "x" ] + then + echo "${Self}: --gateway is mandatory" + print_usage + exit 1 + elif [ "x${NS}" = "x" ] + then + NS="109.105.96.141" + elif [ "x${Kserver}" = "x" ] + then + Kserver="109.105.122.84" + elif [ "x${CosmosHash}" = "x" ] + then + CosmosHash="2f15e1edb02f14607084f167929bc145ed47954d" + fi +} + +# Host="kas-fiona-10-02" +# Domain="nordu.net" +# IP="109.105.122.135" +# NM="255.255.255.192" +# GW="109.105.122.129" +# NS="109.105.96.141" +# Kserver="109.105.122.84" +# CosmosHash="2f15e1edb02f14607084f167929bc145ed47954d" + +parse_commadline $@ + +#### +# In a bid to be clever, we're adding the 'cosmos hash' to the install +# kernel cmdline. This is the one place that cannot be forged, changed, get +# lost or 'go missing' from the initial invocation here, until the +# anaconda/kickstart process takes over... + +WorkDir="$HOME/tmp/${Host}.d" +mkdir -p ${WorkDir}/mnt + +dd if=/dev/zero of=${WorkDir}/${Host}.img bs=2x80x18b count=1 +mkfs.ext2 -F "${WorkDir}/${Host}.img" +sudo mount -o loop ${WorkDir}/${Host}.img ${WorkDir}/mnt + +sudo sh -c "cat >${WorkDir}/mnt/extlinux.conf <${WorkDir}/mnt/${Host}.ipxe <