#!/bin/ksh wd=$(pwd) if [[ ! -r ./zapb ]] ; then echo zapb is missing, please compile zapb.c with: '"cc -o zapb zapb.c"' exit 1 fi cd / grep ris.dec /etc/bootptab | tr ':' '\n' | grep bf= | sed 's/bf=//' | while read kr do echo Found Ris Kernel: $kr if [[ -L $kr ]] && [[ -r $kr ]] ; then dr=$(dirname $kr) cd $dr fi=$(ls -l $kr | awk '{print $11}') kn=$(basename $fi) case $kn in vmunix*[0-9]) sum $fi | read ck1 ck2 xx if [[ $ck1 = 18569 ]] && [[ $ck2 = 8716 ]]; then /bin/true else echo Ris Kernel: Original Checksum Not Match $fi exit 1 fi /bin/cp -p $fi $fi.BT echo Patching: netboot_bootp_open:467 echo ' "bis zero, 2, s5" ==> "bis zero, 30, s5"' $wd/zapb $fi.BT 171388 0x455ff10a47e3d40e echo Patching: bootp_info:3464 echo ' "bis zero, 4, s4" ==> "bis zero, 30, s4"' echo ' "bis zero, 5, s6" ==> "bis zero, 31, s6"' $wd/zapb $fi.BT 3139788 0x47e3f40f47e3d40d sum $fi.BT | read ck1 ck2 xx if [[ $ck1 = 53020 ]] && [[ $ck2 = 8716 ]]; then /bin/rm -f $kr ln -s $fi.BT $kr echo Ris Kernel: $kr '->' $fi.BT Successfully Patched exit 0 else echo Ris Kernel: $fi.BT Patch Failed Checksum Not Match exit 1 fi ;; vmunix*.BT) sum $fi | read ck1 ck2 xx if [[ $ck1 = 53020 ]] && [[ $ck2 = 8716 ]]; then echo Ris Kernel: Already Patched $fi else echo Ris Kernel: Patched Checksum Not Match $fi exit 1 fi ;; *) echo Ris Kernel: Illegal Name $fi exit 1 esac else echo Ris Kernel: Invalid $kr exit 1 fi done