<pre-scripts config:type="list"> <script> <filename>foo.sh</filename> <interpreter>shell</interpreter> <source> <![CDATA[ #!/bin/sh AWK=`find / -name awk | tail -1` #old awk /mounts/instsys/bin/awk -f cat >/tmp/bar.awk <<EOF #!$AWK -f BEGIN { xcatdport = "#TABLE:site:key=xcatiport:value#" xcatdhost = "#XCATVAR:XCATMASTER#" ns = "/inet/tcp/0/" xcatdhost "/" xcatiport print "xCAT_xcatd" |& ns while(1) { ns |& getline if(\$0 == "ready") print "installmonitor" |& ns if(\$0 == "done") break } close(ns) exit 0 } EOF if [ ! -c /dev/vcs ]; then mknod /dev/vcs c 7 0 fi cat >/tmp/foo.awk <<EOF #!$AWK -f BEGIN { ns = "/inet/tcp/3001/0/0" while(1) { ns |& getline # if(\$1 == "sh") { #TODO: ENABLE IF DEBUG # sub(/^sh +/,"",\$0) # output = \$0 # while((output | getline) > 0) # print \$0 |& ns # print "EOO" |& ns # close(output) # } if(\$1 == "screendump") { output = "chvt " \$2 ";cat /dev/vcs" while((output | getline) > 0) print \$0 |& ns close(output) } if(\$1 == "stat") { if( system( "[ -f /mnt/var/log/YaST2/y2logRPM ]" ) == 0 ) { while((getline < "/mnt/var/log/YaST2/y2logRPM") > 0) { line = \$0 } close("/mnt/var/log/YaST2/y2logRPM") if(line ~ /\.rpm /) { sub(/\.[^\.]+\.rpm .*$/,"",line) sub(/^.* /,"",line) } else { line = "prep" } print ("installing " line) |& ns } else { # The format of /var/log/zypp/history is documented at # http://en.opensuse.org/Libzypp/Package_History lastrpm = "prep" oldFS = FS FS="|" while((getline < "/mnt/var/log/zypp/history") > 0) { if (\$0 !~ /#/ && \$2 == "install") { lastrpm = (\$3 "-" \$4) } } close("/mnt/var/log/zypp/history") FS = oldFS print ("installing " lastrpm) |& ns } } close(ns) } } EOF chmod 755 /tmp/foo.awk chmod 755 /tmp/bar.awk /tmp/bar.awk & /tmp/foo.awk >/tmp/foo.log 2>&1 & shopt -s nullglob for disk in /dev/vd*[^0-9];do if [ -z "$firstdirectdisk" ]; then firstdirectdisk=$disk; fi #remember first disk as a guess of medium resort eddname=$(/lib/udev/edd_id $disk 2> /dev/null) if [ ! -z "$eddname" -a "$eddname" = "int13_dev80" ]; then instdisk=$disk break fi done if [ -z "$instdisk" ]; then for disk in /dev/sd*[^0-9]; do eddname=$(/lib/udev/edd_id $disk 2> /dev/null) if [ ! -z "$eddname" -a "$eddname" = "int13_dev80" ]; then instdisk=$disk break fi currdriver=`udevadm info --attribute-walk --name $disk |grep DRIVERS|grep -v '""'|grep -v '"sd"'|head -n 1|sed -e 's/[^"]*"//' -e 's/"//'` case "$currdriver" in "ata_piix4"|"PMC MaxRAID"|"ahci"|"megaraid_sas") #certainly direct if [ -z "$firstdirectdisk" ]; then firstdirectdisk=$disk; fi #remember first disk as a guess of medium resort ;; "mptsas"|"mpt2sas") #*PROBABLY* not SAN, but SAS SAN is possible if [ -z "$probablyfirstdirectdisk" ]; then probablyfirstdirectdisk=$disk; fi #remember first disk as a guess of medium resort ;; *) if [ -z "$firstdisk" ]; then firstdisk=$disk; fi #remember first disk as a guess of medium resort ;; esac done fi if [ -z "$instdisk" ]; then if [ ! -z "$firstdirectdisk" ]; then instdisk=$firstdirectdisk elif [ ! -z "$probablyfirstdirectdisk" ]; then instdisk=$probablyfirstdirectdisk elif [ ! -z "$firstdisk" ]; then instdisk=$firstdisk fi fi if [ -d /sys/firmware/efi ]; then sed -e 's!<device>XCATPARTITIONHOOK</device>!<device>'$instdisk'</device><partitions config:type="list"><partition><filesystem config:type="symbol">vfat</filesystem><mount>/boot/efi</mount><size>128mb</size></partition><partition><mount>swap</mount><size>auto</size></partition><partition><mount>/</mount><size>auto</size></partition></partitions>!' /tmp/profile/autoinst.xml > /tmp/profile/modified.xml else sed -e 's!<device>XCATPARTITIONHOOK</device>!<device>'$instdisk'</device>!' /tmp/profile/autoinst.xml > /tmp/profile/modified.xml fi ]]> </source> </script> </pre-scripts>