diff options
author | Nico Dietrich | 2006-01-12 18:44:55 +0100 |
---|---|---|
committer | Nico Dietrich | 2006-01-12 18:44:55 +0100 |
commit | 6e7ef11152c910101d66d10b418d1b27f566ec3a (patch) | |
tree | ad5e4b53e28ddf8bb8b5015b60e9f3f41a8783f3 /installer | |
download | core-6e7ef11152c910101d66d10b418d1b27f566ec3a.tar.gz core-6e7ef11152c910101d66d10b418d1b27f566ec3a.tar.xz core-6e7ef11152c910101d66d10b418d1b27f566ec3a.zip |
Ersteinstellung von ld v4 ins SVN
git-svn-id: http://svn.openslx.org/svn/openslx/dxs/ld4@11 95ad53e4-c205-0410-b2fa-d234c58c8868
Diffstat (limited to 'installer')
-rwxr-xr-x | installer/dxs-inst | 617 |
1 files changed, 617 insertions, 0 deletions
diff --git a/installer/dxs-inst b/installer/dxs-inst new file mode 100755 index 00000000..72811c26 --- /dev/null +++ b/installer/dxs-inst @@ -0,0 +1,617 @@ +#! /bin/bash +# +# Description: Script for generating dxs filesystem from scratch or +# clone from rsync source for Diskless X Stations (v3.4) +# +# Author(s): Dirk von Suchodoletz <dirk@goe.net>, 02-11-2005 +# Copyright: (c) 2003, 2005 - RZ Universitaet Freiburg +# +version="ldc-v3.4 0.10c" +distVersion="10.0" +# +# This program is free software; you can redistribute it and/or modify it under +# the terms of the GNU General Public License as published by the Free Software +# Foundation; either version 2 of the License, or (at your option) any later +# version. +# +# This program is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more +# details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 59 Temple +# Place, Suite 330, Boston, MA 02111-1307 USA +# +# The rpm installation heavily bases on the y2pmdxs script from Lars Mueller +# <lars@m5r.de>. + +# +# We assume (one) two nfs shares exported: +# 1) the diskless linux root filesystem +# 2) /tmp/dxs as a special rw exported share for temporary files +# 3) the client does have only one ethernet interface ---> eth0 +# this is passed via the mkinitrd +# +################################################################################ + +# otherwise some ip detection wouldn't work +LANG=us + + +check_files() { + + if [ ! -x ${rootdir}/sbin/mkinitrd ]; then + echo "please install mkinitrd package for the clients!!" + fi + +} + +welcome() { + if [ $d2dl ] ; then + if [ $update ] ; then + echo "Welcome to version $version of d2dl! Script called for update!" + echo "!! Remember !! Put all files which should be excluded from update" + echo "into exclude.local file (this directory) !! See installation log" + else + echo "Welcome to version $version of d2dl!" + fi + else + echo "Welcome to version $version of dxs-inst! This installation method" + echo "is heavily dependent on the servers software and architecture!!" + echo "It works for the most recent SuSE linux versions 9.1 and 9.2. For" + echo "older versions use previous script versions or the other installation" + echo "method (d2dl - clone installed system). You will need an installed" + echo "version of 'y2pmsh' and 'rsync' - otherwise the procedure would fail" + echo "(this script simply exits) ..." + echo -en "\nChecking for y2pmsh: " + rpm -q y2pmsh || exit 5 + # FIXME: at the moment fixed external settings are used + echo "This script requires a valid installation source set with servers" + echo "yast2 - otherwise no package selections could be made!!" + fi +} + +ask() { + echo -n "* [ $2 ] " + read userinput + if [ -z $userinput ] ; then + back=$2 + else + back=$userinput + fi + echo "$1=\"$back\"" >> .config +} + + +configure() { + # declare some variables and set some defaults + rootdir="/nfsroot/dxs" + debuglevel="2" + initdef="5" + modulelist="e1000 e100 b44 tg3 8139too" + if [ $d2dl ]; then + rsrc="/" + else + install_source="/suse-install" + fi + idef="3" + ipcfg=( `ifconfig eth0 | grep "inet addr" | sed -e "s,[a-zA-Z]*:,,g"` ) + netmask=${ipcfg[3]} + broadcast=${ipcfg[2]} + # quickhack (more intelligent solution needed ...) + netname=`route -n | grep -m 1 eth0 | grep -v "UG" | awk '{ print $1 }'` + server=${ipcfg[1]} + # default passwords (un)crypted + rpw="geheim" + dpw="TEST" + pwr='$2a$10$YUfF8ppp5YU3IkwJLsZtW.lc6dqC8pV/.TkpMK98opNt9/MtRo61a' + pwa='$2a$10$NiRMNlzpwIVA7RmpF2IygeKocRmll8n.1HYnMR4f2dztUE9SINdrK' + updateTreeURL=$( test -f /etc/youservers && grep -v ^# /etc/youservers | head -n 1) +test -z ${updateTreeURL} && updateTreeURL="http://ftp.gwdg.de/pub/suse" + + + echo "installation log for $0 $version">installation.log + + if [ -z $netname ] ; then + netname="192.168.2.0" + fi + # ask for some info interactively + echo + + welcome + + echo "See installation.log for errors ..." + echo -ne "\nChecking for rsync: " + + rsync=TRUE + which rsync &>/dev/null || rsync=FALSE + if ! rsync ; then + echo "rsync is missing..."; exit 5 + fi + + echo -en "\nPrechecks passed!!" + + echo + echo -en "Please answer the following questions: " + echo "(Enter takes defaults)" + [ -f .config ] && { + echo "Reading settings from .config file!!" + . .config + } + echo + + if [ $update ] ; then + echo "Which dxs root path should be updated?" + else + echo "Which dxs root path should be used?" + fi + ask "rootdir" $rootdir + + # do not ask a set of questions if in update mode + if [ ! $update ] ; then + echo "Which network do you want to use for DXS? (A.B.C.0)" + ask "netname" $netname + + echo "Which netmask should be used? (255.B.C.0)" + ask "netmask" $netmask + echo "Using $netname/$netmask !" + + echo "What is your servers IP for NFS, DHCP and TFTP?" + ask "server" $server + + echo "Where automount home directories from? (A.B.C.D:/home-dir)" + ask "amt" $server":/home" + fi + + if [ $d2dl ]; then + # d2dl specific + if [ $update ] ; then + echo "Which update source should be used for rsync?" + else + echo "Which source should be used for rsync?" + fi + echo "format [server:]/path (without trailing / or *)" + ask "rsrc" $rsrc + + else # dxs-inst specific + # echo "Which source directory should be used for installation?" + echo "The following source is used for intallation:" + install_source=`echo "source -s"|y2pmsh|grep -e "[0-9]: "` + # echo -n "${install_source} [ (r)eplace, (a)dd, (d)elete ] " + # URL format for adding sources: + # e.g. ftp://ftp-suse.uni-freiburg.de//pub/suse/i386/9.1 + echo "${install_source}" + #read sc + #if [ $sc ] ; then install_source=$sc; fi + echo "Which SuSE online update source should be used?" + echo -n "* [ ${updateTreeURL} ] " + read updatesrc + if [ $updatesrc ] ; then + updateTreeURL=$updatesrc; + echo "updateTreeURL=\"${updateTreeURL}\"" >> .config + fi + echo "Collecting available package selections from source media. Please wait." + availableSelections=$( echo -e "set root ${rootdir}\nselstate -a" | \ + y2pmsh | \ + grep "^ " | cut -f 6 -d ' ') + unset selection + echo "Please select package groups for installation!" + for sel in $availableSelections; do + echo -n " Add selection $sel? [yN] " + read answer + case "${answer}" in + y|Y) selection="${selection} ${sel}" ;; + *) : ;; + esac + done + if test "${selection}"; then + echo "We have selected: ${selection}" + #if ! echo ${selection} | grep Minimal -q; then + # echo "Selection 'Minimal' not selected. Adding it ..." + # selection="${selection} Minimal" + # fi + else + echo "No package selection accepted. Using 'Minimal' as default." + selection="Minimal" + fi + fi + + if [ ! $update ] ; then + echo "Which debug level should be used?" + ask "debuglevel" $debuglevel + + echo "Which default init you would like to use?" + ask "initdef" $initdef + + # which vendor-class-identifier?? + # + echo + echo "This script sets up the basic filesystem structure for diskless" + echo "X-stations now. Please enable the NFS-Share ${rootdir} in your" + echo "servers /etc/exports file, i.e.:" + echo -e "${rootdir}\t$netname/$netmask(ro,no_root_squash,async)" + echo -e "/tmp/dxs\t\t$netname/$netmask(rw,no_root_squash,async)" + echo -e "/home\t\t$netname/$netmask(rw,async)" + echo + echo "... and (re)start your nfs server." + echo + fi + + echo "Which ethernet card modules should be included in initrd?" + ask "modulelist" $modulelist +} + +create_installation() { + # create installation directory + test -d ${rootdir} || mkdir -p ${rootdir} + + if [ ! $d2dl ]; then + rootdir=${rootdir} \ + packageSelection="${selection}" \ + additionalPackages="dhcp-client kernel-default bootsplash bootsplash-theme-SuSE" \ + obsoletPackages="grub devs" \ + ./y2pmdxs + if test $? != 0; then + echo "Error: y2pmdxs failed." + exit 1 + fi + + # Ensure to install the latest updates. + echo -e "Calling onlineupdate for version: ${distVersion}\nSource: ${updateTreeURL}" + # Ensure to have a working DNS inside the installed system. + test -f ${rootdir}/etc/resolv.conf || \ + cp -p /etc/resolv.conf ${rootdir}/etc + chroot ${rootdir} /usr/bin/test -x /usr/bin/online_update && \ + chroot ${rootdir} online_update --version ${distVersion} --url ${updateTreeURL} + + else # d2dl specific + # exclude list piped to rsync ("+" includes, "-" excludes) + touch ./exclude.local &>/dev/null + # fixme!! modify exclude list and remove files via find + exclude="+ /bin\n+ /boot\n+ /etc\n+ /home\n+ /lib\n\ + + /media\n+ /mnt\n+ /opt\n+ /root\n+ /sbin\n+ /tmp\n+ /usr\n\ + + /var\n\ + - *~\n- *.rpmsave\n- *.rpmnew\n- *.YaST2save\n- *.old\n- *.bak\n\ + - /boot/initrd*\n- /boot/grub\n- /tmp/*\n- /root/*\n- /home/*\n\ + - /var/lib/YaST2/you/mnt/*\n- .svn\n- /var/tmp/*\n\ + - /usr/share/vmware/*\n- *lost+found*\n- /mnt/*\n- /media/*\n- /*" + # 64bit systems + # fixme!! + # if 64bit; then exclude="+ lib64\n"${exclude} + # fi + if echo ${rsrc} |grep ":"&>/dev/null ; then + echo "Wait for root password dialog from the rsync source server! " + echo -e "$exclude" | rsync -avDe ssh --delete --exclude-from=- \ + $rsexcl ${rsrc}/* ${rootdir} + else + echo -e "$exclude" | rsync -avD --delete --exclude-from=- $rsexcl \ + ${rsrc}/ ${rootdir} + fi + # several scripts and configurations do not make much sense to be + # setup or started in diskless environment + rm -rf ${rootdir}/etc/init.d/{SuSEfirewall2*,dhcpd,rpmconfigcheck,autoyast,\ + boot.{md,localfs,crypto,local,rootfsck,device-mapper}} \ + ${rootdir}/etc/init.d/boot.d/*{md,localfs,crypto,rootfsck,\ + device-mapper,coldplug,idedma} ${rootdir}/etc/cron.*/* \ + ${rootdir}/etc/sysconfig/ifcfg-eth* /etc/modprobe.d/* /etc/X11/XF86Conf* \ + ${rootdir}/lib/klibc/events/* + + # empty some of the /var subdirectories + find ${rootdir}/var/X11R6 ${rootdir}/var/tmp ${rootdir}/var/cache \ + ${rootdir}/var/lib/{ldap,slurpd,nfs,sax,mysql,YaST2,kdm,apache2,\ + asterisk,update-messages,autoinstall} \ + ${rootdir}/var/run ${rootdir}/var/log \ + ${rootdir}/var/spool ${rootdir}/var/lib/hardware \ + ${rootdir}/var/adm/backup -type f \ + -exec rm {} \; + fi + + # add the later mounts point for rw filesystem part and several devices + mkdir -p ${rootdir}/ram ${rootdir}/dev ${rootdir}/misc ${rootdir}/proc \ + ${rootdir}/sys ${rootdir}/events &>/dev/null + #cp -a dxs-specific/* ${rootdir}/ + rsync -avxD $rsexcl --exclude=.svn dxs-specific/* ${rootdir}/ + rm ${rootdir}/etc/fstab &>/dev/null; touch ${rootdir}/etc/fstab + + # remove some unneeded files/links (setup within client itself, or to be + # done by admin + rm ${rootdir}/etc/mtab ${rootdir}/etc/X11/xorg.conf* \ + ${rootdir}/etc/X11/XF86Config &>/dev/null + touch ${rootdir}/etc/mtab + # services like network are already configured, other are not of much + # sense like dhcpd + rm ${rootdir}/etc/init.d/boot.d/* \ + ${rootdir}/etc/init.d/rc{2,3,5}.d/* &>/dev/null + + # touch the modules.dep files (so no error is shown if moduls.conf is newer) + touch ${rootdir}/lib/modules/*/modules.* &>/dev/null + + # remove "not_configured" from vmware directory (proper configuration + # from the diskless X station is not possible) + rm ${rootdir}/etc/vmware/not_configured &>/dev/null + # redirect the standard VMware temporary directory + [ -f ${rootdir}/usr/lib/vmware/config ] && { + grep "tmpDirectory" ${rootdir}/usr/lib/vmware/config &>/dev/null || \ + echo -e "tmpDirectory\t= /tmp/vmware_temporary" \ + >> ${rootdir}/usr/lib/vmware/config; } + + # setting passwords in shadow file + if [ ! $update ] ; then + grep dxs-user ${rootdir}/etc/passwd &>/dev/null || echo \ + "dxs-user:x:500:100:DXS Admin:/tmp/dxs-user:/bin/bash" \ + >>${rootdir}/etc/passwd + grep dxs-user ${rootdir}/etc/shadow &>/dev/null || echo \ + "dxs-user::11768:0:99999:7:-1::" >>${rootdir}/etc/shadow + sed -e "s,root:[^:]*:,root:$pwr:," -e "s,dxs-user:[^:]*:,dxs-user:$pwa:," \ + ${rootdir}/etc/shadow >${rootdir}/etc/shadow.new + mv ${rootdir}/etc/shadow.new ${rootdir}/etc/shadow + + # configuring automounter for home directories + echo -e "# /etc/auto.home\n#\n# created by $0 version $version\n" \ + >${rootdir}/etc/auto.home + echo -e "*\t-rsize=32768,wsize=32768,rw\t$amt/&" \ + >>${rootdir}/etc/auto.home + + # remove superfluous services from the kde & gnome desktop + for i in SUSEgreeter.desktop kinternet.desktop suseplugger.desktop \ + susewatcher.desktop ktip.desktop ; do + rm ${rootdir}/opt/kde3/share/autostart/$i &>/dev/null + done + + # configure inittab (remove all gui related entries, set default runlevel, + # and exchange boot for boot.ld script + echo -e "# /etc/inittab - file modified by $0 version $version"\ + > ${rootdir}/etc/inittab.new + grep -v -e "7:[35]" -e "/etc/inittab" ${rootdir}/etc/inittab \ + >> ${rootdir}/etc/inittab.new + sed -e "s,id:.*,id:$initdef:initdefault:," \ + -e "s,/etc/init.d/boot,/etc/init.d/boot.ld," \ + ${rootdir}/etc/inittab.new > ${rootdir}/etc/inittab + + # switch on bluetooth + echo -e "# /etc/sysconfig/bluetooth - file modified by $0 version $version"\ + > ${rootdir}/etc/sysconfig/bluetooth.new + sed -e "s,START_SERVICES.*,START_SERVICES=\"yes\"," \ + ${rootdir}/etc/sysconfig/bluetooth >> \ + ${rootdir}/etc/sysconfig/bluetooth.new + mv ${rootdir}/etc/sysconfig/bluetooth.new ${rootdir}/etc/sysconfig/bluetooth + + # enable magic sysrequest for the clients + echo -e "# /etc/sysconfig/sysctl - file modified by $0 version $version"\ + > ${rootdir}/etc/sysconfig/sysctl.new + sed -e "s,ENABLE_SYSRQ=.*,ENABLE_SYSRQ=\"yes\"," \ + ${rootdir}/etc/sysconfig/sysctl >> \ + ${rootdir}/etc/sysconfig/sysctl.new + mv ${rootdir}/etc/sysconfig/sysctl.new ${rootdir}/etc/sysconfig/sysctl + + # add entry to have udev in initial ramdisk in /etc/sysconfig/hotplug + # and switch off debugging completely + # echo -e "# /etc/sysconfig/hotplug - file modified by $0 version $version"\ + # > ${rootdir}/etc/sysconfig/hotplug.new + # sed -e "s,HOTPLUG_DEV_ON_TMPFS.*,HOTPLUG_DEV_ON_TMPFS=\"yes\"," \ + # -e "s,HOTPLUG_DEBUG.*,HOTPLUG_DEBUG=\"off\"," \ + # ${rootdir}/etc/sysconfig/hotplug >> \ + # ${rootdir}/etc/sysconfig/hotplug.new + # mv ${rootdir}/etc/sysconfig/hotplug.new ${rootdir}/etc/sysconfig/hotplug + + # configure services, X11 fonts et. al. + rm ${rootdir}/etc/init.d/boot.d/* \ + ${rootdir}/etc/init.d/rc{0,6}.d/*{halt,reboot} &>/dev/null + for i in /etc/init.d/rc6.d/S20reboot \ + /etc/init.d/rc0.d/S20halt \ + /etc/init.d/reboot \ + /etc/init.d/halt + do ln -sf /etc/init.d/halt.ld ${rootdir}${i} + done + # vmware-prepare should be added to .depends.start + sed -e "s,TARGETS =,TARGETS = vmware-prep," \ + ${rootdir}/etc/init.d/.depend.start >> \ + ${rootdir}/etc/init.d/.depend.start.new + echo "vmware-prep: " >> ${rootdir}/etc/init.d/.depend.start.new + mv ${rootdir}/etc/init.d/.depend.start.new ${rootdir}/etc/init.d/.depend.start + if [ ! $d2dl ]; then + chroot ${rootdir} /sbin/SuSEconfig + for service in udev proc shm servconf hwsetup klog \ + loadmodules clock localnet sysctl ipconfig; do + chroot ${rootdir} insserv -f boot.${service} + done + # done earlier (simple rm at the moment) + # Disable superflous services (network is needed/setup much earlier, machine + # is a nfs-client but not a server) + + else + count=10 + for i in proc servconf shm udev hwsetup klog loadmodules \ + localnet sysctl ipconfig; do + (( count=$count+1 )) + (( revcnt=41-$count )) + ln -sf /etc/init.d/boot.$i ${rootdir}/etc/init.d/boot.d/S${count}boot.$i + ln -sf /etc/init.d/boot.$i ${rootdir}/etc/init.d/boot.d/K${revcnt}boot.$i + done + fi + + # generate host ssh host key + echo "generating common host key for all diskless machines" + if ! test -f ${rootdir}/etc/ssh/ssh_host_key ; then + ssh-keygen -t rsa1 -b 1024 -f ${rootdir}/etc/ssh/ssh_host_key -N '' + fi + if ! test -f ${rootdir}/etc/ssh/ssh_host_dsa_key ; then + ssh-keygen -t dsa -b 1024 -f ${rootdir}/etc/ssh/ssh_host_dsa_key -N '' + fi + if ! test -f ${rootdir}/etc/ssh/ssh_host_rsa_key ; then + ssh-keygen -t rsa -b 1024 -f ${rootdir}/etc/ssh/ssh_host_rsa_key -N '' + fi + fi +} + +create_initrd() { + # bind mount some directories needed for creation of initrd by mkinitrd + # not if mkinitrd is patched!! + for i in dev sys proc ; do + # multiple bind mounts might occur ... + #mount |grep -q "${rootdir}/$i " || + umount ${rootdir}/$i &>/dev/null + mount --bind /$i ${rootdir}/$i + done + + # generate initrd + if [ -x ${rootdir}/sbin/mkinitrd ]; then + echo "creating new initial ramdisk $modulelist" + mknod ${rootdir}/dev/null c 1 3 &>/dev/null + chroot ${rootdir} mkinitrd \ + -b /boot \ + -m "$modulelist" -s 1024x768 -I eth0 \ + -d ${server}:/${rootdir} + chroot ${rootdir} mkinitrd \ + -b /boot -k vmlinuz -i initrd-800x600 \ + -m "$modulelist" -s 800x600 -I eth0 \ + -d ${server}:/${rootdir} + chroot ${rootdir} mkinitrd \ + -b /boot -k vmlinuz -i initrd-1280x1024 \ + -m "$modulelist" -s 1024x768 -I eth0 \ + -d ${server}:/${rootdir} + else + echo "please install mkinitrd package for the clients!!" + fi + + # and etherboot compatible image + mkelf-linux --ip=rom --output=${rootdir}/boot/bootimg \ + ${rootdir}/boot/vmlinuz ${rootdir}/boot/initrd || \ + echo "mkelf/mknbi is needed only for etherboot enabled network adaptors" + + # /dev, /sys, /proc are needed for mkinitrd + umount ${rootdir}/proc # &>/dev/null + umount ${rootdir}/dev #&>/dev/null + umount ${rootdir}/sys #&>/dev/null +} + +configure_pxe() { + # create PXElinux configuration + ldcver=`cat VERSION` + echo "writing ${rootdir}/boot/pxelinux.cfg/default" + echo -e "# pxelinux.cfg/default - file created by $0 version ${version}\ + n\ + #\n# config file for PXElinux booting\n#\n#\tDirk von Suchodoletz \ + <dirk@goe.net>, 2005" > ${rootdir}/boot/pxelinux.cfg/default + echo -e "\nNOESCAPE 0\nPROMPT 0\nTIMEOUT 100\nDEFAULT menu\ + \nIMPLICIT 1\nALLOWOPTIONS 1\nONERROR menu\nMENU TITLE \ + What would you like to do? (use cursor to select)\n\ + MENU MASTER PASSWD $rpw\n\ + LABEL menu\n\tMENU HIDE\n\tKERNEL ${server}::${rootdir}/boot/menu.c32\n\ + LABEL dxs\n\tMENU DEFAULT\n\tMENU LABEL ^Linux Diskless Client \ + (DXS ${ldcver})\n\tKERNEL ${server}::${rootdir}/boot/vmlinuz\n\ + \tappend vga=0x317 splash=silent initrd=initrd apic dhcp \ + nfsroot=${server}:${rootdir}\n\tipappend 1\n\ + #LABEL dxs-nbd\n#\tMENU LABEL ^Linux Diskless Client \ + (DXS-NBD ${ldcver})\n#\tKERNEL ${server}::${rootdir}/boot/vmlinuz\n\ + #\tappend vga=0x314 splash=silent initrd=initrd apic dhcp \ + nbdroot=${server}:5000\n#\tipappend 1\n\ + #LABEL dxs-800\n#\tMENU LABEL ^Linux Diskless Client \ + (DXS-800x600 ${ldcver})\n#\tKERNEL ${server}::${rootdir}/boot/vmlinuz\n\ + #\tappend vga=0x314 splash=silent initrd=initrd-800x600 apic dhcp \ + nfsroot=${server}:${rootdir}\n#\tipappend 1\n\ + #LABEL dxs-1280\n#\tMENU LABEL ^Linux Diskless Client \ + (DXS-1280x1024 ${ldcver})\n#\tKERNEL ${server}::${rootdir}/boot/vmlinuz\n\ + #\tappend vga=0x31A splash=silent initrd=initrd-1280x1024 apic dhcp \ + nfsroot=${server}:${rootdir}\n#\tipappend 1\n\ + LABEL debug\n\tMENU LABEL Linux Diskless Client (DXS ${ldcver} - \ + ^Debug Mode)\n\tKERNEL vmlinuz\n\ + \tappend vga=normal initrd=initrd debug linuxrc=trace dhcp \ + nfsroot=${server}:${rootdir}\n\tipappend 1\nLABEL local\n\ + \tMENU LABEL Boot ^local device next in BIOS order\n\ + \tlocalboot 0\nLABEL halt\n\tMENU LABEL Power ^off machine\n\ + \tKERNEL $server::${rootdir}/boot/atxoff.com" \ + >> ${rootdir}/boot/pxelinux.cfg/default + + # create simple dhcpd.conf example file + echo "writing a ISC dhcpd configuration example (/etc/dhcpd.conf.example)" + echo -e "# /etc/dhcpd.conf - file created by $0 version $version"\ + > /etc/dhcpd.conf.example + echo -e "# Example configuration file for ISC dhcpd\n#\n\ + # (c) Dirk von Suchodoletz <dirk@goe.net>, 2004\n#\n\ + # -- user defined vendor options --\n\ + option o128 code 128 = string;\n\ + option o129 code 129 = string;\n\ + option menudflts code 160 = string;\n\ + option motdline1 code 184 = string;\n\ + option menuline1 code 192 = string;\n\ + option menuline2 code 193 = string;\n\ + option menuline3 code 194 = string;\n\ + option bootlocal-script code 221 = string;\n\ + option language code 222 = string;\n\ + option start-x code 223 = string;\n\ + option start-snmp code 224 = string;\n\ + option start-sshd code 225 = string;\n\ + option start-xdmcp code 226 = string;\n\ + option start-cron code 227 = string;\n\ + option crontab-entries code 228 = string;\n\ + option start-rwhod code 229 = string;\n\ + option start-printdaemon code 230 = string;\n\ + option tex-enable code 232 = string;\n\ + option netbios-workgroup code 233 = string;\n\ + option vmware code 234 = string;\n\ + option hw-mouse code 252 = string;\n\ + option hw-graphic code 253 = string;\n\ + option hw-monitor code 254 = string;\n\n\ + # -- global options --\n\n\ + option o128 E4:45:74:68:00:00;\n\ + deny unknown-clients;\n\ + default-lease-time 160000;\n\ + max-lease-time 200000;\n\ + use-host-decl-names on;\n\ + option dhcp-max-message-size 1024;\n\ + ddns-update-style none;\n\n\ + # -- client specific --\n\n\ + subnet $netname netmask $netmask {\n\ + server-identifier $server;\n + next-server $server;\n}\n\ + # please check the settings, some of them have to be changed!\n\ + group {\n\ + filename \"${rootdir}/boot/bootimg\";\n\ + option root-path \"${rootdir}\";\n\ + option broadcast-address $broadcast;\n\ + # option routers X.Y.Z.254;\n\ + option domain-name-servers $server;\n\ + option domain-name \"dxs.local\";\n\ + # option desktop-session \"winxptest\";\n\ + # option lpr-servers $server;\n\ + # option x-display-manager $server;\n\ + # option netbios-name-servers netbios-ns;\n\ + # option ntp-servers ntps1,ntps2,ntps3;\n\ + option start-x \"direct\";\n option start-xdmcp \"kdm\";\n\ + option start-rwhod \"yes\";\n option start-cron \"no\";\n\ + option start-snmp \"yes\";\n option netbios-workgroup \"tux-net\";\n\ + option tex-enable \"yes\";\n option vmware \"no\";\n\n\ + host ldc01 {\n\ + hardware ethernet 00:00:00:00:01:01;\n\ + if substring (option vendor-class-identifier,0,3)=\"PXE\"\n\ + { filename \"${rootdir}/boot/pxelinux.0\"; }\n\ + # option hw-monitor \"30-65kHz 50-90Hz \ 1280x1024\";\n\ + option bootlocal-script \"\";\n\ + option o129 \"vga=0x0317 apic\";\n\ + # fixed-address $netname;\n }\n}" >> /etc/dhcpd.conf.example +} + +# ##### MAIN ##### + +# how this script was called +called=`basename $0` +if [ "x$called" = "xd2dl" ]; then + d2dl="yes"; + [ "x$1" = "x-u" ] && { + update="yes"; + rsexcl="--exclude-from=exclude.local --exclude=/etc/passwd* --exclude=/etc/shadow* "; } +fi + +check_programs + +configure + +create_installation + +create_initrd + +if [ ! $update ] ; then + configure_pxe +fi |