edora core 5 辦公環境安裝配置,fc5不完全指南(十三)我在飛,加快fc5的啟動速度(zt

tonykorn97發表於2006-07-11

上面的幾篇文章是bigboar兄弟推薦的,這篇是bigboar的實驗總結,很不錯的文章,所以就轉了過來!

bigboar兄弟的blog:

http://bigboar.itpub.net/


1)透過本次提速,更熟悉linux系統啟動過程,瞭解系統服務。
2)提速後,啟動速度真TM不是一般的快(啟動服務減少了 + 部分服務並行啟動)

結論:超值!

參考資料:
1)好文轉貼:fedora core 啟動服務詳解
http://bigboar.itpub.net/post/8411/114756

2)好文轉貼:過並行化 Linux 系統服務來提高引導速度
http://bigboar.itpub.net/post/8411/114685

3)好文轉貼:剖析Linux系統啟動的後臺全過程
http://bigboar.itpub.net/post/8411/114685


做好準備功夫:
首先,修改系統,備份是一切的根本,把備份工作做好。本次需要備份的就一個/etc/rc.d/rc檔案
其次,防止修改錯誤,一張故障修復盤是必不可少的防備工具,不然修改錯誤,進不了系統,麻煩就搞大了。
(其實不復雜,我測試了N次,沒有一次說是起不來的)



1)系統可啟動的服務:/etc/rc.d/init.d目錄下的服務都可啟動。
2)系統服務功能:在/etc/rc.d/init.d系統服務指令碼頭部有描述,包括配置檔案,有的系統服務還可使用man提供幫助,配置檔案及更多用法,可從閱服務啟動指令碼得知。

為了飛,我要先現做好下面工作:


下面開始:
1,在fc5中,reboot執行了init 6,shutdown執行了init 0。
2,下面以init 3為例,分析我本機的服務(從預設的/etc/rc.d/rc指令碼可知,執行init 3時,/etc/rc.d/rc3.d目錄下的所有S*都會啟動):
[root@bigboar rc3.d]# ls S*
S01sysstat S11auditd S22messagebus S44acpid S95anacron
S04readahead_early S12syslog S25bluetooth S50hplip S95atd
S05kudzu S13irqbalance S25netfs S55cups S95firstboot
S06cpuspeed S13portmap S26apmd S55sshd S98avahi-daemon
S08arptables_jf S14nfslock S26hidd S56xinetd S98cups-config-daemon
S08iptables S15mdmonitor S26lm_sensors S85gpm S98haldaemon
S09isdn S18rpcidmapd S28autofs S90crond S99local
S10network S19rpcgssd S40smartd S90xfs
(本來有個sendmail,被我刪了,反正也不要,就不是說了)

