डी.1. /etc/rc.d/init.d/rc
RSI rc स्क्रिप्ट पहली स्क्रिप्ट है जिसे init द्वारा बुलाया जाता है और बूट प्रक्रिया आरंभ करता है।
#! / Bin / bash
############################################# #####################
#आरसी शुरू करें
#
# विवरण: मुख्य रन लेवल नियंत्रण स्क्रिप्ट
#
# लेखक: जेरार्ड बीकमैन्स - [ईमेल संरक्षित]
# : डीजे लुकास - [ईमेल संरक्षित]
# अद्यतन : ब्रूस डब्स - [ईमेल संरक्षित]
#
# संस्करण: एलएफएस 7.0
#
############################################# #####################
. /lib/lsb/init-functions print_error_msg()
{
लॉग_विफलता_संदेश
# $i कॉल करने पर सेट हो जाता है
MSG='विफलता:\n\nआपको यह त्रुटि संदेश नहीं पढ़ना चाहिए।\n\n' MSG='${MSG}इसका मतलब है कि एक अप्रत्याशित त्रुटि हुई है\n' MSG='${MSG}${ में"
MSG='${MSG}जो ${error_value} के रिटर्न मान के साथ बाहर निकल गया।\n'
MSG='${MSG}यदि आप ${DISTRO_MINI} पुस्तक द्वारा प्रदान की गई फ़ाइलों में से किसी एक में इस त्रुटि को ट्रैक करने में सक्षम हैं,\n' MSG='${MSG},\n' MSG=' ${MSG}कृपया हमें ${DISTRO_CONTACT} पर सूचित करने की कृपा करें।\n" log_failure_msg "${MSG}"
log_info_msg "जारी रखने के लिए Enter दबाएँ..." wait_for_user
}
check_script_status()
{
# $i को कॉल करने पर सेट किया जाता है यदि [ ! -f ${i} ]; तब
log_warning_msg "${i} वैध सिम्लिंक नहीं है।" SCRIPT_STAT='1'
fi
अगर [ ! -x ${i} ]; तब
log_warning_msg "${i} निष्पादन योग्य नहीं है, छोड़ा जा रहा है।" SCRIPT_STAT='1'
fi
}
Daud()
{
यदि [ -z $इंटरैक्टिव ]; तब
${1} ${2}
वापसी $?
fi
जबकि सच है; करना
पढ़ें -पी "${1} ${2} चलाएँ (हाँ/नहीं/जारी रखें)? " -एन 1 रनिट इको
c | में केस ${runit} सी)
इंटरैक्टिव = ""
${i} ${2}
ret=${?} टूटना;
;;
एन | एन)
वापसी 0
;;
य | वाई)
${i} ${2}
ret=${?} टूटना
;;
एसैक किया गया
वापसी $ret
}
# कोई भी स्थानीय सेटिंग/ओवरराइड पढ़ें
[ -r /etc/sysconfig/rc.site ] && स्रोत /etc/sysconfig/rc.site
डिस्ट्रो=${डिस्ट्रो:-"लिनक्स फ्रॉम स्क्रैच"}
DISTRO_CONTACT=${DISTRO_CONTACT:-"[ईमेल संरक्षित] (पंजीकरण आवश्यक)"} DISTRO_MINI=${DISTRO_MINI:-"LFS"}
IPROMPT=${IPROMPT:-"नहीं"}
# ये 3 सिग्नल हमारी स्क्रिप्ट को जाल से बाहर निकलने का कारण नहीं बनेंगे "" INT QUIT TSTP
[ "${1}" != "" ] && रनलेवल=${1}
यदि [ "${रनलेवल}" == "" ]; फिर प्रतिध्वनि करें "उपयोग: ${0} ">&2 निकास 1
fi
पिछला=${पूर्वस्तर}
[ "${पिछला}" == "" ] && पिछला=एन
अगर [ ! -d /etc/rc.d/rc${runlevel}.d ]; तब
log_info_msg "/etc/rc.d/rc${runlevel}.d मौजूद नहीं है।\n" निकास 1
fi
यदि [ "$रनलेवल" == "6" -o "$रनलेवल" == "0" ]; फिर IPROMPT='नहीं'; फाई
# नोट: ${LOGLEVEL:-7} में, यह ':' 'डैश' '7' है, माइनस 7 नहीं यदि [ "$runlevel" == "S" ]; तब
[ -r /etc/sysconfig/console ] && source /etc/sysconfig/console dmesg -n "${LOGLEVEL:-7}"
fi
यदि [ "${IPROMPT}" == "yes" -a "${runlevel}" == "S" ]; तब
# डिस्ट्रो स्वागत स्ट्रिंग की कुल लंबाई, बिना एस्केप कोड के wlen=${wlen:-$(echo "${DISTRO} में आपका स्वागत है" | wc -c )}welcome_message=${welcome_message:-"${INFO में आपका स्वागत है }${डिस्ट्रो}${सामान्य}"}
# इंटरैक्टिव स्ट्रिंग की कुल लंबाई, एस्केप कोड के बिना ilen=${ilen:-$(echo "इंटरैक्टिव स्टार्टअप में प्रवेश करने के लिए 'I' दबाएं" | wc -c )}
i_message=${i_message:-"इंटरैक्टिव स्टार्टअप में प्रवेश करने के लिए '${FAILURE}I${NORMAL}' दबाएँ"}
# dcol और icol संदेश को केन्द्रित करने के लिए संदेश से पहले रिक्त स्थान हैं
# स्क्रीन पर। itime उपयोगकर्ता द्वारा एक कुंजी दबाने के लिए प्रतीक्षा समय की मात्रा है wcol=$(( ( ${COLUMNS} - ${wlen} ) / 2 ))
icol=$(( ( ${COLUMNS} - ${ilen} ) / 2 )) itime=${itime:-"3"}
इको-ई "\n\n"
इको -ई "\\033[${wcol}G${welcome_message}" इको -e "\\033[${icol}G${i_message}${NORMAL}" इको ""
पढ़ें -t "${itime}" -n 1 इंटरैक्टिव 2>&1 > /dev/null
fi
# लोअर केस बनाएं
[ "${इंटरैक्टिव}" == "मैं" ] && इंटरैक्टिव = "i" [ "${इंटरैक्टिव}" != "i" ] && इंटरएक्टिव = ""
# यदि राज्य फ़ाइल रनलेवल एस से मौजूद है तो उसे पढ़ें
[ -r /var/run/interactive ] && स्रोत /var/run/interactive
# पिछले रनलेवल द्वारा शुरू की गई सभी सेवाओं को रोकने का प्रयास,
# और इस रनलेवल में मारा गया
यदि [ "${पिछला}" != "एन" ]; तब
मेरे लिए $(ls -v /etc/rc.d/rc${runlevel}.d/K* 2> /dev/null) में
check_script_status
यदि [ "${SCRIPT_STAT}" == "1" ]; फिर SCRIPT_STAT='0'
जारी रखने के
fi
suffix=${i#/etc/rc.d/rc$runlevel.d/K[0-9][0-9]} prev_start=/etc/rc.d/rc$previous.d/S[0-9][0-9]$suffix sysinit_start=/etc/rc.d/rcS.d/S[0-9][0-9]$suffix
यदि [ "${रनलेवल}" != "0" -a "${रनलेवल}" != "6" ]; तब
अगर [ ! -f ${prev_start} -a ! -f ${sysinit_start} ]; तो MSG='चेतावनी:\n\n${i} नहीं हो सकता'
MSG='${MSG}निष्पादित किया गया क्योंकि यह 'MSG='${MSG}पिछले' MSG='${MSG}रनलेवल (${पिछला})' में शुरू नहीं हुआ था।' log_warning_msg "$MSG"
जारी रखने के
fi
fi
${i} चलाएँ, error_value=${?} रोकें
यदि [ "${error_value}" != "0" ]; फिर print_error_msg; फाई हो गया
fi
यदि [ "${पिछला}" == "एन" ]; फिर IN_BOOT=1 निर्यात करें; फाई
यदि [ "$रनलेवल" == "6" -ए -एन "${फ़ास्टबूट}" ]; फिर /fastboot स्पर्श करें
fi
# इस रनलेवल में सभी फ़ंक्शन प्रारंभ करें
मेरे लिए $( ls -v /etc/rc.d/rc${runlevel}.d/S* 2> /dev/null)
यदि [ "${पिछला}" != "एन" ]; फिर प्रत्यय=${i#/etc/rc.d/rc$runlevel.d/S[0-9][0-9]} stop=/etc/rc.d/rc$runlevel.d/K[0 -9][0-9]$suffix prev_start=/etc/rc.d/rc$previous.d/S[0-9][0-9]$suffix
[ -f ${prev_start} -a ! -f ${stop} ] && जारी रखें
fi
check_script_status
यदि [ "${SCRIPT_STAT}" == "1" ]; फिर SCRIPT_STAT='0'
जारी रखने के
fi
केस ${रनलेवल} 0|6 में)
${i} स्टॉप चलाएँ
;;
*)
esac
${i} प्रारंभ चलाएँ
;;
त्रुटि_मान=${?}
यदि [ "${error_value}" != "0" ]; फिर print_error_msg; फाई हो गया
# रनलेवल एस से स्विच पर इंटरैक्टिव वैरिएबल स्टोर करें और यदि नहीं तो हटा दें यदि [ "${runlevel}" == "S" -a "${interactive}" == "i" ]; तब
इको "इंटरैक्टिव=\"i\"" > /var/run/interactive
अन्य
rm -f /var/run/interactive 2> /dev/null
fi
# बूट लॉग को प्रारंभिक बूट पर ही कॉपी करें
यदि [ "${पिछला}" == "एन" -ए "${रनलेवल}" != "एस" ]; फिर कैट $BOOTLOG >> /var/log/boot.log
# बूट के अंत को चिह्नित करें
प्रतिध्वनि "--------" >> /var/log/boot.log
# अस्थायी फ़ाइल rm -f $BOOTLOG 2> /dev/null हटाएँ
fi
# अंत आरसी
यदि [ "${error_value}" != "0" ]; फिर print_error_msg; फाई हो गया
# रनलेवल एस से स्विच पर इंटरैक्टिव वैरिएबल स्टोर करें और यदि नहीं तो हटा दें यदि [ "${runlevel}" == "S" -a "${interactive}" == "i" ]; तब
इको "इंटरैक्टिव=\"i\"" > /var/run/interactive
अन्य
rm -f /var/run/interactive 2> /dev/null
fi
# बूट लॉग को प्रारंभिक बूट पर ही कॉपी करें
यदि [ "${पिछला}" == "एन" -ए "${रनलेवल}" != "एस" ]; फिर कैट $BOOTLOG >> /var/log/boot.log
# बूट के अंत को चिह्नित करें
प्रतिध्वनि "--------" >> /var/log/boot.log
# अस्थायी फ़ाइल rm -f $BOOTLOG 2> /dev/null हटाएँ
fi
# अंत आरसी
: जेरार्ड बीकमैन्स - [ईमेल संरक्षित]
: डीजे लुकास - [ईमेल संरक्षित]
: ब्रूस डब्स - [ईमेल संरक्षित]
: जेरार्ड बीकमैन्स - [ईमेल संरक्षित]
: डीजे लुकास - [ईमेल संरक्षित]
: ब्रूस डब्स - [ईमेल संरक्षित]
: एलएफएस 7.0
: मैथियास बेनकमैन के सिंपलइनिट-एमएसबी पर आधारित कोड के साथ http://winterdrache.de/linux/newboot/index.html
फ़ाइल /lib/lsb में स्थित होनी चाहिए
: एलएफएस 7.0
: मैथियास बेनकमैन के सिंपलइनिट-एमएसबी पर आधारित कोड के साथ http://winterdrache.de/linux/newboot/index.html
फ़ाइल /lib/lsb में स्थित होनी चाहिए