D.1. /etc/rc.d/init.d/rc
The rc komut dosyası, init tarafından çağrılan ilk komut dosyasıdır ve önyükleme işlemini başlatır.
#! / Bin / bash
################################################# #####################
# rc'ye başla
#
# Açıklama : Ana Çalışma Seviyesi Kontrol Komut Dosyası
#
# Yazarlar: Gerard Beekmans - [e-posta korumalı]
# : DJ Lucas - [e-posta korumalı]
# Güncelleme: Bruce Dubbs - [e-posta korumalı]
#
# Sürüm : LFS 7.0
#
################################################# #####################
. /lib/lsb/init-fonksiyonları print_error_msg()
{
log_failure_msg
# $i çağrıldığında ayarlanır
MSG="FAILURE:\n\nBu hata mesajını okumamalısınız.\n\n" MSG="${MSG}Bu,\n" MSG="${MSG}${ içinde öngörülemeyen bir hatanın meydana geldiği anlamına gelir. içinde"
MSG="${MSG}${error_value} dönüş değeriyle çıktı.\n"
MSG="${MSG}Bu hatayı,\n" MSG="${MSG}${DISTRO_MINI} kitabı tarafından sağlanan dosyalardan birinde bir hataya kadar takip edebiliyorsanız,\n" MSG=" ${MSG}lütfen bizi ${DISTRO_CONTACT} numaralı telefondan bilgilendirin.\n" log_failure_msg "${MSG}"
log_info_msg "Devam etmek için Enter'a basın..." wait_for_user
}
check_script_status()
{
# $i çağrıldığında ayarlanır if [ ! -f ${i} ]; sonra
log_warning_msg "${i} geçerli bir sembolik bağlantı değil." SCRIPT_STAT="1"
fi
Eğer [ ! -x ${i} ]; sonra
log_warning_msg "${i} yürütülebilir değil, atlanıyor." SCRIPT_STAT="1"
fi
}
Çalıştırmak()
{
if [ -z $etkileşimli ]; sonra
${1} ${2}
iade $?
fi
doğru iken; yapmak
read -p "${1} ${2} çalıştırılsın mı (Evet/hayır/devam)? " -n 1 runit echo
c'de ${runit} durumu | C)
etkileşimli=""
${i} ${2}
ret=${?} ara;
;;
n | N)
0 döndür
;;
y | E)
${i} ${2}
ret=${?} ara
;;
esac bitti
iade $ret
}
# Herhangi bir yerel ayarı/geçersiz kılmayı okuyun
[ -r /etc/sysconfig/rc.site ] && kaynak /etc/sysconfig/rc.site
DISTRO=${DISTRO:-"Sıfırdan Linux"}
DISTRO_CONTACT=${DISTRO_CONTACT:-"[e-posta korumalı] (Kayıt gerekli)"} DISTRO_MINI=${DISTRO_MINI:-"LFS"}
IPROMPT=${IPROMPT:-"hayır"}
# Bu 3 sinyal, komut dosyamızın "" tuzağından çıkmasına neden olmaz INT QUIT TSTP
[ "${1}" != "" ] && çalışma düzeyi=${1}
if [ "${çalışma düzeyi}" == "" ]; ardından yankı "Kullanım: ${0} " >&2 çıkış 1
fi
önceki=${PREVLEVEL}
[ "${önceki}" == "" ] && önceki=N
Eğer [ ! -d /etc/rc.d/rc${runlevel}.d ]; sonra
log_info_msg "/etc/rc.d/rc${runlevel}.d mevcut değil.\n" çıkış 1
fi
if [ "$runlevel" == "6" -o "$runlevel" == "0" ]; ardından IPROMPT="hayır"; fi
# Not: ${LOGLEVEL:-7}'de, ':' 'tire' '7', eksi 7 değil if [ "$runlevel" == "S" ]; sonra
[ -r /etc/sysconfig/console ] && source /etc/sysconfig/console dmesg -n "${LOGLEVEL:-7}"
fi
if [ "${IPROMPT}" == "evet" -a "${çalışma düzeyi}" == "S" ]; sonra
# Dağıtım karşılama dizesinin kaçış kodları olmadan toplam uzunluğu wlen=${wlen:-$(echo "${DISTRO}'ya Hoş Geldiniz" | wc -c )} Welcome_message=${welcome_message:-"${INFO'ya Hoş Geldiniz }${DISTRO}${NORMAL}"}
# Kaçış kodları olmadan etkileşimli dizenin toplam uzunluğu ilen=${ilen:-$(echo "Etkileşimli başlatmaya girmek için 'I' tuşuna basın" | wc -c )}
i_message=${i_message:-"Etkileşimli başlatmaya girmek için '${FAILURE}I${NORMAL}' tuşuna basın"}
# dcol ve icol, mesajı ortalamak için mesajdan önceki boşluklardır
# ekranda. itime, kullanıcının bir tuşa basması için bekleme süresidir wcol=$(( ( ${COLUMNS} - ${wlen} ) / 2 ))
icol=$(( ( ${SÜTÜN} - ${ilen} ) / 2 )) süre=${zaman:-"3"}
yankı -e "\n\n"
echo -e "\\033[${wcol}G${welcome_message}" echo -e "\\033[${icol}G${i_message}${NORMAL}" echo ""
read -t "${itime}" -n 1 etkileşimli 2>&1 > /dev/null
fi
# Küçük harf yap
[ "${etkileşimli}" == "Ben" ] && etkileşimli="i" [ "${etkileşimli}" != "i" ] && etkileşimli=""
# S çalışma seviyesinden mevcutsa durum dosyasını okuyun
[ -r /var/run/interactive ] && source /var/run/interactive
# Bir önceki çalışma seviyesi tarafından başlatılan tüm hizmetleri durdurmaya çalışmak,
# ve bu çalışma seviyesinde öldürüldü
if [ "${önceki}" != "N" ]; sonra
i için $(ls -v /etc/rc.d/rc${runlevel}.d/K* 2> /dev/null) yapın
check_script_status
if [ "${SCRIPT_STAT}" == "1" ]; sonra SCRIPT_STAT="0"
devam etmek
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
if [ "${runlevel}" != "0" -a "${runlevel}" != "6" ]; sonra
Eğer [ ! -f ${prev_start} -a ! -f ${sysinit_start} ]; o zaman MSG="UYARI:\n\n${i} olamaz "
MSG="${MSG}yürütüldü çünkü " MSG="${MSG}önceki " MSG="${MSG}çalışma düzeyinde (${önceki})." log_warning_msg "$MSG"
devam etmek
fi
fi
${i} çalıştır error_value=${?} durdur
if [ "${hata_değeri}" != "0" ]; sonra print_error_msg; bitti
fi
if [ "${önceki}" == "N" ]; sonra IN_BOOT=1 dışa aktarın; fi
if [ "$runlevel" == "6" -a -n "${FASTBOOT}" ]; ardından /fastboot'a dokunun
fi
# Bu çalışma seviyesindeki tüm fonksiyonları başlat
i için $( ls -v /etc/rc.d/rc${runlevel}.d/S* 2> /dev/null) do
if [ "${önceki}" != "N" ]; ardından sonek=${i#/etc/rc.d/rc$runlevel.d/S[0-9][0-9]} stop=/etc/rc.d/rc$runlevel.d/K[0 -9][0-9]$sonek prev_start=/etc/rc.d/rc$previous.d/S[0-9][0-9]$sonek
[ -f ${prev_start} -a ! -f ${stop} ] && devam et
fi
check_script_status
if [ "${SCRIPT_STAT}" == "1" ]; sonra SCRIPT_STAT="0"
devam etmek
fi
0|6'da ${runlevel} durumu
${i} durdur
;;
*)
esac
${i} çalıştır
;;
error_value=${?}
if [ "${hata_değeri}" != "0" ]; sonra print_error_msg; bitti
# Etkileşimli değişkeni S çalışma seviyesinden anahtarda saklayın ve değilse [ "${runlevel}" == "S" -a "${interactive}" == "i" ]; sonra
echo "interactive=\"i\"" > /var/run/interactive
başka
rm -f /var/run/interactive 2> /dev/null
fi
# Önyükleme günlüğünü yalnızca ilk önyüklemede kopyalayın
if [ "${önceki}" == "N" -a "${çalışma düzeyi}" != "S" ]; sonra cat $BOOTLOG >> /var/log/boot.log
# Önyüklemenin sonunu işaretleyin
echo "-------" >> /var/log/boot.log
# Geçici dosyayı rm -f $BOOTLOG 2> /dev/null kaldırın
fi
# rc'yi bitir
if [ "${hata_değeri}" != "0" ]; sonra print_error_msg; bitti
# Etkileşimli değişkeni S çalışma seviyesinden anahtarda saklayın ve değilse [ "${runlevel}" == "S" -a "${interactive}" == "i" ]; sonra
echo "interactive=\"i\"" > /var/run/interactive
başka
rm -f /var/run/interactive 2> /dev/null
fi
# Önyükleme günlüğünü yalnızca ilk önyüklemede kopyalayın
if [ "${önceki}" == "N" -a "${çalışma düzeyi}" != "S" ]; sonra cat $BOOTLOG >> /var/log/boot.log
# Önyüklemenin sonunu işaretleyin
echo "-------" >> /var/log/boot.log
# Geçici dosyayı rm -f $BOOTLOG 2> /dev/null kaldırın
fi
# rc'yi bitir
: Gerard Beekmans - [e-posta korumalı]
: DJ Lucas- [e-posta korumalı]
: Bruce Dubbs- [e-posta korumalı]
: Gerard Beekmans - [e-posta korumalı]
: DJ Lucas- [e-posta korumalı]
: Bruce Dubbs- [e-posta korumalı]
:LFS 7.0
: Matthias Benkmann'ın simpleinit-msb'sine dayalı kod ile http://winterdrache.de/linux/newboot/index.html
Dosya /lib/lsb içinde bulunmalıdır
:LFS 7.0
: Matthias Benkmann'ın simpleinit-msb'sine dayalı kod ile http://winterdrache.de/linux/newboot/index.html
Dosya /lib/lsb içinde bulunmalıdır