1)S01sysstat,Reset the system activity logs,重置日誌,要。
2) S04readahead_early,This service causes the programs used during startup to be loaded into memory before they are needed,thus improving startup performance。提前快取啟動時要執行的程式,要。
3)S05kudzu,kudzu detects and configures new and/or changed hardware on a system.硬體變更檢查,要。
4)S06cpuspeed,Run dynamic CPU speed daemon,監測系統空閒百分比,在系統空閒時將能源消耗降為最小,而在系統繁忙時最大化加快系統執行速度,要。
5)S08arptables_jf,Automates a packet filtering firewall with arptables.防火牆過濾,要。
6)S08iptables,Starts, stops and saves iptables firewall,防火牆,要。
7)S09isdn,Integrated Services Digital Network,綜合數字服務網路。提供對isdn裝置的支援。不要。
8)S10network, Activates/Deactivates all network interfaces configured to start at boot time.啟動啟用網路,要。
9)S11auditd,This starts the Linux Auditing System Daemon,系統審計,不要。
10) S12syslog,Syslog is the facility by which many daemons use to log messages to various system log files. It is a good idea to always run syslog.記錄日誌的公共模組,要。
11)S13irqbalance, The irqbalance daemon will distribute interrupts across the cpus on a multiprocessor system with the purpose of spreading the load.CPU負載均衡服務,單CPU,肯定不用啟,不要。
12) S13portmap,The portmapper manages RPC connections, which are used by protocols such as NFS and NIS. The portmap server must be running on machines which act as servers for protocols which make use of the RPC mechanism.守護程式為RPC服務,如NIS和NFS提供動態埠的分配。在需要的時候再啟動,不要。
13)S14nfslock, NFS is a popular protocol for file sharing across TCP/IP networks. This service provides NFS file locking functionality.NFS上鎖,需要時再啟動,不要。
14)S15mdmonitor,software RAID monitoring and management。軟RAID監視,暫時沒用到,不要。
15)S18rpcidmapd,Starts user-level daemon for NFSv4 that maps user names to UID and GID numbers.rpc的轉換,用時再啟,不要。
16)S19rpcgssd, Starts user-level daemon that manages RPCSEC GSS contexts for the NFSv4 client.rpc,用時再啟,不要。
17)S22messagebus,This is a daemon which broadcasts notifications of system events and other messages. 程式模組間的訊息機制,要。
18)S25bluetooth,Bluetooth services for service discovery, authentication, Human Interface Devices, etc.藍芽服務,不要。
19) S25netfs,Mounts and unmounts all Network File System (NFS), SMB/CIFS (Lan Manager/Windows), and NCP (NetWare) mount points.網路檔案系統掛接管理,不要。
20) S26apmd,apmd is used for monitoring battery status and logging it via syslog(8). It can also be used for shutting down the machine when the battery is low.老的電源管理服務,有新的acpid來管理了,不要。
21)S26hidd,Bluetooth Human Interface Device Daemon. Provides keyboard,mouse etc. functionality over Bluetooth.藍芽的服務,不要。
22)S26lm_sensors,sensors is used for monitoring motherboard sensor values.主機板監視,不要。
23)S28autofs, Automounts filesystems on demand。平時光碟機等不常用,沒必要啟動,手工mount即可,不要。
24)S40smartd,Self Monitoring and Reporting Technology (SMART) Daemon,配合smartctl命令可詳細檢查硬碟,暫時沒必要,但留著研究也好,要。
25)S44acpid,Listen and dispatch ACPI events from the kernel。新的電源管理程式,筆記本linux,要。
26) S50hplip, Note, this script file must start before cupsd.Start/stop script for HP Linux Imaging and Printing (HPLIP)必須在CUPS前啟動,不用列印服務,可以聯同cups一起不要,不要。
27)S55cups,Startup/shutdown script for the Common UNIX Printing System (CUPS).列印服務,不要。
28)S55sshd,OpenSSH server daemon,不提供遠端登入,不要。
29) S56xinetd,xinetd is a powerful replacement for inetd.xinetd has access control mechanisms, extensive logging capabilities, the ability to make services available based on time, and can place limits on the number of servers that can be started, among other things.提供一些比如登入服務的總體監控服務,可節省不少資源,也可以不啟動,還是要了,要。
30)S85gpm,GPM adds mouse support to text-based Linux applications such as the Midnight Commander. It also allows mouse-based console cut-and-paste operations, and includes support for pop-up menus on the console.我經常要在console下複製貼上,要。
31)S90crond, cron is a standard UNIX program that runs user-specified programs at periodic scheduled times. vixie cron adds a number of features to the basic UNIX cron, including better security and more powerful configuration options.crontab自動任務守護程式,在本機筆記本上,沒必要啟,要時候再service crond start即可,不要。
32) S90xfs,Starts and stops the X Font Server at boot time and shutdown.It also takes care of (re-)generating font lists.X視窗字型支援,如果是level 5就必須要了,如果沒有這個玩意,是啟動不了圖形的,我會用圖形視窗,要啟動,要。
33)S95anacron,Run cron jobs that were left out due to downtime。在關機時可執行crontab的任務,自動開關機了,不要。
34) S95atd,Runs commands scheduled by the at command at the time specified when at was run, and runs batch commands when the load average is low enough.底負荷也可批次執行的自動執行服務,不要。
35)S95firstboot,Firstboot is a druid style program that runs on the first time a machine is booted after install. It checks for the existence of an /etc/sysconfig/firstboot file. If it doesn't find the file, then the firstboot program needs to run. If it finds the file, firstboot will not be run. If /etc/reconfigSys exists, run the reconfiguration program and remove /etc/reconfigSys when done.檢查是否已經安裝過系統吧,不要。
36)S98avahi-daemon, This is a daemon which runs on client machines to perform Zeroconf service discovery on a network. avahi-daemon must be running on systems that use Avahi for service discovery.線上時區服務,不要。
37)S98cups-config-daemon,This is a daemon for configuring printers through D-BUS,都不用CPUS列印服務了,不要。
38) S98haldaemon,This is a daemon for collecting and maintaing information about hardware from several sources.為蒐集和維護硬體資訊的,可要可不要,要吧。
39)S99local,不知道要幹嘛,要。


