## 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 # 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 < /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