# $Id$ # # Example KickStart configuration for RHEL Desktop systems. # # For more documentation, see: http://sial.org/howto/kickstart/ install nfs --server 192.0.2.1 --dir /install/rhel/3AS/en/os/i386 # RedHat likes to set UTF8, which under RH 9 causes various problems... lang en_US langsupport --default en_US en_US # run redhat-config-* as needed once in production keyboard us mouse genericwheelps/2 --device psaux --emulthree # TODO pre script for eth1 and other complications? network --device eth0 --bootproto dhcp #rootpw --iscrypted $1$mumble authconfig --enableshadow --enablemd5 firewall --enabled --ssh timezone --utc US/Pacific # partition done via script, below %include /tmp/partition-layout # packages done via script, below %include /tmp/base-packages %pre # load specific boot args into variables < /proc/cmdline sed 's/ /\n/g' | grep ^cf_ | grep = > /tmp/cf-args . /tmp/cf-args export RH_MOUNT=/tmp-build mkdir -p $RH_MOUNT mount -t nfs 192.0.2.1:/install $RH_MOUNT touch /tmp/base-packages if [ -f "$RH_MOUNT/kickstart/3AS/packages/$cf_pkg" ]; then cp "$RH_MOUNT/kickstart/3AS/packages/$cf_pkg" /tmp/base-packages else cp "$RH_MOUNT/kickstart/3AS/packages/desktop" /tmp/base-packages fi # custom partition layout by eth0 MAC. Favor reading from static file # over custom script over "reasonable" defaults done below. MAC_ADDR=`ifconfig eth0 | \ grep HWaddr | sed -e 's/^.*HWaddr \([A-Fa-f0-9:]*\).*$/\1/; s/:/-/g'`; # include fails without file; empty file will bring up partition utility # during installation for custom layout touch /tmp/partition-layout PART_SRC=$RH_MOUNT/kickstart/partition # by boot argument before MAC if [ -f "$PART_SRC/$cf_part_file" ]; then echo "partition data: file=$cf_part_file" cp "$PART_SRC/$cf_part_file" /tmp/partition-layout elif [ -f "$PART_SRC/$cf_part_script" ]; then echo "partition script: file=$cf_part_script" cp "$PART_SRC/$cf_part_script" /tmp/partition-layout.sh elif [ -f "$PART_SRC/$MAC_ADDR" ]; then echo "partition data: file=$MAC_ADDR" cp "$PART_SRC/$MAC_ADDR" /tmp/partition-layout elif [ -f "$PART_SRC/$MAC_ADDR.sh" ]; then echo "partition script: file=$MAC_ADDR.sh" cp "$PART_SRC/$MAC_ADDR.sh" /tmp/partition-layout.sh fi if [ -f /tmp/partition-layout.sh ]; then . /tmp/partition-layout.sh fi %post # load specific boot args into variables < /proc/cmdline sed 's/ /\n/g' | grep ^cf_ | grep = > /tmp/cf-args . /tmp/cf-args echo -e \\a chvt 3 ( export RH_MOUNT=/tmp-build mkdir -p $RH_MOUNT /etc/init.d/portmap start mount -t nfs 192.0.2.1:/install $RH_MOUNT /usr/sbin/ntpdate -su north-america.pool.ntp.org if [ -f /etc/fedora-release ]; then RH_RELEASE=fedora RH_VERSION=`rpm -q --queryformat '%{VERSION}' fedora-release` else RH_RELEASE=rhel RH_VERSION=`rpm -q --queryformat '%{VERSION}' redhat-release` fi export RH_RELEASE RH_VERSION # bootstrap PGP keys for software install for keyfile in $RH_MOUNT/rpm-pgp-keys/*; do [ ! -f "$keyfile" ] && continue rpm --import "$keyfile" done # bootstrap yum rpm -i $RH_MOUNT/yum/rpm/$RH_RELEASE.rpm cp $RH_MOUNT/yum/conf/yum.conf.$RH_RELEASE /etc/yum.conf chmod +r /etc/yum.conf # https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=112358 rm -f /var/lib/rpm/__db* # initial update run yum -t -y update rm -f /var/lib/rpm/__db* yum -C -t -y install cfengine # for use by cfengine mkdir -p /var/cfengine/etc/classes # so can boot with cf_group=desktop,group_nickerson, instead of # relying on static hostname that is not present on build network if [ ! -z "$cf_group" ]; then if echo $cf_group | egrep '^[A-Za-z0-9_,-]*$' >/dev/null; then ( IFS="," for group in $cf_group; do touch "/var/cfengine/etc/classes/$group" done ) fi fi touch "/var/cfengine/etc/classes/desktop" mkdir -p /etc/system-info date --iso-8601=minutes > /etc/system-info/install-date ( # first line unique ID, ID specific info on subsequent lines echo kickstart echo '$Id$' ) > /etc/system-info/install-method cat <<'EOF' > /etc/rc.d/rc.local #!/bin/sh /usr/sbin/cfagent --no-splay --define sys_startup & touch /var/lock/subsys/local EOF chmod 755 /etc/rc.d/rc.local umount $RH_MOUNT rmdir $RH_MOUNT /etc/init.d/portmap stop ) 2>&1 | tee /root/ks-postinstall.log echo -e \\a