⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 exec_upgrade

📁 操作系统SunOS 4.1.3版本的源码
💻
📖 第 1 页 / 共 2 页
字号:
##       @(#)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 + -