# UWM LSC Group Beowulf Kickstart Configuration File # # For use with RedHat 6.2 installation CD # # Kevin Flasch # Duncan Brown # # $Id: ks.cfg,v 1.147 2002/11/25 19:54:12 kflasch Exp $ # $Name: $ # install lang en_US keyboard us cdrom clearpart --all part swap --size 512 part / --size 2048 part /data --grow zerombr yes lilo --location mbr mouse generic3ps/2 timezone --utc US/Central auth --enablemd5 --useshadow rootpw w@nk3r$! network --bootproto dhcp skipx reboot %packages @ Printer Support @ X Window System @ GNOME @ Mail/WWW/News Tools @ DOS/Windows Connectivity @ Networked Workstation @ Network Management Workstation @ Emacs @ Development @ Utilities %post # this is the post install script executed in the new chrooted install # failed () { touch /.failed_install echo "script failed. see /tmp/postinstall.log" /bin/bash -i exit 1 } fatal () { echo "unrecoverable error in install..." | wall } # remove any existing logfile # rm -f /tmp/postinstall.log # add extra configuration to rc.local # ####### begin here document ###################################### if cat >> /etc/rc.d/rc.local <> /etc/issue echo "*** WARNING: errors occured during the slave install ***" \ >> /etc/issue echo "*** Please examine the log files /tmp/install.log and ***" \ >> /etc/issue echo "*** /tmp/postinstall.log error messages ***" \ >> /etc/issue echo "*********************************************************" \ >> /etc/issue echo "" >> /etc/issue fi # running hdparm to increase disk access speed # Should we use -k1 (keep options over IDE reset) on hdd also? echo "Running hdparm commands in rc.local" >> /var/log/messages 2>&1 hdparm -c1 -d1 -m16 -u1 -W1 -k1 /dev/hda >> /var/log/messages 2>&1 hdparm -c3 -d1 -X66 /dev/hdd >> /var/log/messages 2>&1 # start up S.M.A.R.T. disk monitoring echo "Running SMART commands in rc.local" >> /var/log/messages 2>&1 /usr/sbin/smartctl -et /dev/hda >> /var/log/messages 2>&1 # start up S.M.A.R.T. disk monitoring daemon /usr/sbin/smartd >> /var/log/messages 2>&1 EOF ####### end here document ######################################## then echo "added extra configuration to rc.local" \ | tee -a /tmp/postinstall.log else echo "couldn't append to /etc/rc.d/rc.local" \ | tee -a /tmp/postinstall.log fatal fi # set the time from the hardware clock # TZ="US/Central" export TZ /sbin/hwclock --hctosys --utc --debug \ >> /tmp/postinstall.log 2>&1 || failed # insert the new ethernet driver into the kernel and setup networking # echo "configuring networking" rm -f /tmp/e100_2.2.14-5.0BOOT.o mcopy a:e100_2.2.14-5.0BOOT.o /tmp/e100_2.2.14-5.0BOOT.o \ >> /tmp/postinstall.log 2>&1 || failed insmod --force /tmp/e100_2.2.14-5.0BOOT.o >> /tmp/postinstall.log 2>&1 || failed netconfig --bootproto=dhcp --device=eth0 >> /tmp/postinstall.log 2>&1 || failed ifup eth0 \ >> /tmp/postinstall.log 2>&1 || failed # # increase the hard disk speed and reformat /data # echo "executing hdparms" hdparm -c1 -d1 -m16 -u1 -W1 /dev/hda >> /tmp/postinstall.log 2>&1 || failed echo "remaking /data (/dev/hda6)" umount /data || failed mkfs -t ext2 -i 65536 -m 1 /dev/hda6 >> /tmp/postinstall.log 2>&1 || failed mount /data || failed # this is the base url of any downloaded files # baseurl="http://www.lsc-group.phys.uwm.edu/beowulf/slaveconfig" /bin/echo -e "getting new rpm files from:\n${baseurl}" \ | tee -a >> /tmp/postinstall.log # remove all obsolete rpms # for rpmfile in kernel-pcmcia-cs-2.2.14-5.0 \ kernel-utils-2.2.14-5.0 \ kernelcfg-0.5-5 \ vim-minimal-5.6-11 \ vim-common-5.6-11 do echo "removing ${rpmfile}" rpm --nodeps -ev ${rpmfile} \ >> /tmp/postinstall.log 2>&1 || failed done # rpm can't remove all the junk from 2.2.14-5.0, so do it here # rm -rf /usr/src/linux-2.2.14 rm -rf /lib/modules/2.2.14-5.0 rm -f /boot/module-info # upgrade rpm, install db3 and refresh the rpm database # for rpmfile in rpm-4.0.2-6x.i386.rpm \ rpm-devel-4.0.2-6x.i386.rpm \ rpm-build-4.0.2-6x.i386.rpm \ popt-1.6.2-6x.i386.rpm \ db3-3.1.17-4.6x.i386.rpm \ db3-devel-3.1.17-4.6x.i386.rpm \ db3-utils-3.1.17-4.6x.i386.rpm do echo "upgrading ${rpmfile}" rpm --nodeps --force -Uvh ${baseurl}/rpms/${rpmfile} \ >> /tmp/postinstall.log 2>&1 || failed done echo "rebuilding rpm database" rpm --rebuilddb \ >> /tmp/postinstall.log 2>&1 || failed # install the uwm custom kernel, mount, nfsutils and lm_sensors # for rpmfile in modutils-2.4.2-2.i386.rpm \ kernel-headers-2.4.17-1medusa.i386.rpm \ kernel-2.4.17-1medusa.i386.rpm \ kernel-source-2.4.17-1medusa.i386.rpm \ nfs-utils-0.3.1-2medusa.i386.rpm \ mount-2.11f-1medusa.i386.rpm \ losetup-2.11f-1medusa.i386.rpm \ lm_sensors-drivers-2.6.2-1medusa.i386.rpm \ lm_sensors-2.6.2-1medusa.i386.rpm \ lm_sensors-devel-2.6.2-1medusa.i386.rpm \ make-3.79.1-5.i386.rpm do echo "upgrading ${rpmfile}" rpm --nodeps --force -Uvh ${baseurl}/rpms/${rpmfile} \ >> /tmp/postinstall.log 2>&1 || failed done # upgrade X server to XFree86 version 4 # for rpmfile in kudzu-0.51.1-1rh6.i386.rpm \ kudzu-devel-0.51.1-1rh6.i386.rpm \ freetype-1.3.1-6rh6.i386.rpm \ XFree86-4.0.2-1rh6.i386.rpm \ XFree86-libs-4.0.2-1rh6.i386.rpm \ XFree86-xfs-4.0.2-1rh6.i386.rpm \ XFree86-75dpi-fonts-4.0.2-1rh6.i386.rpm \ XFree86-devel-4.0.2-1rh6.i386.rpm \ Xconfigurator-4.4.1-1rh6.i386.rpm do echo "upgrading ${rpmfile}" rpm --nodeps --force -Uvh ${baseurl}/rpms/${rpmfile} \ >> /tmp/postinstall.log 2>&1 || failed done # redhat 6.2 enhacements # for rpmfile in openldap-1.2.9-6.i386.rpm \ openldap-devel-1.2.9-6.i386.rpm \ krb5-configs-1.1.1-27.i386.rpm \ krb5-devel-1.1.1-27.i386.rpm \ krb5-libs-1.1.1-27.i386.rpm do echo "upgrading ${rpmfile}" rpm --nodeps --force -Uvh ${baseurl}/rpms/${rpmfile} \ >> /tmp/postinstall.log 2>&1 || failed done # redhat 6.2 security upgrades 20010625 - 20001127 # for rpmfile in gnupg-1.0.6-0.6.x.i386.rpm \ mktemp-1.5-2.1.6x.i386.rpm \ man-1.5i-0.6x.1.i386.rpm \ minicom-1.83.1-1.0.6x.i386.rpm \ gftp-2.0.8-1.i386.rpm \ netscape-common-4.77-0.6.2.i386.rpm \ netscape-communicator-4.77-0.6.2.i386.rpm \ pine-4.33-6.6x.i386.rpm \ sgml-tools-1.0.9-6.2.i386.rpm \ slrn-0.9.6.4-0.6.i386.rpm \ mutt-1.2.5i-8.6.i386.rpm \ vixie-cron-3.0.1-40.1.i386.rpm \ inetd-0.16-7.i386.rpm \ glibc-2.1.3-22.i386.rpm \ slocate-2.4-0.6.x.i386.rpm \ ed-0.2-19.6x.i386.rpm \ tcsh-6.10-0.6.x.i386.rpm \ pam-0.72-20.6.x.i386.rpm \ usermode-1.37-1.6.i386.rpm \ gnorpm-0.95.1-6.6x.i386.rpm do echo "upgrading ${rpmfile}" rpm --nodeps --force -Uvh ${baseurl}/rpms/${rpmfile} \ >> /tmp/postinstall.log 2>&1 || failed done # redhat 6.2 security upgrades 20001127 - 20000330 # for rpmfile in pine-4.33-6.6x.i386.rpm \ bash-1.14.7-23.6x.i386.rpm \ ncurses-5.0-12.i386.rpm \ ncurses-devel-5.0-12.i386.rpm \ ghostscript-5.50-8_6.x.i386.rpm \ dump-0.4b19-5.6x.i386.rpm \ ypbind-1.7-0.6.x.i386.rpm \ iputils-20001010-1.6x.i386.rpm \ tmpwatch-2.6.2-1.6.2.i386.rpm \ esound-0.2.20-0.i386.rpm \ traceroute-1.4a5-24.6x.i386.rpm \ lpr-0.50-7.6.x.i386.rpm \ sysklogd-1.3.31-17.i386.rpm \ xpdf-0.91-1.6x.i386.rpm \ mailx-8.1.1-16.i386.rpm \ perl-5.00503-12.i386.rpm \ xchat-1.4.0-2.i386.rpm \ umb-scheme-3.2-12.i386.rpm \ gpm-1.19.3-0.6.x.i386.rpm \ emacs-20.7-1.i386.rpm \ emacs-X11-20.7-1.i386.rpm \ emacs-nox-20.7-1.i386.rpm do echo "upgrading ${rpmfile}" rpm --nodeps --force -Uvh ${baseurl}/rpms/${rpmfile} \ >> /tmp/postinstall.log 2>&1 || failed done # redhat 6.2 bug fixes # for rpmfile in up2date-2.5.4-0.6.x.i386.rpm \ ucd-snmp-4.1.1-3.i386.rpm \ ucd-snmp-devel-4.1.1-3.i386.rpm \ ucd-snmp-utils-4.1.1-3.i386.rpm \ textutils-2.0e-6.i386.rpm \ libtiff-3.5.5-2.i386.rpm \ gnuplot-3.7.1-5.i386.rpm \ transfig-3.2.3-2.i386.rpm do echo "upgrading ${rpmfile}" rpm --nodeps --force -Uvh ${baseurl}/rpms/${rpmfile} \ >> /tmp/postinstall.log 2>&1 || failed done # Globus RPM # besides installing into /opt/globus-location this RPM edits # /etc/services and /etc/inetd.conf # # Should not use "|| failed" like other installation of rpms # because the rpms fails the end of the postinstall during the # kickstart. This failure is harmless, however. rpm -Uvh ${baseurl}/rpms/globus-LSC-server-2.0-5.i386.rpm \ >> /tmp/postinstall.log 2>&1 # globus set up # define GLOBUS_LOCATION in /etc/profile echo "export GLOBUS_LOCATION=/opt/globus-location" >> /etc/profile # needed for openssh install export GLOBUS_LOCATION=/opt/globus-location # GSI-enabled OpenSSH # for rpmfile in openssh-3.1p1-3.i386.rpm \ openssh-server-3.1p1-3.i386.rpm \ openssh-clients-3.1p1-3.i386.rpm \ openssh-askpass-3.1p1-3.i386.rpm \ openssh-askpass-gnome-3.1p1-3.i386.rpm \ openssl-0.9.6-3.i386.rpm \ openssl-devel-0.9.6-3.i386.rpm \ openssl-perl-0.9.6-3.i386.rpm \ openssl-python-0.9.6-3.i386.rpm do echo "installing ${rpmfile}" rpm --nodeps --force -Uvh ${baseurl}/rpms/${rpmfile} \ >> /tmp/postinstall.log 2>&1 || failed done # install ldcg rpms # /usr/sbin/useradd -r ldcg \ >> /tmp/postinstall.log 2>&1 || failed for rpmfile in ldcg_stow-1.3.2-2_rh62.i386.rpm \ ldcg_binutils-2.11.2-2_rh62.i386.rpm \ ldcg_gcc-2.95.3-5_rh62.i386.rpm \ ldcg_fileutils-4.0-2_rh62.i386.rpm \ ldcg_m4-1.4-2_rh62.i386.rpm \ ldcg_automake-1.5-3_rh62.i386.rpm \ ldcg_libtool-1.4.2-4_rh62.i386.rpm \ ldcg_tcl-8.3.3-3_rh62.i386.rpm \ ldcg_tk-8.3.3-3_rh62.i386.rpm \ ldcg_bwidget-1.2.1-4_rh62.i386.rpm \ ldcg_lam-6.5.6-1_rh62.i386.rpm \ ldcg_swig-1.1pl883-3_rh62.i386.rpm \ ldcg_xerces-1.4.0-3_rh62.i386.rpm \ ldcg_objectspace-1.2.0-2_rh62.i386.rpm \ ldcg_fftw-2.1.3-3_rh62.i386.rpm \ ldcg_curl-7.9.2-1_rh62.i386.rpm \ ldcg_iodbc-2.50.2-3_rh62.i386.rpm \ ldcg_tth-3.08-1_rh62.i386.rpm \ ldcg_clapack-3.0-3_rh62.i386.rpm do echo "installing ${rpmfile}" rpm -Uvh ${baseurl}/rpms/${rpmfile} \ >> /tmp/postinstall.log 2>&1 || failed done # install/upgrade additional rpms # for rpmfile in binutils-2.10.0.18-1.i386.rpm \ openmotif-2.1.30-4_MLI.i386.rpm \ openmotif-devel-2.1.30-4_MLI.i386.rpm \ ddd-3.3-1.i386.rpm \ xntp3-5.93-15medusa.i386.rpm \ autofs-3.1.4-4.i386.rpm \ libPropList-0.9.1-1.i386.rpm \ WindowMaker-0.61.1-2.i386.rpm \ ether-wake-1.05-1medusa.i386.rpm \ memtest86-2.6-4medusa.i386.rpm \ vim-5.8-1medusa.i386.rpm \ expat-1.1-4tummy.i386.rpm \ expat-devel-1.1-4tummy.i386.rpm \ python-2.1.1-3.i386.rpm \ python-devel-2.1.1-3.i386.rpm \ python-tools-2.1.1-3.i386.rpm \ python-tkinter-2.1.1-3.i386.rpm \ vgablank-1.0-1medusa.i386.rpm \ bind-8.2.3-1medusa.i386.rpm \ bind-devel-8.2.3-1medusa.i386.rpm \ bind-utils-8.2.3-1medusa.i386.rpm \ fan-monitor-1.1-4medusa.i386.rpm \ nut-0.50.0-1medusa.i386.rpm \ mpich-1.2.1-1medusa.i386.rpm \ smartmontools-5.0-26.i386.rpm \ acroread-4.05-6.i386.rpm \ ganglia-monitor-core-2.4.1-1.i386.rpm \ sensorscheck-3.11-1medusa.i386.rpm \ pyGlobus-LSC-0.9.5-1.i386.rpm \ sysstat-4.0.6-1.i386.rpm \ LSCGridTools-0.1-1.i386.rpm do echo "installing ${rpmfile}" rpm --nodeps --force -Uvh ${baseurl}/rpms/${rpmfile} \ >> /tmp/postinstall.log 2>&1 || failed done # Remove broken Redhat makewhatis scripts -- these cause man -k to FAIL # echo "removing broken makewhatis scripts" rm -f /etc/cron.daily/makewhatis.cron >> /tmp/postinstall.log 2>&1 || failed rm -f /etc/cron.weekly/makewhatis.cron >> /tmp/postinstall.log 2>&1 || failed # download misc configuration files to go in /etc: make sure perms are ok # echo "installing slave specific configuration files" ( lynx -source ${baseurl}/etc.tar.gz | tar -C / -zxvf - ) \ >> /tmp/postinstall.log 2>&1 || failed ( for file in `lynx -source ${baseurl}/etc.tar.gz | tar -ztf -` do if [ -f /${file} ] ; then chown root.root /${file} chmod 644 /${file} fi done ) \ >> /tmp/postinstall.log 2>&1 || failed # fix permissions of custom cron files chmod a+x /etc/cron.weekly/sethardwareclock.cron # set up mountpoints and symbolic links # rm -rfv /mnt /home /usr/local /var/spool/mail \ >> /tmp/postinstall.log 2>&1 || failed mkdir -p /mnt /home /net /ldcg \ >> /tmp/postinstall.log 2>&1 || failed ln -sf /mnt/mail /var/spool/mail \ >> /tmp/postinstall.log 2>&1 || failed ln -sf ../../usr/X11R6/bin/XFree86 /etc/X11/X \ >> /tmp/postinstall.log 2>&1 || failed ln -sf /mnt/ldas /ldas \ >> /tmp/postinstall.log 2>&1 || failed ln -sf /mnt/ldas_outgoing /ldas_outgoing \ >> /tmp/postinstall.log 2>&1 || failed ln -sf /mnt/scratch /scratch \ >> /tmp/postinstall.log 2>&1 || failed # remove references to "/mnt/" from fstab # cp /etc/fstab /tmp/fstab.old \ >> /tmp/postinstall.log 2>&1 || failed ( cat /tmp/fstab.old | sed "/\/mnt\//d" > /etc/fstab ) \ >> /tmp/postinstall.log 2>&1 || failed # start daemons # for initfile in xntpd autofs nfs nfslock ypbind do /sbin/chkconfig --level 35 ${initfile} on \ >> /tmp/postinstall.log 2>&1 || failed /sbin/chkconfig --level 06 ${initfile} off \ >> /tmp/postinstall.log 2>&1 || failed done # turn kudzu off echo "turning kudzu off" /sbin/chkconfig kudzu off >> /tmp/postinstall.log 2>&1 || failed # add additional XF86 config files to /etc/X11 # echo "downloading additional XF86 config files to /etc/X11" | tee -a /tmp/postinstall.log lynx -source ${baseurl}/nonstandard/XF86ConfigVX1120 \ > /etc/X11/XF86ConfigVX1120 || failed lynx -source ${baseurl}/nonstandard/XF86ConfigE771 \ > /etc/X11/XF86ConfigE771 || failed lynx -source ${baseurl}/nonstandard/XF86Config770TFT \ > /etc/X11/XF86Config770TFT || failed # add ethernet module info and some lines to stop errors messages # from appearing to modules.conf # echo "setting up eepro100 module" | tee -a /tmp/postinstall.log /bin/echo "alias eth0 eepro100" >> /etc/modules.conf /bin/echo "alias net-pf-10 off" >> /etc/modules.conf /bin/echo "alias block-major-8 off" >> /etc/modules.conf /bin/echo "alias block-major-33 off" >> /etc/modules.conf /bin/echo "alias block-major-34 off" >> /etc/modules.conf # download a ramdisk # lynx -source ${baseurl}/initrd-eepro100.img \ > /boot/initrd-eepro100.img || failed # add custom vim / gvim rc files # add /usr/bin/vi # echo "downloading custom vim / gvim rc" | tee -a /tmp/postinstall.log lynx -source ${baseurl}/nonstandard/vimrc \ > /root/.vimrc || failed lynx -source ${baseurl}/nonstandard/gvimrc \ > /root/.gvimrc || failed echo "creating /bin/vi ..." ln -s /usr/bin/vim /bin/vi || failed # add initrd-clone.img for ramdisk boot cloning over nfs # lynx -source ${baseurl}/nonstandard/initrd-clone.img \ > /boot/initrd-clone.img || failed /bin/echo "" >> /etc/lilo.conf || failed /bin/echo "image=/boot/vmlinuz-2.4.17-1medusa" >> /etc/lilo.conf || failed /bin/echo " label=ramclone" >> /etc/lilo.conf || failed /bin/echo " initrd=/boot/initrd-clone.img" >> /etc/lilo.conf || failed /bin/echo " append=\"root=/dev/ram0 init=/linuxrc rw\"" >> /etc/lilo.conf || failed lilo >> /tmp/postinstall.log 2>&1 || failed # install wmaker as deault window manager # ( lynx -source ${baseurl}/nonstandard/wmaker.medusa.tar | tar -C /root/ -xvf - ) \ >> /tmp/postinstall.log 2>&1 || failed cat << EOF >> /root/.xinitrc # Window Maker default X session startup script PATH="\$PATH:$BINDIR" exec wmaker EOF chmod +rx /root/.xinitrc # add NVRAM device # mknod /dev/nvram c 10 144 # deal with the HOSTNAME issue cp /etc/sysconfig/network /tmp/network.old \ >> /tmp/postinstall.log 2>&1 || failed ( cat /tmp/network.old | sed "/HOSTNAME/d" > /etc/sysconfig/network ) \ >> /tmp/postinstall.log 2>&1 || failed echo "HOSTNAME=slave.medusa.phys.uwm.edu" >> /etc/sysconfig/network # set NIS domainname # echo "NISDOMAIN=medusa-nis" >> /etc/sysconfig/network # make sure /dev/mouse is linked to /dev/psaux in case # the mouse is not plugged in ln -sf /dev/psaux /dev/mouse # update the whatis database # echo "update the whatis database"  tee -a /tmp/postinstall.log rm -f /var/cache/man/tmp count=1 while [ $count -lt 10 ] ; do echo building manual index section $count /usr/sbin/makewhatis -v -s $count /usr/man cat /var/cache/man/whatis >> /var/cache/man/tmp /usr/sbin/makewhatis -v -s $count /usr/share/man cat /var/cache/man/whatis >> /var/cache/man/tmp /usr/sbin/makewhatis -v -s $count /usr/local/man cat /var/cache/man/whatis >> /var/cache/man/tmp let count+=1 done /usr/sbin/makewhatis -v -s n /usr/man cat /var/cache/man/whatis >> /var/cache/man/tmp /usr/sbin/makewhatis -v -s n /usr/share/man cat /var/cache/man/whatis >> /var/cache/man/tmp /usr/sbin/makewhatis -v -s n /usr/local/man cat /var/cache/man/whatis >> /var/cache/man/tmp /bin/sort < /var/cache/man/tmp | /usr/bin/uniq > /var/cache/man/whatis rm -f /var/cache/man/tmp # # necessary details for condor # # link in /etc/condor to global condor_config file ln -s /home/condor/medusa-installation/etc/condor_config /etc/condor/condor_config # # lock file directory in /var/lock mkdir /var/lock/condor chown 811.root /var/lock/condor chmod 755 /var/lock/condor # # startup script in /etc/rc.d/init.d cp /etc/condor/condor.boot /etc/rc.d/init.d/condor chown root.root /etc/rc.d/init.d/condor chmod 755 /etc/rc.d/init.d/condor ln -s /etc/rc.d/init.d/condor /etc/rc.d/rc3.d/S99condor ln -s /etc/rc.d/init.d/condor /etc/rc.d/rc6.d/K02condor ln -s /etc/rc.d/init.d/condor /etc/rc.d/rc0.d/K02condor # # # add static-routes file so that condor on slaves can see outside cp /etc/condor/static-routes /etc/sysconfig/static-routes # make sure permission correct on hostkey.pem chmod 400 /etc/grid-security/hostkey.pem # create root users rhosts file # echo "downloading root users rhosts file"  tee -a /tmp/postinstall.log lynx -source ${baseurl}/nonstandard/root_rhosts \ > /root/.rhosts || failed ############################################################################ # append the video cards parameters to hwconf # ####### begin here document ###################################### cat <> /tmp/postinstall.log - class: VIDEO bus: PCI detached: 0 driver: Card:Intel 815 desc: "Intel Corporation|82815 CGC [Chipset Graphics Controller]" vendorId: 8086 deviceId: 1132 subVendorId: 8086 subDeviceId: 4532 pciType: 1 EOF ####### end here document ######################################## # nameserver must be the last thing # rpm -Uvh ${baseurl}/rpms/slave-nameserver-6.2-1medusa.noarch.rpm \ >> /tmp/postinstall.log 2>&1 || failed # echo Creating the gzipped cpio file cd / >> /tmp/postinstall.log 2>&1 || failed cp -f /etc/fstab /tmp/deletethis >> /tmp/postinstall.log 2>&1 || failed cp -f /etc/fstab.correct /etc/fstab >> /tmp/postinstall.log 2>&1 || failed /usr/bin/find . -xdev | /bin/cpio -o --format=crc > /data/node.cpio 2>> /tmp/postinstall.log || failed cp -f /tmp/deletethis /etc/fstab >> /tmp/postinstall.log 2>&1 || failed /bin/gzip /data/node.cpio >> /tmp/postinstall.log 2>&1 || failed echo Done creating gzipped cpio file # date >> /tmp/postinstall.log ####### begin here document ###################################### cat <