3,下面list我要的16個服務:
1)S01sysstat
2)S04readahead_early
3)S05kudzu
4)S06cpuspeed
5)S08arptables_jf
6)S08iptables
8)S10network
10)S12syslog
17)S22messagebus
24)S40smartd
25)S44acpid
29)S56xinetd
30)S85gpm
32)S90xfs
38)S98haldaemon
39)S99local


4,從上面過濾出的16個服務分析,按S**的**數字順序(是預設的啟動順序),我按如下順序安排執行:
1)sysstat
2)readahead_early
3)cpuspeed
4)kudzu
然後,並行如下:
5)並行一:並行執行arptables_jf和iptables,這兩個服務執行完了,再執行network
6)並行二:並行執行syslog,messagebus,acpid,xinetd,gpm,xfs,haldaemon


5,現在一切都好了,準備東風:
1)從 ftp://www6.software.ibm.com/software/developer/library/l-boot/runlevel.zip 下載 James Hunt 寫好的模板。
James Hunt寫的模板,我在fedora core 5上測試了,有一些問題。
-1) rc指令碼他完全使用runlevel.mk來取代原來的啟動關閉系統要迴圈執行的K*和S*指令碼,我測試的結果是:首先如果是shutdown,會查詢 start0.mk和stop0.mk,如果是重啟,會查詢start6.mk和 stop6.mk,這4個指令碼是沒有提供的,得自己寫。其次,把所說的4個指令碼提供了,關閉或重啟時所有程式都關閉後,系統不會自動重啟初始化或關閉電 源,一直hang在那兒。
-2)runlevel.mk指令碼要修改才可使用。
-3)start3.mk要修改。

6,我的做法:
1)建立目錄/etc/rc.d/runlevel目錄儲存放下載回來的runlevel.mk,start3.mk等指令碼。
2)修改/etc/rc.d/rc指令碼,在“# Now run the START scripts.”這塊迴圈啟動指令碼的“for i in”迴圈外新增一個條件判斷:
if [ "$runlevel" = 3 -o "$runlevel" = 5 ]
then

make -j -f /etc/rc.d/runlevel/runlevel.mk RUNLEVEL=$runlevel JOB=start

else

# Now run the START scripts.
for i in /etc/rc$runlevel.d/S* ; do

原有code..................

done
fi

這樣判斷只有init 3和 init 5才會使用新的快速啟動方法啟動。


3)修改/etc/rc.d/runlevel/runlevel.mk
要修改的地方有:
--1)
INITD_DIR := /etc/rc.d/init.d #這個路徑,模板裡是/etc/init.d,要修改
--2)
SUBSYS_FILE_DIR := /var/lock/subsys #這個目錄我們是有的,所以可以不用修改
--3)ALL := 需要根據自己需要修改,此處,我修改為上面“3,”我列出的16個服務:
(NOTE:下載回來的模板裡,語法為ALL = ,這樣是不行的,要在等號前加個冒號,即可把 “=“ 修改為 “ :=” )
ALL :=
sysstat
readahead_early
cpuspeed
kudzu
arptables_jf
iptables
network
syslog
messagebus
acpid
xinetd
gpm
xfs
haldaemon
local

#上面每個服務屁股後面有一個斜線,表示接上行,可是在這裡,不知道為什麼顯示不出來

--4)include的地方得寫正確了,路徑不對就壞事了
include /etc/rc.d/runlevel/$(JOB)$(RUNLEVEL).mk



4)根據上面“4,”列出的執行順序,修改start3.mk指令碼為如下:
(NOTE: 冒號之間是tab鍵,不是空格)
[root@bigboar runlevel]# cat start3.mk
# GNU Makefile listing dependencies between services when services are
# started.

# Run kudzu first.
$(filter-out $
readahead_early : sysstat
cpuspeed : readahead_early
kudzu : cpuspeed

arptables_jf : kudzu
iptables : kudzu

network : arptables_jf iptables

syslog : kudzu
messagebus : kudzu
acpid : kudzu
xinetd : kudzu
gpm : kudzu
xfs : kudzu
haldaemon : kudzu


# Run local last.
local : $(filter-out $@,$(ALL))

# EOF


5)用一份init 3複製一份init 5
[root@bigboar runlevel]# cp start3.mk start5.mk



NOTE:

測試時,可在/var/lock/subsys目錄,看到你啟動了的服務(檔名就是服務名了,檔案為空)。




完事:

現在就可以體驗我們的成果了,reboot一下,飛的感覺馬上就來了。。。。。。。。。。。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/312079/viewspace-245363/,如需轉載,請註明出處,否則將追究法律責任。

相關文章