📄 exec_upgrade
字号:
## @(#)exec_upgrade 1.4 8/28/91 SMI###################################################install_vmunix(){## Copy and verify the kernel.# If vmunix.orig exists, do not save the existing version.# If copy operation fails, try one more time.#log_echo "Installing vmunix..."if [ ! -s $1 ]; then log_echo "Can't find vmunix in $1!"elif $DUMMY ; then returnelse [ -f /vmunix ] && \ [ ! -s /vmunix.orig ] && \ $BACKUP && \ $MV /vmunix /vmunix.orig sum1=`$SUM $1` for i in 1 2; do $CP -p $1 /vmunix $SYNC; $SYNC sum2=`$SUM /vmunix` [ "$sum1" = "$sum2" ] && break if [ "$i" = 2 ]; then log_echo "Unable to install new kernel for $HOST!" if [ ! -f /vmunix.orig ]; then log_echo "Cannot restore original kernel..." break fi log_echo "Restoring original kernel..." $MV /vmunix.orig /vmunix $SYNC; $SYNC fi donefi}##################################################install_kadb(){log_echo "Installing kadb ..." if [ ! -s $1/kadb ]; then log_echo "Can't find kadb in $1!" elif $DUMMY ; then return else $CP -p $1/kadb /kadb $SYNC; $SYNC fi}##################################################install_boot_block(){## Install boot block# log_echo "Installing bootblock ..." DISK=`$MOUNT | $GREP ' / ' |\ $NAWK '{print $1}' |\ $NAWK -F/ '{print $3}'` DISKTYPE=`$ECHO $DISK | colrm 3` if $DUMMY ; then return fi $CP -p /usr/kvm/stand/boot.$KARCH /boot if [ $? = 1 ]; then log_echo "Unable to install new bootblock for $HOST!" return fi $SYNC; $SYNC cd /usr/mdec ./installboot -v /boot boot"$DISKTYPE" /dev/r"$DISK" $SYNC; $SYNC}##################################################fix_sbin(){## Copy /sbin directory commands# dest=$1 log_echo "Copying /sbin commands..." here=`$PWD` $GREP '^appl' /usr/etc/install/install.bin |\ $NAWK '{ print "'$CP' "$2 " '$dest'" $3}' > $TMP_PATH/com_$$ if $DUMMY ; then cat_it $TMP_PATH/com_$$ else here=`$PWD` $CD /usr . $TMP_PATH/com_$$ $CD $here fi $RM $TMP_PATH/com_$$}##################################################edit_etc_exports (){[ ! -f $1 ] && return $MV $1 $TMP $SED "/sun3/!s@sunos.4.1.*@sunos.$TO_RELEASE@" $TMP |\ while read line; do file_line=`$ECHO $line | $NAWK '{print $1}'` if [ -h $file_line ]; then dir=`$LS -l $file_line | $NAWK '{print $NF}'` $ECHO $dir else $ECHO $line fi done | \ $NAWK '{x[NR] = $0} END { dup = 0 for (i=1; i<=NR; i++) { for (j=1; j<i; j++) if (index(x[i], x[j])) dup = 1 if (dup == 0) print x[i] else dup = 0 } }' > $1 $RM $TMPlog_echo Fixing $1}##################################################edit_arch_str (){[ ! -f $1 ] && return $ED -s $1 << END > /dev/null/^arch_str/carch_str=$2.wqENDlog_echo Fixing $1}##################################################edit_arch_file (){[ ! -f $1 ] && return$SED "/^sun4.sun4/s/sunos\.4\.1\.[123].*/sunos.$TO_RELEASE/" $1>$TMP$SORT -u $TMP > $1$RM $TMPlog_echo Fixing $1}##################################################fix_sys_info (){[ ! -f $1 ] && return$SED "s/sunos\.4\.1\.[123].*/sunos.$TO_RELEASE/" $1>$TMP$MV $TMP $1log_echo Fixing $1}##################################################edit_media_file() {[ ! -f $1 ] && return[ ! -s $NAME_LIST ] && returnfor pck in `$CAT $NAME_LIST`; do if [ $pck != Sys ]; then $SED "/mf_name=$pck/,/mf_loaded/s/mf_loaded=no/mf_loaded=yes/" $1 \ > $TMP $MV $TMP $1 fidonelog_echo Fixing $1}#################################################add_sys() {[ ! -f $1 ] && return$SED "/mf_name=Sys/,/mf_loaded/s/mf_loaded=no/mf_loaded=yes/" $1 \ > $TMP$MV $TMP $1log_echo Adding Sys to $1} ##################################################fix_release(){ log_echo "Fixing release records ..." if $DUMMY ; then return fi if [ $TYPE != dataless -a -d /usr/sys/conf.common ]; then $ECHO $TO_RELEASE > /usr/sys/conf.common/RELEASE fi release_string="$AARCH.$KARCH.sunos.$TO_RELEASE" $ECHO $release_string > $INSDIR/release edit_arch_file $INSDIR/arch_info edit_arch_file $INSDIR/arch_list fix_sys_info $INSDIR/sys_info# rename and edit soft_info.<aarch>.<karch>.sunos.<FROM_RELEASE> file for karch in $KARCH1 $KARCH2 $KARCH3; do# for soft_info SRENAMED=false s_rel=""# for media_files MRENAMED=false m_rel="" [ $karch = $KARCH1 ] && filename=$sun4_RELEASE_LST [ $karch = $KARCH2 ] && filename=$sun4c_RELEASE_LST [ $karch = $KARCH3 ] && filename=$sun4m_RELEASE_LST new_release_str=$AARCH.$karch.sunos.$TO_RELEASE if [ -f $INSDIR/soft_info.$AARCH.$karch.sunos.$FROM_RELEASE ]; then $MV $INSDIR/soft_info.$AARCH.$karch.sunos.$FROM_RELEASE \ $INSDIR/soft_info.$new_release_str s_rel=$FROM_RELEASE SRENAMED=true fi if [ -f $INSDIR/media_file.$AARCH.$karch.sunos.$FROM_RELEASE ]; then $MV $INSDIR/media_file.$AARCH.$karch.sunos.$FROM_RELEASE \ $INSDIR/media_file.$new_release_str m_rel=$FROM_RELEASE MRENAMED=true fi if [ -s $filename ]; then for rel in `$CAT $filename`; do if [ $rel != $TO_RELEASE ]; then old_release_str=$AARCH.$karch.sunos.$rel if [ $SRENAMED = false ] && [ -f $INSDIR/soft_info.$old_release_str ]; then $MV $INSDIR/soft_info.$old_release_str \ $INSDIR/soft_info.$new_release_str s_rel=$rel SRENAMED=true elif $SRENAMED && [ -f $INSDIR/soft_info.$old_release_str ] \ && [ $rel != $s_rel ]; then $RM $INSDIR/soft_info.$old_release_str fi# rename and edit media_files if [ $MRENAMED = false ] && [ -f $INSDIR/media_file.$old_release_str ]; then $MV $INSDIR/media_file.$old_release_str \ $INSDIR/media_file.$new_release_str MRENAMED=true m_rel=$rel elif $MRENAMED && [ -f $INSDIR/media_file.$old_release_str ] \ && [ $rel != $m_rel ]; then $RM $INSDIR/media_file.$old_release_str fi fi donefi fix_sys_info $INSDIR/soft_info.$new_release_str edit_arch_str $INSDIR/media_file.$new_release_str \ $new_release_str edit_media_file $INSDIR/media_file.$new_release_str done# rename and edit appl_media_file RENAMED=false r_rel="" if [ -f $INSDIR/appl_media_file.$AARCH.sunos.$FROM_RELEASE ]; then $MV $INSDIR/appl_media_file.$AARCH.sunos.$FROM_RELEASE \ $INSDIR/appl_media_file.$AARCH.sunos.$TO_RELEASE r_rel=$FROM_RELEASE RENAMED=true fi if [ -s $RELEASE_LST ]; then for rel in `$CAT $RELEASE_LST`; do if [ $rel != $TO_RELEASE ]; then if [ $RENAMED = false ] && [ -f $INSDIR/appl_media_file.$AARCH.sunos.$rel ]; then $MV $INSDIR/appl_media_file.$AARCH.sunos.$rel \ $INSDIR/appl_media_file.$AARCH.sunos.$TO_RELEASE RENAMED=true r_rel=$rel elif [ $RENAMED ] && [ -f $INSDIR/appl_media_file.$AARCH.sunos.$rel ] \&& [ $rel != $r_rel ]; then $RM $INSDIR/appl_media_file.$AARCH.sunos.$rel fi fi done fi # rename and edit media_files edit_arch_str $INSDIR/appl_media_file.$AARCH.sunos.$TO_RELEASE \ $release_string }##################################################fix_links(){ log_echo "Fixing links in /export/exec, /export/exec/kvm, /export/share ..." if $DUMMY ; then return fi here=`$PWD` $CD /export/exec if [ -d sunos.$TO_RELEASE ]; then $RM -rf sunos.$TO_RELEASE fi if [ -h $AARCH.sunos.$FROM_RELEASE ]; then $MV $AARCH.sunos.$FROM_RELEASE \ $AARCH.sunos.$TO_RELEASE else $LN -s /usr $AARCH.sunos.$TO_RELEASE fi if [ -s $RELEASE_LST ]; then for str in `$CAT $RELEASE_LST`; do if [ -d $AARCH.sunos.$str ] && [ $str != $TO_RELEASE ]; then $RM -rf $AARCH.sunos.$str 2>/dev/null fi done fi if [ ! -h $AARCH ]; then $LN -s /usr $AARCH fi $CD /export/share if [ -d sunos.$TO_RELEASE ]; then $RM -rf sunos.$TO_RELEASE fi if [ -h sunos.$FROM_RELEASE ]; then $MV sunos.$FROM_RELEASE \ sunos.$TO_RELEASE else $LN -s /usr/share sunos.$TO_RELEASE fi if [ -s $RELEASE_LST ]; then for str in `$CAT $RELEASE_LST`; do if [ -d sunos.$str ] && [ $str != $TO_RELEASE ]; then $RM -rf sunos.$str 2>/dev/null fi done fi $CD $here relink_kvm $KARCH1 relink_kvm $KARCH2 relink_kvm $KARCH3 edit_etc_exports /etc/exports}##################################################relink_kvm(){ karch=$1 here=`$PWD` $CD /export/exec/kvm r_str="" RENAMED=false if [ -d $karch.sunos.$TO_RELEASE ]; then $RM -rf $karch.sunos.$TO_RELEASE fi if [ -h $karch.sunos.$FROM_RELEASE ]; then kvm_dir=`$LS -l $karch.sunos.$FROM_RELEASE | \ $NAWK '{print $NF}'` if [ $kvm_dir = /usr/kvm ]; then $MV $karch.sunos.$FROM_RELEASE \ $karch.sunos.$TO_RELEASE RENAMED=true else $RM $karch.sunos.$FROM_RELEASE new_kvm_dir=`$ECHO $kvm_dir | \ $SED "s@sunos.$FROM_RELEASE@sunos.$TO_RELEASE@"` [ -d $kvm_dir -o -h $kvm_dir ] && \ $MV $kvm_dir $new_kvm_dir $LN -s $new_kvm_dir $karch.sunos.$TO_RELEASE RENAMED=true fi r_str=$FROM_RELEASE elif [ -d $karch.sunos.$FROM_RELEASE ]; then $MV $karch.sunos.$FROM_RELEASE \ $karch.sunos.$TO_RELEASE RENAMED=true r_str=$FROM_RELEASE fi if [ -s $RELEASE_LST ]; then for str in `$CAT $RELEASE_LST`; do if [ $str != $TO_RELEASE ]; then if $RENAMED && [ -d $karch.sunos.$str ] && [ $str != $r_str ]; then $RM -rf $karch.sunos.$str 2>/dev/null elif [ $RENAMED = false ] && [ -d $karch.sunos.$str ]; then $MV $karch.sunos.$str \ $karch.sunos.$TO_RELEASE RENAMED=true r_str=$str fi fi done fi## Make a link on the /export/exec/kvm/<karch> if [ -h $karch ]; then $RM -rf $karch fi if [ -d $karch.sunos.$TO_RELEASE ]; then $LN -s $karch.sunos.$TO_RELEASE $karch fi $CD $here}##################################################upgrade_package(){name=$1export_point=$2karch=$3release=$4 if [ x_$karch = "x_" ]; then
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -