應用指導:快速掌握Linux啟動方式機制
來源:程序員人生 發布時間:2013-10-29 09:11:07 閱讀次數:2901次
Linux的啟動方式可以從軟盤或硬盤引導Linux。從軟盤啟動Linux時,引導扇區包含的代碼只讀前數百個數據塊(當然,依賴于內核的大小)到預定的內存位置。Linux引導軟盤上,沒有系統,內核存在連續的扇區中,因為這樣簡化了引導過程。
軟盤引導Linux
Linux加載后,它初始化硬件和設備驅動程序,然后運行 init。init可啟動其他進程以允許用戶登錄并做其他事情。這部分的細節在下面討論。
為了關閉一個Linux系統,首先所有進程被告知結束(這使他們關閉所有文件,完成必要的其他事情,使之整齊地結束),然后unmount 文件系統和交換分區,最后打印可以關掉電源的信息到控制臺。如果沒有遵循正確的過程,可怕的事情可能發生。最重要的文件系統緩沖Cache可能沒有回寫,這意味著其中的所有資料將丟失,磁盤文件系統不完整,并可能不可用。
硬盤引導
從硬盤引導時,主引導記錄的代碼檢查分區表(也在主引導記錄區中),確認活動分區(標記為可引導的分區),從該分區讀引導扇區,然后啟動該引導扇區的代碼。該分區的引導扇區的代碼與軟盤所做的相同:從該分區讀入內核并啟動。但細節不同,因為一般只給內核映像做一個單獨的分區是沒什么用的,所以分區引導扇區中的代碼不能只順序地讀磁盤,它必須找到文件系統并把它們放在哪些扇區中。有幾個方法可解決這個問題,但最通常的方法是使用GRUB。
用GRUB引導時,它讀入并引導默認內核。也可以設置GRUB,使之能引導若干個內核之一,甚至其他操作系統。也可以在引導時讓用戶選擇引導哪個內核或操作系統。
對比
從軟盤和硬盤啟動各有優勢,但通常從硬盤啟動較好,因為這避免了關于軟盤的沖突 ,而且快速。然而,安裝相同從硬盤啟動可能有更多的麻煩,因此很多人先用軟盤引導,然后當系統工作很好后,再安裝GRUB從硬盤引導。
Linux內核被讀入內存后,才代表真正啟動了Linux,概述如下:
Linux內核是被壓縮安裝的,所以它首先得解壓自己。內核映像開頭包括一個解壓的小程序。
然后,內核檢查還有什么其他硬件(硬盤、軟盤、網卡……),并配置適當的設備驅動程序。同時,輸出查找結果的資料。例如,我引導時得到類似如下的資料。
Loading Linux.
Console: colour EGA+ 80x25, 8 Virtual consoles
Serial driver version 3.94 with no serial options enabled
tty00 at 0x03f8 (irq = 4) is a 16450
tty01 at 0x02f8 (irq = 3) is a 16450
lp_init: lp1 exists (0), using polling driver
Memory: 7332k/8192k available (300k kernel code, 384k reserved, 176k data)
Floppy drive(s): fd0 is 1.44M, fd1 is 1.2M
Loopback deVice init
Warning WD8013 board not found at i/o = 280.
Math coprocessor using irq13 error reporting.
Partition check:
hda: hda1 hda2 hda3
VFS: Mounted root (ext filesystem).
Linux version 2.4.18-12Thiz (root@haven) 05/01/2002 14:12:20
精確的文字輸出在不同系統上有所不同,這依賴于硬件、Linux版本及其配置。然后內核試圖裝載根文件系統。如果根系統裝載失敗,例如因為你忘了在內核中包含相關的系統驅動程序,內核將失敗,系統停止。根文件系統通常被只讀模式裝載(這可用與位置相同的方法)。這可使文件系統在裝載時被檢查。然后,內核在后臺啟動程序 init(位于/sbin/init),它的進程號是1。init可以做許多啟動工作,它至少要啟動一些必要的后臺守護程序。
init切換到多用戶模式并啟動getty,提供虛擬控制臺和鏈表線。getty 是一個讓用戶通過虛擬控制臺和鏈表終端登錄的程序。init還可能啟動一些其他程序。至此引導完成,系統啟動并正常運行。
關閉Linux系統時,遵循正確的過程是很重要的。否則,文件系統可能損壞,文件可能變得雜亂。這是因為Linux使用磁盤緩存,并不立即將資料寫到磁盤,而是間歇地回寫。這極大地改善了性能,但同時也意味著如果你只是關閉電源,Cache可能保留著大量資料,而磁盤上的數據可能不是一個全部的正在工作的文件系統(因為有些數據已經回寫到硬盤,而有些沒有)。
另一個不能直接關閉電源的原因是:在多任務系統中,后臺可能運行著很多東西,關閉電源可能損失慘重。使用正確的關機順序,可以保證所有的后臺進程得以保存它們的數據。
正常關閉Linux系統的命令是shutdown 。它通常使用兩種方法之一:
如果系統只有你一個用戶,使用shutdown 的通常方法是退出所有運行程序,從所有虛擬控制臺注銷,用root登錄(如果你已經是root,當然不必再注銷、登錄,但應該換到根目錄,以免由于卸載出現問題),然后運行命令shutdown -h now(雖然單用戶時一般不必要,但如果需要一個延時,用一個加號加一個表示分鐘的數目代替now)。
如果系統是多用戶,使用命令shutdown -h +time message。time是到系統停止的分鐘數,message是告知所有用戶系統關機原因的短信息。
# shutdown -h +10 'We will install a new disk. System should
> be back on-line in three hours.'
上面的命令警告所有用戶,系統將在10分鐘后關閉,他們最好保存資料,否則將丟失數據。警告將顯示在所有登錄的終端上,包括所有的xterm上:
Broadcast message from root (ttyp0) Wed Aug 2 01:03:25 2002...
We will install a new disk. System should
be back on-line in three hours.
The system is going DOWN for system halt in 10 minutes !!
警告在系統關閉前將自動重復數遍,隨著時間的流逝,間隔越來越短。當關閉系統真正開始時,所有文件系統(除了根)被卸載,所有用戶進程(如果有人還未注銷)被終止,守侯進程被關閉,所有東西都停下來。此后,init顯示一條資料告知你可以關掉電源了。有時(雖然在任何好的系統上極少出現),系統可能不能正常關閉。例如,內核紊亂、崩潰等不正常情況,可能無法鍵入任何命令,因此正常關機可能有些困難,這時只能直接關機。問題可能沒那么嚴重,比如,有人誤動了你的鍵盤,內核和update程序還在正常運行,等待一些時間可能使update有機會將緩沖Cache中的資料回存硬盤,然后再直接關機。
重新啟動就是完全關閉系統,關掉電源,然后再打開。簡單方法是用shutdown重新啟動系統而不是僅停止系統。這要使用shutdown的-r選項,例如命令shutdown -r now。許多Linux系統在按【Ctrl+Alt+Del】鍵時運行shutdown -r now。這是可設置的,比如在多用戶系統中設置一定的延時也許更好。如果是誰都能接觸到的系統,那么最好設置為【Ctrl+Alt+Del】無效。
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