📄 upgrade
字号:
#umask 022HOST=`hostname`CLIENTS="". ./check_test. ./house_keeper. ./script_gen. ./exec_upgrade. ./inoutBIN=/usr/binETC=/usr/etcINC=$USR_TMP/incVOL0=$USR_TMP/vol0VOL_NAMES=$USR_TMP/vol_namesINST_PCK_LST=$USR_TMP/inst_pck_lstNOT_INST_PCK_LST=$USR_TMP/not_inst_pck_lstWORK_PCK_LST=$USR_TMP/work_pck_lstOPENWIN_PCK_LST=$USR_TMP/openwin_pck_lstUPGRDT_PCK_LST=$USR_TMP/upgrdt_pck_lstFOR_UPGR_PCK_LST0=$USR_TMP/for_upgr_pck_lst0FOR_UPGR_PCK_LST_ALL=$USR_TMP/for_upgr_pck_lst_allFOR_UPGR_PCK_LST=$USR_TMP/for_upgr_pck_lstCLIENT_UPGRADE_CANDIDATES=$USR_TMP/client_upgrade_candidatessun4_RELEASE_LST=$USR_TMP/sun4_release_listsun4c_RELEASE_LST=$USR_TMP/sun4c_release_listsun4m_RELEASE_LST=$USR_TMP/sun4m_release_listSUN4_REMOVE_LST=$USR_TMP/sun4_remove_listSUN4C_REMOVE_LST=$USR_TMP/sun4c_remove_listSUN4M_REMOVE_LST=$USR_TMP/sun4m_remove_listMEDIA_FILE=$USR_TMP/media_fileNAME_LIST=$USR_TMP/name_listSERVER_PCK_LIST=$USR_TMP/server_pck_listSERVER_ARCH_LIST=$USR_TMP/server_karch_listRELEASE_LST=$USR_TMP/client_release_listNIS_DIR=/var/ypINETD_CONF=/etc/inetd.confARCH=archPATH=$COM_PLACE:$PATHCAT=catCD=cdCHMOD=chmodCHOWN=chown COMM=comm CP=cpCUT=cutECHO=echoED=edEGREP=egrepEXPR=exprGREP=grepKILL=killLN=lnLS=lsLDCONFIG=ldconfigMORE=moreMKDIR=mkdirMOUNT=mountMV=mvNAWK=nawkPWD=pwdRM=rmSED=sedSORT=sortSUM=sumSYSLOGD=syslogdSYNC=syncTAR=tarTEE=teeTR=trXDRTOC=xdrtocexport CUT PATH#AARCH=`$ARCH`KARCH=`$ARCH -k`STAND=/usr/kvm/standINSDIR=/etc/install# release currently installedif [ -r $INSDIR/release ]; then FROM_RELEASE=`sed "s/^.*sunos\.//" $INSDIR/release` export FROM_RELEASEelse log_echo "$INSDIR/release not found" log_echo "$CMD cannot run on $HOST" cleanup 41fi#FROM_RELEASE=4.1.1#if [ -r $INSDIR/sys_info ]; then TYPE=`$NAWK -F= '{ if ($1 == "sys_type") print $2}' \ $INSDIR/sys_info`else log_echo "$INSDIR/sys_info not found" log_echo "$CMD cannot run on $HOST" cleanup 42fiINCLUDE=includeTMP_PATH=$USR_TMP/upgradeINCLUDE_PATH=$TMP_PATH/includeSCRIPT_PATH=$TMP_PATH/scriptREPLACE="&" # 4.1.1/4.1.2 file replaced by 4.1.x file.SAVE_OLD="+" # 4.1.x file replaces 4.1.1/4.1.2 file; 4.1.1/4.1.2 file saved with .4.1.1/.4.1.2 tag.MAKE_NEW="-" # 4.1.1/4.1.2 file is retained; 4.1.x file added with .4.1.x tag.COMMENT="#"BEFORE=beforeAFTER=afterSOS=sosUNTAR=untarDELETE=deleteCD_MOUNT=/usr/etc/install/tar # cdrom mount pathCD_EXPORT=$CD_MOUNT/export CD_EXEC=$CD_EXPORT/exec CD_KVM_DIR=$CD_EXEC/kvm#if [ -f $UPGRADE/release ]; then TO_RELEASE=`$CAT $UPGRADE/release` export TO_RELEASEelse log_echo "$UPGRADE/release not found" cleanup 43fiNEW_VERSION=sunos_`$SED "s/\./_/g" $UPGRADE/release | $TR '[A-Z]' '[a-z]'`#NEW_VERSION=sunos_4_1_3_PALPHA#TO_RELEASE=4.1.2OLD_SUFFIX=".`echo $FROM_RELEASE | $SED "s/\.//g" | $TR '[A-Z]' '[a-z]'`"NEW_SUFFIX=".`echo $TO_RELEASE | $SED "s/\.//g" | $TR '[A-Z]' '[a-z]'`"KARCH_VERSION=${KARCH}_$NEW_VERSIONCD_TOC=$CD_KVM_DIR/$KARCH_VERSION/xdrtoc # cdrom toc pathTOCFILE=$USR_TMP/toc#INCLD=$UPGRADE/incldOPENWINDOW_VERSION=3OPENWINDOWS=openwindows_ROOT_SPACE=2000USR_412usr_szdiff=4100USR_412kvm_szdiff=400USR_412sys_szdiff=300USR_412user_diag_szdiff=600USR_usr_szdiff=6000USR_kvm_szdiff=1000USR_sys_szdiff=650USR_user_diag_szdiff=5250USR_manual_szdiff=110USR_debugging_szdiff=70OW_user_sz=35600OW_prog_sz=24000OW_fonts_sz=10000OW_demo_sz=8100KARCH1=sun4KARCH2=sun4cKARCH3=sun4mtrap 'cleanup 61' 1trap 'cleanup 62' 2trap 'cleanup 63' 3trap 'cleanup 64' 10trap 'cleanup 65' 15if $DUMMY ; then echo "Performing the dummy upgrade (no upgrade will be performed)." COALESCE_LIST=$COALESCE_LIST.dummy $RM -f $COALESCE_LISTelse check_before $RM -f $COALESCE_LIST.dummyfi##################################################$DO_VOLATILE_TEST && volatile_testcr_nullfile $COALESCE_LIST$CHMOD a+w $COALESCE_LISTlog_echolog_echo "-------- Starting" $CMD `date` "--------"log_echoif $VERBOSE ; then TAR_OPTIONS=xvBpfelse TAR_OPTIONS=xBpffitest_releaseprint_headerif $INTERACTIVE ; then log_echo "" get_yesno answer "Continue " log_echo $answer if [ $answer != "yes" ]; then cleanup 0 fifi# Housekeeping for the /usr/tmp/upgradetmp_house# Read the volatile file list:$RM -rf $VOL0 $VOL_NAMES# $VOL0 list without comments# $VOL_NAMES list without comments and signs# (just filenames)$NAWK ' NF == 2 { if (substr($1, 1, 1) != "#"){ print $1 " " $2 >> "'$VOL0'" print $2 }} ' $VOLATILE_LIST | $SORT > $VOL_NAMES##################################################sos_file=$SCRIPT_PATH/$SOS$RM -f $sos_file#--------------------------------if [ $TYPE = server ]; then ./check_install -v if [ -s $CLIENT_UPGRADE_CANDIDATES ]; then if $INTERACTIVE ; then log_echo "" if $DUMMY ; then get_yesno answer "Continue" else log_echo "Before you answer \"yes\" to the following question" log_echo "- make sure that all dataless clients of the server $HOST have been upgraded;" log_echo "- make sure that all diskless clients of the server $HOST are halted." log_echo get_yesno answer "All listed above diskless clients will be upgraded. Continue" fi log_echo $answer if [ $answer != "yes" ]; then cleanup 44 fi log_echo "" fi fielif [ $TYPE = standalone ]; then :elif [ $TYPE = dataless ]; then :elif [ $TYPE = client ]; then log_echo "Clients may only be upgraded from the server" cleanup 45else log_echo "Unknown system type \"$TYPE\" found in $INSDIR/sys_info" cleanup 46fi#--------------------------------check_space $ROOT_SPACE /if [ $TYPE = dataless ]; then echo root > $FOR_UPGR_PCK_LSTelse make_upgrade_listfi#--------------------------------if $INTERACTIVE ; then log_echo "" if $DUMMY ; then get_yesno answer "Start dummy upgrade on $TYPE $HOST" else get_yesno answer "Start upgrade on $TYPE $HOST" fi log_echo $answer if [ $answer != "yes" ]; then cleanup 47 fi log_echo ""fi#--------------------------------if [ $TYPE = server ]; then INTERACTIVE0=$INTERACTIVE INTERACTIVE=false if [ -s $CLIENT_UPGRADE_CANDIDATES ]; then log_echo log_echo UPGRADING CLIENTS . ./upgrade_client elif [ -d /export/exec/proto.root.sunos.$FROM_RELEASE ]; then log_echo "Upgrade root files for clients" upgrade_package root /export/exec/proto.root.sunos.$FROM_RELEASE log_echo "Rename /export/exec/proto.root.sunos.$FROM_RELEASE to\ /export/exec/proto.root.sunos.$TO_RELEASE" if $DUMMY ; then : else $MV /export/exec/proto.root.sunos.$FROM_RELEASE \ /export/exec/proto.root.sunos.$TO_RELEASE fi fi INTERACTIVE=$INTERACTIVE0 log_echo log_echo UPGRADING SERVERfi#--------------------------------#$RM -f $COALESCE_LISTuser=falsefor name in `$CAT $FOR_UPGR_PCK_LST`; do case $name in usr) user=true;; sys) if is_sys_loaded $INSDIR/media_file.$AARCH.$KARCH.sunos.$FROM_RELEASE; then upgrade_package $name elif [ -f $SERVER_ARCH_LIST ] && $GREP -i $name $SERVER_ARCH_LIST >/dev/null; then get_package $name add_sys $INSDIR/media_file.$AARCH.$KARCH.sunos.$FROM_RELEASE fi;; *) if [ ! -f $SERVER_PCK_LIST ] || $GREP -i $name $SERVER_PCK_LIST > /dev/null; then upgrade_package $name else get_package $name fi;; esacdoneif [ $TYPE = server ]; then if [ -f $INETD_CONF ] ; then $SED "s@^#tftp dgram@tftp dgram@" $INETD_CONF > /tmp/inetd_$$ $MV /tmp/inetd_$$ $INETD_CONF fifiif [ $TYPE != dataless ] && $OW_space_check ; then log_echo "Removing everything under $OPENWINHOME" if $DUMMY ; then : else $RM -rf $OPENWINHOME/* fi for openwin_name in `$CAT $OPENWIN_PCK_LST`; do upgrade_openwin $openwin_name donefi# upgrade usr the lastif $user && [ $TYPE != dataless ]; then upgrade_package usrfi###log_echo "You may need to coalesce the following files / directories manually:"$SED 's@//@/@g' $COALESCE_LIST | $SED 's@//@/@g' > /tmp/clse_$$$SORT -u /tmp/clse_$$ $COALESCE_LIST$RM -f /tmp/clse_$$cat_it $COALESCE_LISTfix_releasefix_linksfor client in $CLIENTS; do log_echo log_tab; log_echo "Installing kernel and kadb on client $client" THE_KARCH=`what_karch $client` THE_RELEASE=`what_release $client` ROOT=`find_root $client` if [ $THE_KARCH = $KARCH1 ]; then KVMPATH=$KVMPATH1 elif [ $THE_KARCH = $KARCH2 ]; then KVMPATH=$KVMPATH2 elif [ $THE_KARCH = $KARCH3 ]; then KVMPATH=$KVMPATH3 fi KERNEL=$KVMPATH/stand/$NEW_KERNEL fix_kernel $KERNEL $ROOT fix_kadb $KVMPATH/stand/kadb $ROOT log_tab; log_echo "Upgrade sbin on client $client" log_tab; fix_sbin $ROOTdoneif [ $TYPE = server ]; then if [ -s $CLIENT_UPGRADE_CANDIDATES ]; then upgrade_bootblocks else log_echo "Create the /tftpboot/boot.$KARCH.sunos.$TO_RELEASE." if $DUMMY ; then : else $CP /export/exec/kvm/$KARCH/stand/boot.$KARCH \ /tftpboot/boot.$KARCH.sunos.$TO_RELEASE if [ $? = 0 ]; then $RM /tftpboot/boot.$KARCH.sunos.$FROM_RELEASE fi fi fifiif [ $TYPE = dataless ]; then install_vmunix_at_dataless install_kadb_at_dataless install_boot_block_at_dataless fix_sbin_at_dataless upgrade_fstabelse install_vmunix $STAND/$NEW_KERNEL install_kadb $STAND install_boot_block fix_sbinfilog_echo "Delete unused old files"$SORT -u $SCRIPT_PATH/*.$DELETE > $SCRIPT_PATH/$DELETE 2>/dev/nullif $DUMMY ; then cat_it $SCRIPT_PATH/$DELETEelse . $SCRIPT_PATH/$DELETEfi# Special treatment for /usr/lib/adbif $DUMMY ; then :elif [ ! -h /usr/lib/adb ]; then $RM -rf /usr/lib/adb $LN -s ../kvm/adb /usr/lib/adbfi######## For updating adb from 4.1.3x --> 4.1.3y#if $DUMMY ; then :else log_echo "Updating adb directory..." ($RM -rf /usr/kvm/adb; \ $TAR tf /usr/etc/install/tar/export/exec/kvm/`arch -k`_$NEW_VERSION/kvm | $GREP adb | $GREP -v stand > /tmp/adb; \ $CD /usr/kvm; \ $TAR xvf /usr/etc/install/tar/export/exec/kvm/`arch -k`_$NEW_VERSION/kvm -I /tmp/adb)fi ##### End #log_echo "Log is recorded in the file $LOG"log_echo "-------- Exiting" $CMD `date` "--------"if $DUMMY ; then log_echo "List of volatile files / directories :" log_echo "$COALESCE_LIST" cleanup 0fi#Final operations for the real upgrade#To prevent creation of core when user haltslog_echo "List of actually updated volatile files / directories :"log_echo "$COALESCE_LIST"log_echo ""if [ $TYPE = dataless ]; then log_echo "You may halt $HOST now, and reboot it after server upgrade."else log_echo "You may halt and reboot $HOST now."fi$SYNC; $SYNCcleanup 0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -