From 28635d7954a86fe1f875e49d332b39027f05d48a Mon Sep 17 00:00:00 2001 From: Nico Dietrich Date: Thu, 23 Mar 2006 20:01:19 +0000 Subject: installer: complete rewrite of setup_server git-svn-id: http://svn.openslx.org/svn/openslx/ld4@115 95ad53e4-c205-0410-b2fa-d234c58c8868 --- installer/.config.default | 1 - installer/default_files/default | 98 ++++++++++++++++++++++ .../default_files/tftpboot/pxelinux.cfg/default | 98 ---------------------- installer/ld4-inst | 88 ++++++++++++------- 4 files changed, 155 insertions(+), 130 deletions(-) create mode 100644 installer/default_files/default delete mode 100644 installer/default_files/tftpboot/pxelinux.cfg/default (limited to 'installer') diff --git a/installer/.config.default b/installer/.config.default index 212fb538..1521251d 100644 --- a/installer/.config.default +++ b/installer/.config.default @@ -1,3 +1,2 @@ -rootdir="/nfsroot" tftpbootdir="/tftpboot" diff --git a/installer/default_files/default b/installer/default_files/default new file mode 100644 index 00000000..597c98c0 --- /dev/null +++ b/installer/default_files/default @@ -0,0 +1,98 @@ +# ~/pxelinux.cfg/default (main-menu) +# +# Description: Boot selection with the new Syslinux/PXElinux by Peter Anwin +# selection is done by cursor up and down keys +# Modification: Alexander Heinz +# Dirk von Suchodoletz , 23-09-2005 +# +DEFAULT @@@server@@@::@@@tftpbootdir@@@/menu.c32 + +PROMPT 0 +NOESCAPE 1 +TIMEOUT 600 +#IMPLICIT 1 +#ALLOWOPTIONS 1 +#ONERROR menu + +MENU MASTER PASSWD @@@pxe_passwd@@@ + +MENU TITLE Diskless X-Stations + + +##### +LABEL Bitte waehlen Sie mit den Pfeil-Tasten aus: + KERNEL ::@@@tftpbootdir@@@/menu.c32 + APPEND @@@server@@@::@@@tftpbootdir@@@/pxelinux.cfg/default +LABEL + KERNEL @@@server@@@::@@@tftpbootdir@@@/menu.c32 + APPEND @@@server@@@::@@@tftpbootdir@@@/pxelinux.cfg/default +##### + +LABEL dxsdefault + MENU DEFAULT + MENU LABEL 1. @@@client_distro@@@-@@@client_distro_ver@@@ Diskless + KERNEL @@@server@@@::@@@tftpbootdir@@@/vmlinuz + APPEND nfsroot=@@@server@@@:@@@rootdir@@@ vga=0x317 splash=silent initrd=@@@server@@@::@@@tftpbootdir@@@/initrd apic dhcp noldsc vci=DXS + ipappend 1 + + +LABEL kr1 + MENU LABEL 1. 10.0 NFS + KERNEL @@@server@@@::@@@tftpbootdir@@@/suse10nfs + APPEND nfsroot=@@@server@@@:/nfsroot/sdc/10.0 vga=0x317 splash=silent initrd=@@@server@@@::@@@tftpbootdir@@@/initrd-10nfs apic dhcp noldsc vci=DXS + ipappend 1 + +LABEL kr2 + MENU LABEL 1. 10.0 NBD + KERNEL @@@server@@@::@@@tftpbootdir@@@/suse10nfs + APPEND nbdroot=@@@server@@@:5000,squashfs vga=0x317 splash=silent initrd=@@@server@@@::@@@tftpbootdir@@@/initrd-10nfs apic dhcp noldsc vci=DXS + ipappend 1 + +LABEL kr3 + MENU LABEL 1. 10.0 DNBD + KERNEL @@@server@@@::@@@tftpbootdir@@@/suse10nfs + APPEND dnbdroot=224.0.0.4:squashfs vga=0x317 splash=silent initrd=@@@server@@@::@@@tftpbootdir@@@/initrd-10nfs apic dhcp noldsc vci=DXS elevator=noop + ipappend 1 + +LABEL kr4 + MENU LABEL 1. 10.1 NFS + KERNEL @@@server@@@::@@@tftpbootdir@@@/suse101nfs + APPEND nfsroot=@@@server@@@:/nfsroot/10.1 vga=0x317 splash=silent initrd=@@@server@@@::@@@tftpbootdir@@@/initrd-101nfs apic dhcp noldsc vci=DXS debug=1 + ipappend 1 + +LABEL kr5 + MENU LABEL 1. 10.1 DNBD-SQFS + KERNEL @@@server@@@::@@@tftpbootdir@@@/suse101nfs + APPEND dnbdroot=224.0.0.5:5001,squashfs vga=0x317 splash=silent initrd=@@@server@@@::@@@tftpbootdir@@@/initrd-101nfs apic dhcp noldsc vci=DXS debug=0 elevator=noop + ipappend 1 + +LABEL kr5a + MENU LABEL 1. 10.1 NBD-SQFS + KERNEL @@@server@@@::@@@tftpbootdir@@@/suse101nfs + APPEND nbdroot=@@@server@@@:5000,squashfs vga=0x317 splash=silent initrd=@@@server@@@::@@@tftpbootdir@@@/initrd-101nfs apic dhcp noldsc vci=DXS debug=0 elevator=anticipatory + ipappend 1 + +LABEL kr6 + MENU LABEL 1. 10.1 DNBD-EXT2 + KERNEL @@@server@@@::@@@tftpbootdir@@@/suse101nfs + APPEND dnbdroot=224.0.0.6:5001,ext2 vga=0x317 splash=silent initrd=@@@server@@@::@@@tftpbootdir@@@/initrd-101nfs apic dhcp noldsc vci=DXS debug=0 elevator=noop + ipappend 1 + +LABEL kursraum + MENU LABEL 1. ^FLA Linux 2.6 + KERNEL @@@server@@@::@@@tftpbootdir@@@/10.1 + APPEND nfsroot=@@@server@@@:/nfsroot/10.1 vga=0x317 splash=silent initrd=initrd-10.1 apic dhcp + ipappend 1 + +LABEL local + MENU LABEL 3. ^Lokal booten + MENU PASSWD lokal + localboot 0 + + +##### +LABEL + KERNEL @@@server@@@::@@@tftpbootdir@@@/menu.c32 + APPEND @@@server@@@::@@@tftpbootdir@@@/pxelinux.cfg/default +##### + diff --git a/installer/default_files/tftpboot/pxelinux.cfg/default b/installer/default_files/tftpboot/pxelinux.cfg/default deleted file mode 100644 index 597c98c0..00000000 --- a/installer/default_files/tftpboot/pxelinux.cfg/default +++ /dev/null @@ -1,98 +0,0 @@ -# ~/pxelinux.cfg/default (main-menu) -# -# Description: Boot selection with the new Syslinux/PXElinux by Peter Anwin -# selection is done by cursor up and down keys -# Modification: Alexander Heinz -# Dirk von Suchodoletz , 23-09-2005 -# -DEFAULT @@@server@@@::@@@tftpbootdir@@@/menu.c32 - -PROMPT 0 -NOESCAPE 1 -TIMEOUT 600 -#IMPLICIT 1 -#ALLOWOPTIONS 1 -#ONERROR menu - -MENU MASTER PASSWD @@@pxe_passwd@@@ - -MENU TITLE Diskless X-Stations - - -##### -LABEL Bitte waehlen Sie mit den Pfeil-Tasten aus: - KERNEL ::@@@tftpbootdir@@@/menu.c32 - APPEND @@@server@@@::@@@tftpbootdir@@@/pxelinux.cfg/default -LABEL - KERNEL @@@server@@@::@@@tftpbootdir@@@/menu.c32 - APPEND @@@server@@@::@@@tftpbootdir@@@/pxelinux.cfg/default -##### - -LABEL dxsdefault - MENU DEFAULT - MENU LABEL 1. @@@client_distro@@@-@@@client_distro_ver@@@ Diskless - KERNEL @@@server@@@::@@@tftpbootdir@@@/vmlinuz - APPEND nfsroot=@@@server@@@:@@@rootdir@@@ vga=0x317 splash=silent initrd=@@@server@@@::@@@tftpbootdir@@@/initrd apic dhcp noldsc vci=DXS - ipappend 1 - - -LABEL kr1 - MENU LABEL 1. 10.0 NFS - KERNEL @@@server@@@::@@@tftpbootdir@@@/suse10nfs - APPEND nfsroot=@@@server@@@:/nfsroot/sdc/10.0 vga=0x317 splash=silent initrd=@@@server@@@::@@@tftpbootdir@@@/initrd-10nfs apic dhcp noldsc vci=DXS - ipappend 1 - -LABEL kr2 - MENU LABEL 1. 10.0 NBD - KERNEL @@@server@@@::@@@tftpbootdir@@@/suse10nfs - APPEND nbdroot=@@@server@@@:5000,squashfs vga=0x317 splash=silent initrd=@@@server@@@::@@@tftpbootdir@@@/initrd-10nfs apic dhcp noldsc vci=DXS - ipappend 1 - -LABEL kr3 - MENU LABEL 1. 10.0 DNBD - KERNEL @@@server@@@::@@@tftpbootdir@@@/suse10nfs - APPEND dnbdroot=224.0.0.4:squashfs vga=0x317 splash=silent initrd=@@@server@@@::@@@tftpbootdir@@@/initrd-10nfs apic dhcp noldsc vci=DXS elevator=noop - ipappend 1 - -LABEL kr4 - MENU LABEL 1. 10.1 NFS - KERNEL @@@server@@@::@@@tftpbootdir@@@/suse101nfs - APPEND nfsroot=@@@server@@@:/nfsroot/10.1 vga=0x317 splash=silent initrd=@@@server@@@::@@@tftpbootdir@@@/initrd-101nfs apic dhcp noldsc vci=DXS debug=1 - ipappend 1 - -LABEL kr5 - MENU LABEL 1. 10.1 DNBD-SQFS - KERNEL @@@server@@@::@@@tftpbootdir@@@/suse101nfs - APPEND dnbdroot=224.0.0.5:5001,squashfs vga=0x317 splash=silent initrd=@@@server@@@::@@@tftpbootdir@@@/initrd-101nfs apic dhcp noldsc vci=DXS debug=0 elevator=noop - ipappend 1 - -LABEL kr5a - MENU LABEL 1. 10.1 NBD-SQFS - KERNEL @@@server@@@::@@@tftpbootdir@@@/suse101nfs - APPEND nbdroot=@@@server@@@:5000,squashfs vga=0x317 splash=silent initrd=@@@server@@@::@@@tftpbootdir@@@/initrd-101nfs apic dhcp noldsc vci=DXS debug=0 elevator=anticipatory - ipappend 1 - -LABEL kr6 - MENU LABEL 1. 10.1 DNBD-EXT2 - KERNEL @@@server@@@::@@@tftpbootdir@@@/suse101nfs - APPEND dnbdroot=224.0.0.6:5001,ext2 vga=0x317 splash=silent initrd=@@@server@@@::@@@tftpbootdir@@@/initrd-101nfs apic dhcp noldsc vci=DXS debug=0 elevator=noop - ipappend 1 - -LABEL kursraum - MENU LABEL 1. ^FLA Linux 2.6 - KERNEL @@@server@@@::@@@tftpbootdir@@@/10.1 - APPEND nfsroot=@@@server@@@:/nfsroot/10.1 vga=0x317 splash=silent initrd=initrd-10.1 apic dhcp - ipappend 1 - -LABEL local - MENU LABEL 3. ^Lokal booten - MENU PASSWD lokal - localboot 0 - - -##### -LABEL - KERNEL @@@server@@@::@@@tftpbootdir@@@/menu.c32 - APPEND @@@server@@@::@@@tftpbootdir@@@/pxelinux.cfg/default -##### - diff --git a/installer/ld4-inst b/installer/ld4-inst index 52f85e84..e8ddd9c2 100755 --- a/installer/ld4-inst +++ b/installer/ld4-inst @@ -90,7 +90,7 @@ distro_check() { 10.0) eval "$2=\"10.0\"" ;; - 10*) + 10*|*) eval "$2=\"10.1\"" ;; esac @@ -113,6 +113,7 @@ configure() { fi . .config + # FIXME!! network autodetection seems not to work if ! [ -z "${netmask}" -a -z "${broadcast}" -a -z "${netname}" -a -z "${server}" ] ; then ipcfg=( `ifconfig eth0 | grep "inet addr" | sed -e "s,[a-zA-Z]*:,,g"` ) netmask=${ipcfg[3]} @@ -151,12 +152,14 @@ configure() { fi # das grosse frage-antwort-spiel: - ask "Server distribution: " server_distro ${server_distro} + ask "Server distribution (e.g. debian): " server_distro ${server_distro} + #ask "Server distribution version: " server_distro_ver ${server_distro_ver} distro_check server_distro server_distro_ver echo "Using ${server_distro} as server distribution" # ask for client distro - ask "Client distribution: " client_distro ${client_distro} + ask "Client distribution (e.g. debian): " client_distro ${client_distro} + ask "Client distribution version (numerical - e.g. 3.1): " client_distro_ver ${client_distro_ver} distro_check client_distro client_distro_ver echo "Using ${client_distro} as client distribution" @@ -201,7 +204,8 @@ configure() { copy_system() { echo -e "\n\nSyncing system now\nPlease enter root password of client machine\n" - rsync -avDe ssh --delete --exclude-from=distro-specs/exclude-${client_distro} ${rsyncsource} ${rootdir} + rsync -avDe ssh --delete --exclude-from=distro-specs/exclude-${client_distro} ${rsyncsource} ${rootdir} || { echo "Rsync failed" ; exit 1 } + # generate error message in case rsync didn't work and exit. # TODO: mksquashfs (background process) @@ -211,42 +215,51 @@ copy_system() { # setting up server site configuration files etc. setup_server () { echo -e "\n\nSetting up server configuration\n" - # dhcp - if [ -f ${dhcpd_conf} ] ; then - echo "Copying old dhcpd.conf to dhcpd.conf.dxs.bak" - mv ${dhcpd_conf} ${dhcpd_conf}.dxs.bak - fi - cp default_files/dhcpd.conf ${dhcpd_conf} - sed -e "s,@@@server@@@,${server},g;s,@@@netname@@@,${netname},g;s,@@@netmask@@@,${netmask},g;s,@@@broadcast@@@,${broadcast},g" -i ${dhcpd_conf} + timestamp=`date +%Y%m%d-%H%M` + + # creating central dxs configuration directory structure if it doesn't exist + for dir in dhcp nfs atftpd pxelinux ; do # TODO etc... + [ -d ${dxs_conf}/${dir} ] || mkdir -p ${dxs_conf}/${dir} + done + + # creating new configuration files in $dxs_conf + # dhcp + sed -e "s,@@@server@@@,${server},g;s,@@@netname@@@,${netname},g;s,@@@netmask@@@,${netmask},g;s,@@@broadcast@@@,${broadcast},g" default_files/dhcpd.conf > ${dxs_conf}/${dxs_dhcpd_conf}-${timestamp} # TODO: sed -e @@@example1@@@, netname+1 etc. - which ip addresses are safe to use? # atftpd - if [ -f ${atftpd_conf} ] ; then - echo "Copying old atftpd config file to ${atftpd_conf}.dxs.bak" - cp ${atftpd_conf} ${atftpd_conf}.dxs.bak - fi - ## TODO: MISSING COPY - DISTRO SPECIFIC!! - sed -e "s,/tftpboot,${tftpbootdir}," -i ${atftpd_conf} + sed -e "s,/tftpboot,${tftpbootdir}," default_files/atftpd_conf > ${dxs_conf}/${dxs_atftpd_conf}-${timestamp} # nfs - exports_conf="/etc/exports" - if [ -f ${exports_conf} ] ; then - echo "Copying old nfs export file to ${exports_conf}.dxs.bak" - mv ${exports_conf} ${exports_conf}.dxs.bak - fi - echo "${rootdir} ${netname}/${netmask}(ro,no_root_squash,async)" >> ${exports_conf} + echo -e "# Bla Blub\n \ + # NFS export entry for DXS\n\ + ${rootdir} ${netname}/${netmask}(ro,no_root_squash,async)" >> ${dxs_conf}/${dxs_exports_conf}-${timestamp} # pxe - if [ -e ${tftpbootdir} ] ; then - echo "Copying old tftpboot directory to ${tftpbootdir}.dxs.bak" - rm -rf ${tftpbootdir}.dxs.bak >/dev/null - mv ${tftpbootdir} ${tftpbootdir}.dxs.bak - fi - cp -r default_files/tftpboot ${tftpbootdir} - sed -e "s,@@@server@@@,${server},g;s,@@@tftpbootdir@@@,${tftpbootdir},g;s,@@@pxe_passwd@@@,${pxe_passwd},g;s,@@@client_distro@@@,${client_distro},g;s,@@@client_distro_ver@@@,${client_distro_ver},g;s,@@@rootdir@@@,${rootdir},g" -i ${tftpbootdir}/pxelinux.cfg/default + [ -d ${tftpbootdir} ] || mkdir -p ${tftpbootdir} + rsync -a --exclude=.svn default_files/tftpboot ${tftpbootdir} + + sed -e "s,@@@server@@@,${server},g;s,@@@tftpbootdir@@@,${tftpbootdir},g;s,@@@pxe_passwd@@@,${pxe_passwd},g;s,@@@client_distro@@@,${client_distro},g;s,@@@client_distro_ver@@@,${client_distro_ver},g;s,@@@rootdir@@@,${rootdir},g" default_files/default > ${dxs_conf}/${dxs_pxedefault_conf}-${timestamp} - # TODO: create all kernel entries in default + # TODO: loop over kernel and initial ramdisks and create corresponding entries in default + + + # backing up original files + for cfile in ${dhcpd_conf} ${atftpd_conf} ${exports_conf} ; do + if [ -f ${cfile} -a ! -L ${cfile} ] ; then + echo "Copying old ${cfile} to ${cfile}" + mv ${file} ${file}.original + elif [ -L ${cfile} ] ; then + unlink ${cfile} + fi + done + + # linking files + for cfile in "${dxs_dhcpd_conf} ${dhcpd_conf}" "${dxs_atftpd_conf} ${atftpd_conf}" "${dxs_exports_conf} ${exports_conf}" "${dxs_pxedefault_conf} ${pxedefault_conf}" ; do + set -- $cfile + ln -s ${dxs_conf}/${1}-${timestamp} ${2} + done } @@ -286,8 +299,21 @@ footer() { } + + ## ------ MAIN ------ ## +pxedefault_conf="pxelinux.cfg/default" + +dxs_conf="/etc/dxs/" +dxs_dhcpd_conf="dhcp/dhcpd.conf" +dxs_atftpd_conf="atftpd/atftpd" +dxs_nfs_conf="nfs/exports" +dxs_pxedefault_conf="pxe/default" + + + + header precheck #(run as root, rsync etc.) configure -- cgit v1.2.3-55-g7522