Linux操作系統開機啟動提速方法介紹
添加時間:2010-11-26
添加:
admin
-
linux系統是十分優秀的操作系統,但啟動時間長是該系統的缺點之一。那么能否通過一些設置來縮短Linux系統的啟動時間呢?當然可以。本文將向讀者展示如何在不犧牲Linux系統可用性的前提下,縮短系統的啟動時間。要實現這一目標,需要了解系統的各類服務及它們之間的從屬關系,進而使它們在條件允許的前提下同時啟動,從而大大節省系統啟動時間。
準備工作
如果想采用本文介紹的方法對Linux系統進行設置,首先要熟悉Linux系統的設置語言。對系統的啟動過程進行設置是一項比較危險的行為,容易造成系統無法啟動。一旦發生這種情況,最好重新啟動系統后選擇單一用戶模式,將系統還原并重啟。當然,最重要的是在設置前備份重要數據。
其次,建議用戶最好在對本機系統進行修改前,先進行修改測試。如果用戶只有一臺計算機,那么這里建議使用用戶模式Linux系統(UML)進行測試。UML是一個內核補丁,它可以將Linux系統的內核轉譯成為二進制,以便用戶可以像使用普通軟件那樣運行Linux系統。一旦出現意外情況,損失的只是UML,而原系統卻可安然無恙。
Linux系統的啟動順序和runlevel
Linux系統的啟動包括多個步驟,這里主要介紹一下內核加載后的系統啟動步驟。用戶可以通過運行/sbin/runlevel命令來查看系統目前的runlevel。runlevel是Linux系統用來區別系統高級啟動設置類型的數字。這些數字十分常見,它們中的絕大多數都有著明確的含義。以Red Hat Linux系統為例,它的runlevel主要有以下幾種
init如何初始化系統
init可以通過一個ASCⅡ設置文件得知如何改變系統的runlevel。通常情況下該設置文件可以指引init來執行/etc/rc.d/rc命令,從而獲得runlevel的相關信息。
系統服務
用戶所需要的各種系統服務都是由rc指令程序來啟動的。系統潛在的服務紛繁復雜。大多數Linux系統通常只提供sshd(SecureShell服務)、syslog(系統日志工具)和lpd(打印服務)等功能。
用戶可以從/etc/rc.d/目錄中找到所有的服務。如果打開這個目錄,會發現許多服務只是一種外殼程序,它只是引導其它程序來完成工作。也許有人會問,rc程序是如何知道每個runlevel要運行哪些程序呢?答案是在/etc/rc.d/目錄下面與init.d/目錄并列的還有一些目錄,它們各自對應著自己的runlevel。它們的名稱為rc*.d/,例如runlevel5就是/etc/rc.d/rc5.d/。每個rc*.d/目錄中包含著兩個符號鏈接,這些鏈接可以連接到/etc/init.d/目錄中的指定服務程序。
動手改造
如果用戶決定要啟動Linux系統并進入圖形模式(runlevel5),那么當init引導rc指令程序運行并將runlevel的級數告知它時,rc指令程序將對/etc/rc.d/rc5.d/進行查看,接著它將執行從該目錄中找到所有鏈接。rc指令程序執行鏈接的過程可分為兩部分,首先它將執行所有名稱以“K”打頭的鏈接,將“stop”參數傳遞給它們,并停止這些鏈接指向的所有服務。這些服務停止后,rc指令程序將執行所有名稱以“S”打頭的鏈接,并將“start”參數傳遞給它們,啟動這些鏈接所指向的服務。
另外,rc指令程序可以根據鏈接名稱的兩個十進制數,確定鏈接的執行順序,數字小的先執行。
下面將舉一個例子,幫助用戶加深理解。當用戶啟動系統進入runlevel5時,首先要執行的鏈接是K05saslauthd,由于它是以“K”打頭的,而且后兩位十進制數要小于其它以“K”打頭的鏈接。第一個要執行的啟動鏈接是S05kudzu。最后執行的將是S99local。下面是runlevel 5狀態下指向程序的鏈接。
# cd /etc/rc.d/rc5.d
# ls -al
total 8
drwxr-xr-x 2 root root 4096 Jul 15 09:29 .
drwxr-xr-x 10 root root 4096 Jun 21 08:52 ..
lrwxrwxrwx 1 root root 19 Jan 1 2000 K05saslauthd -> ../init.d/saslauthd
lrwxrwxrwx 1 root root 20 Feb 1 2003 K15postgresql -> ../init.d/postgresql
lrwxrwxrwx 1 root root 13 Jan 1 2000 K20nfs -> ../init.d/nfs
lrwxrwxrwx 1 root root 14 Jan 1 2000 K24irda -> ../init.d/irda
lrwxrwxrwx 1 root root 17 Jan 1 2000 K35winbind -> ../init.d/winbind
lrwxrwxrwx 1 root root 15 Jan 1 2000 K50snmpd -> ../init.d/snmpd
……
lrwxrwxrwx 1 root root 18 Feb 8 11:15 K92iptables -> ../init.d/iptables
lrwxrwxrwx 1 root root 19 Feb 1 2003 K95firstboot -> ../init.d/firstboot
lrwxrwxrwx 1 root root 15 Jan 1 2000 S05kudzu -> ../init.d/kudzu
lrwxrwxrwx 1 root root 14 Jun 21 08:55 S09isdn -> ../init.d/isdn
lrwxrwxrwx 1 root root 17 Jan 1 2000 S10network -> ../init.d/network
lrwxrwxrwx 1 root root 16 Jan 1 2000 S12syslog -> ../init.d/syslog
lrwxrwxrwx 1 root root 17 Jan 1 2000 S13portmap -> ../init.d/portmap
linux系統是十分優秀的操作系統,但啟動時間長是該系統的缺點之一。那么能否通過一些設置來縮短Linux系統的啟動時間呢?當然可以。本文將向讀者展示如何在不犧牲Linux系統可用性的前提下,縮短系統的啟動時間。要實現這一目標,需要了解系統的各類服務及它們之間的從屬關系,進而使它們在條件允許的前提下同時啟動,從而大大節省系統啟動時間。
準備工作
如果想采用本文介紹的方法對Linux系統進行設置,首先要熟悉Linux系統的設置語言。對系統的啟動過程進行設置是一項比較危險的行為,容易造成系統無法啟動。一旦發生這種情況,最好重新啟動系統后選擇單一用戶模式,將系統還原并重啟。當然,最重要的是在設置前備份重要數據。
其次,建議用戶最好在對本機系統進行修改前,先進行修改測試。如果用戶只有一臺計算機,那么這里建議使用用戶模式Linux系統(UML)進行測試。UML是一個內核補丁,它可以將Linux系統的內核轉譯成為二進制,以便用戶可以像使用普通軟件那樣運行Linux系統。一旦出現意外情況,損失的只是UML,而原系統卻可安然無恙。
Linux系統的啟動順序和runlevel
Linux系統的啟動包括多個步驟,這里主要介紹一下內核加載后的系統啟動步驟。用戶可以通過運行/sbin/runlevel命令來查看系統目前的runlevel。runlevel是Linux系統用來區別系統高級啟動設置類型的數字。這些數字十分常見,它們中的絕大多數都有著明確的含義。以Red Hat Linux系統為例,它的runlevel主要有以下幾種
init如何初始化系統
init可以通過一個ASCⅡ設置文件得知如何改變系統的runlevel。通常情況下該設置文件可以指引init來執行/etc/rc.d/rc命令,從而獲得runlevel的相關信息。
系統服務
用戶所需要的各種系統服務都是由rc指令程序來啟動的。系統潛在的服務紛繁復雜。大多數Linux系統通常只提供sshd(SecureShell服務)、syslog(系統日志工具)和lpd(打印服務)等功能。
用戶可以從/etc/rc.d/目錄中找到所有的服務。如果打開這個目錄,會發現許多服務只是一種外殼程序,它只是引導其它程序來完成工作。也許有人會問,rc程序是如何知道每個runlevel要運行哪些程序呢?答案是在/etc/rc.d/目錄下面與init.d/目錄并列的還有一些目錄,它們各自對應著自己的runlevel。它們的名稱為rc*.d/,例如runlevel5就是/etc/rc.d/rc5.d/。每個rc*.d/目錄中包含著兩個符號鏈接,這些鏈接可以連接到/etc/init.d/目錄中的指定服務程序。
動手改造
如果用戶決定要啟動Linux系統并進入圖形模式(runlevel5),那么當init引導rc指令程序運行并將runlevel的級數告知它時,rc指令程序將對/etc/rc.d/rc5.d/進行查看,接著它將執行從該目錄中找到所有鏈接。rc指令程序執行鏈接的過程可分為兩部分,首先它將執行所有名稱以“K”打頭的鏈接,將“stop”參數傳遞給它們,并停止這些鏈接指向的所有服務。這些服務停止后,rc指令程序將執行所有名稱以“S”打頭的鏈接,并將“start”參數傳遞給它們,啟動這些鏈接所指向的服務。
另外,rc指令程序可以根據鏈接名稱的兩個十進制數,確定鏈接的執行順序,數字小的先執行。
下面將舉一個例子,幫助用戶加深理解。當用戶啟動系統進入runlevel5時,首先要執行的鏈接是K05saslauthd,由于它是以“K”打頭的,而且后兩位十進制數要小于其它以“K”打頭的鏈接。第一個要執行的啟動鏈接是S05kudzu。最后執行的將是S99local。下面是runlevel 5狀態下指向程序的鏈接。
# cd /etc/rc.d/rc5.d
# ls -al
total 8
drwxr-xr-x 2 root root 4096 Jul 15 09:29 .
drwxr-xr-x 10 root root 4096 Jun 21 08:52 ..
lrwxrwxrwx 1 root root 19 Jan 1 2000 K05saslauthd -> ../init.d/saslauthd
lrwxrwxrwx 1 root root 20 Feb 1 2003 K15postgresql -> ../init.d/postgresql
lrwxrwxrwx 1 root root 13 Jan 1 2000 K20nfs -> ../init.d/nfs
lrwxrwxrwx 1 root root 14 Jan 1 2000 K24irda -> ../init.d/irda
lrwxrwxrwx 1 root root 17 Jan 1 2000 K35winbind -> ../init.d/winbind
lrwxrwxrwx 1 root root 15 Jan 1 2000 K50snmpd -> ../init.d/snmpd
……
lrwxrwxrwx 1 root root 18 Feb 8 11:15 K92iptables -> ../init.d/iptables
lrwxrwxrwx 1 root root 19 Feb 1 2003 K95firstboot -> ../init.d/firstboot
lrwxrwxrwx 1 root root 15 Jan 1 2000 S05kudzu -> ../init.d/kudzu
lrwxrwxrwx 1 root root 14 Jun 21 08:55 S09isdn -> ../init.d/isdn
lrwxrwxrwx 1 root root 17 Jan 1 2000 S10network -> ../init.d/network
lrwxrwxrwx 1 root root 16 Jan 1 2000 S12syslog -> ../init.d/syslog
lrwxrwxrwx 1 root root 17 Jan 1 2000 S13portmap -> ../init.d/portmap
新文章:
- CentOS7下圖形配置網絡的方法
- CentOS 7如何添加刪除用戶
- 如何解決centos7雙系統后丟失windows啟動項
- CentOS單網卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗證詳解
- CentOS 7.1添加刪除用戶的方法
- CentOS查找/掃描局域網打印機IP講解
- CentOS7使用hostapd實現無AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網絡重啟出錯
- 解決Centos7雙系統后丟失windows啟動項
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統有什么不同呢
- Centos 6.6默認iptable規則詳解