假設大家已經熟悉其它作業系統的引導過程,了解硬體的自檢引導步驟,就只從linux作業系統的引導引導程式(對個人電腦而言通常是lilo)開始,介紹linux開機引導的步驟。
lilo啟動之後,如果你選擇了linux作為準備引導的作業系統,第乙個被載入的東西就是核心。請記住此時的計算機記憶體中還不存在任何作業系統,pc(因為它們天然的設計缺陷)也還沒有辦法訪問機器上全部的記憶體。因此,核心就必須完整地載入到可用ram的第乙個兆位元組之內。為了實現這個目的,核心是被壓縮了的。這個檔案的頭部包含著必要的**,先設定cpu進入安全模式(以此解除記憶體限制),再對核心的剩餘部分進行解壓縮。
核心在記憶體中解壓縮之後,就可以開始執行了。此時的核心只知道它本身內建的各種功能,也就是說被編譯為模組的核心部分還不能使用。最基本的是,核心必須有足夠的**設定自己的虛擬記憶體子系統和根檔案系統(通常就是ext2檔案系統)。一旦核心啟動執行,對硬體的檢測就會決定需要對哪些裝置驅動程式進行初始化。從這裡開始,核心就能夠掛裝根檔案系統(這個過程類似於windows識別並訪問c盤的過程)。核心掛裝了根檔案系統之後,將啟動並執行乙個叫做init的程式。
注意:在這裡我們故意略去了linux核心啟動的許多細節,這些細節只有核心開發人員才感興趣。如果你好奇的話,可以訪問http:位址處的"kernel hackers guide"。
init程序是非核心程序中第乙個被啟動執行的(第乙個使用者態程序),因此它的程序編號pid的值總是1。init讀它的配置檔案/etc/init/rc-sysinit.conf(不同linux發行版不同,我的是linux mint 18 sarah),決定需要啟動的執行級別(runlevel)。從根本上說,執行級別規定了整個系統的行為,每個級別(分別由0到6的整數表示)滿足特定的目的。如果定義了initdefault級別,這個值就直接被選中,否則需要由使用者輸入乙個代表執行級別的數值。
輸入代表執行級別的數字之後,init根據/etc/init/rc-sysinit.conf檔案中的定義執行乙個命令指令碼程式。預設的執行級別取決於安裝階段對登入程式的選擇:是使用基於文字的,還是使用基於x-window的登入程式。
rc命令指令碼程式我們已經知道,當執行級別發生改變時,將由/etc/
rcx[0-6].d
/目錄中
定義需要執行哪一些命令指令碼程式,它負責為每乙個執行級別按照正確的順序呼叫相應的命令指令碼程式。
在各個執行級別的子目錄中,都建立有到/etc/init.d目錄中命令指令碼程式的符號鏈結,但是,這些符號鏈結並不使用命令指令碼程式在/etc/init.d目錄中原來的名字。如果命令指令碼程式是用來
啟動乙個服務的,其符號鏈結的名字就以字母s打頭;如果命令指令碼程式是用來
關閉乙個服務的,其符號鏈結的名字就以字母k打頭。
許多情況下,這些命令指令碼程式的執行順序都很重要。如果沒有先配置網路介面,就沒有辦法使用dns服務解析主機名!為了安排它們的執行順序,在字母s或者k的後面緊跟著乙個兩位數字,數值小的在數值大的前面執行。存放在/etc/init.d目錄中的、被符號鏈結上的命令指令碼程式是真正的實幹家,是它們完成了啟動或者停止各種服務的操作過程。
如果所做的修改只在引導開機的時候起作用,並且改動不大的話,可以考慮
簡單地編輯一下
/etc/rc.local
指令碼 。這個命令指令碼程式是在引導過程的最後一步被執行的。
2.2 編輯服務控制指令碼 在
/etc/
rcx[0-6].d
/目錄中新增軟連線指向/etc/init.d
目錄中的服務控制指令碼
/etc/init.d目錄下的控制指令碼接受引數start|stop|restart|status|force-reload
新增這個服務
update-rc.d apache2 defaults
update-rc.d
cvserverd.conf(自己寫的指令碼名)
defaults
並且可以指定該服務的啟動順序:
update-rc.d apache2 defaults 90
還可以更詳細的控制start與kill順序:
update-rc.d apache2 defaults 20 80
其中前面的20是start時的執行順序級別,80為kill時的級別。也可以寫成:
update-rc.d apache2 start 20 2 3 4 5 . stop 80 0 1 6 .
其中0~6為執行級別。
update-rc.d -f apache2 remove
Linux服務開機自啟動
有時候我們需要linux系統在開機的時候自動載入某些指令碼或系統服務 主要用三種方式進行這一操作 ln s 在 etc rc.d rc d目錄中建立 etc init.d 服務的軟鏈結 代表0 6七個執行級別之一 chkonfig 命令列執行級別設定 ntsysv 偽圖形執行級別設定 注意 1.這三...
Linux配置開機自啟動服務
linux伺服器存在重啟的情況,伺服器重啟後原來在跑的服務就停止了,由於伺服器重啟是個隨機事件,因此需要配置在重啟後自動開啟一些服務。本篇文章對於linux發行版debian和red hat。1 配置啟動指令碼 進入目錄 etc init.d 編寫要開機啟動的指令碼 custom service.s...
odoo13 服務註冊開機自啟動服務
在 etc systemd syste 下,建立配置檔案odoo13.service檔案,內容如下 unit description odoo13 requires postgresql.service after network.target postgresql.service service ...