diff options
author | James Laska <jlaska@redhat.com> | 2009-03-03 08:26:37 -0500 |
---|---|---|
committer | James Laska <jlaska@redhat.com> | 2009-03-03 11:42:26 -0500 |
commit | b98be6d298072d1827990bb4fd1e57cbfa8aae46 (patch) | |
tree | 5bb6d9e4b68cc3a426329e3c63acf50200af7930 /snippets | |
parent | 0921e9b42306c00a547bb0932a0e5d9c0166fd17 (diff) | |
download | cobbler-b98be6d298072d1827990bb4fd1e57cbfa8aae46.tar.gz cobbler-b98be6d298072d1827990bb4fd1e57cbfa8aae46.tar.xz cobbler-b98be6d298072d1827990bb4fd1e57cbfa8aae46.zip |
Update s390 reboot snippet. Now produces a consistent reboot experience on RHEL4 and RHEL5 zVM guests installs.
Diffstat (limited to 'snippets')
-rw-r--r-- | snippets/post_s390_reboot | 71 |
1 files changed, 64 insertions, 7 deletions
diff --git a/snippets/post_s390_reboot b/snippets/post_s390_reboot index 2534cd76..aa38e40f 100644 --- a/snippets/post_s390_reboot +++ b/snippets/post_s390_reboot @@ -1,10 +1,67 @@ -## HACK to allow RHEL4 and previous s390 installs to reboot +## RHEL zVM installs do not properly reboot into the installed system. This +## issue has been resolved in RHEL-5 Update3. To get a consistent reboot +## behavior for s390* installs on all distros, this snippet can be used. The +## snippet will attempt to discover the IPL volume zipl is being installed +## to and will attempt a reipl. Be sure to set this snippet as the *last* +## snippet your kickstart template. + #if $arch.startswith("s390"): %post --nochroot -pid=\$(cat /var/run/init.pid) -[ -z "\$pid" ] && pid=\$(pidof init) -kill -12 \$pid -pid=\$(cat /var/run/loader.run) -[ -z "\$pid" ] && pid=\$(pidof loader) -kill \$pid + +# Does the kickstart file request a reboot? +grep -q "^reboot" /tmp/ks.cfg /ks.cfg 2>/dev/null +if [ \$? -ne 0 ]; then + exit 0 +fi + +# find out the location of /boot and use it to re-ipl +boot_dev="" +for mountpt in /mnt/sysimage/boot /mnt/sysimage; +do + set -- \$(grep " $mountpt " /proc/mounts) + if [ -b "\$1" ]; then + boot_dev=\$1 + break + fi +done + +# lookup dasd disk +if [[ \$boot_dev == *dasd* ]]; then + # remove the '/dev/' (aka basename) + boot_dev=\${boot_dev\#\#/[^/]*/} + # strip partition number from dasd device + boot_dev=\${boot_dev%%[0-9]} + type="ccw" + id=`basename \$(readlink /sys/block/\$boot_dev/device)` + + # HACK - In RHEL4 and RHEL3 ... we do it the hard way + grep -q "^[34]\$" /.buildstamp 2>/dev/null + if [ \$? -eq 0 ]; then + cat <<EOF> /mnt/sysimage/tmp/zeboot.sh +\#!/bin/bash +/sbin/modprobe -r vmcp +rm -f "/dev/vmcp" +sleep 2 +[ -b "/dev/vmcp" ] || /bin/mknod /dev/vmcp c 10 61 +/sbin/modprobe -a vmcp +sync +# Force a boot (e.g. IPL 0100) +/sbin/vmcp ipl \${id\#\#*.} +EOF + /bin/chmod +x /mnt/sysimage/tmp/zeboot.sh + /bin/chroot /mnt/sysimage /tmp/zeboot.sh + # In RHEL5 ... lets cleanly shutdown (Update 3 and newer) + else + echo \$type > /sys/firmware/reipl/reipl_type + echo \$id > /sys/firmware/reipl/\$type/device + + # Force a reboot + pid=\$(cat /var/run/init.pid) + [ -z "\$pid" ] && pid=\$(pidof init) + kill -12 \$pid + pid=\$(cat /var/run/loader.run) + [ -z "\$pid" ] && pid=\$(pidof loader) + kill \$pid + fi +fi #end if |