您好,登錄后才能下訂單哦!
一、boot過程詳解
以下具體講解系統引導的整個過程,主要以SPARC平臺為例:
lPoweron 過程
為服務器打開電源開關需要注意以下幾個部分,幾乎所有服務器都帶有鎖來固定幾個狀態:電源開關正常位置、鎖住電源開關、開機診斷、關閉電源開關,開電之前一定要確認鑰匙的位置。
lPOST過程
服務器電源打開后,系統將首先進入一個上電自檢的過程。diag-switch?開關參數如果設置為true,那么將可以從服務器的串口看到詳細的輸出。diag-level參數決定著POST的過程,缺省設置為min,設置為max時候,串口能看到更多的信息輸出,但是系統進入OBP而引導OS的時間也將大大推延了!在POST過程中,系統將對所有硬件一一作測試診斷,對于系統管理員來說,有可疑的硬件故障就有可能從POST過程中診斷出來。
l系統初始化Init SYSTEM
POST結束后,系統將進一步進行初始化,該過程又可以具體分為以下幾個部分:
oOBP:OpenBoot PROM定制了系統的一些信息,自檢結束后,系統進入OBP,同時將MMU(memory management unit)設為有效(enable)
oNVRAM:use-nvramrc?參數設置為true的話,系統將讀取NVRAMRC,并執行之,這里面可能包括一些引導設備的信息,比如說如果系統盤使用vxvm或者DiskSuite封裝的,將需要修改這些腳本來指明引導設備。
oProbe All:這將檢測所有的SCSI或者其它類型的磁盤和設備
oInstall Consle:系統在此狀態下,如果安裝了鍵盤和鼠標以及顯示器的話,顯示器將有輸出并點亮,如果只有串口的話,那么此時串口已經作為console臺可以進行訪問了。
oBanner:決定console臺后,系統將在console臺輸出Banner信息
oCreate Devices Tree:所有硬件設備的設備樹將在此時由OBP程序創建,這個非常重要,這對后面的引導OS起著非常重要的作用。
auto-boot?
OBP程序創建了設備樹后,系統將進入引導OS的過程,PROM參數auto-boot?參數設置為true,boot過程將自動進行,如果為false,boot過程將中止而進入OBP的ok〉提示符下,由用戶手工來完成boot。
注意:在auto-boot?設置為true的情況下,引導過程將自動執行,引導設備是由boot-device指定的,但是在diag-switch?被設置為true的時候,引導自動進行時的引導設備將由diag-device來決定。
bootblk
OBP程序找到引導設備后,就直接將引導設備上所存儲的bootblk調入內存進行執行,如果該引導塊不存在或者已經損壞,系統將無法完成boot,Solaris 8會返回一條信息,The file just loaded can not to be executed。這說明需要重新創建bootblk,方法非常簡單,用光驅引導系統,將原盤系統根mount起來,使用installboot命令來重新生成bootblk。
ufsboot:
執行完bootblk后系統將執行第二個程序/platform/`arch –k`/ufsboot ,該程序將UNIX的kernel的p_w_picpath文件調入內存,如果該文件損壞的話,系統將無法繼續引導,返回一條類似的信息,a bootlbk:Can’t find the boot program。
kernel:
系統的影像p_w_picpath文件調用和運行,在32位和64位系統將調用不同的文件,32位系統將涉及以下兩個文件:
1./platform/`arch –k`/kernel/unix
2./kernel/genunix
64位系統將涉及以下兩個文件
1. /platform/`arch –k`/kernel/sparcV9/unix
2. /kernel/genunix
kernel的p_w_picpath文件調用進內存并作進一步的初始化,而且將加載各種模塊,使用ufsboot讀取各文件,在mount根系統之前將所需模塊全部調用進內存。在這點,ufsboot不在起作用,而kernel將使用自己的驅動,此時如果根文件系統存在問題,系統將無法繼續引導。
/etc/system:
/etc/system文件將由kernel從根系統從讀取,該文件定制了系統參數:
以下是幾種定制系統參數的option:
moddir: 用來指定和改變系統kernel模塊的路徑
forceload: 強制將系kernel模塊調用進OS
exclude:用以執行一個特定的系統模塊
rootfs:用以指定系統根系統類型,ufs文件系統為缺省值
rootdev: 指定根系統設備物理路徑
set: 設置kernel可調節的系統參數
如果需要修改/etc/system文件,強烈建議先做拷貝然后再編輯,否則該文件錯誤嚴重的情況下將導致系統無法完成boot,而有了備份,那么在系統引導時候可以使用-a的boot option來進行選擇/etc/system.bak來引導系統,如果沒有做備份就必須使用boot cdrom –s的方式將系統根系統mount起來再手工修改錯誤的/etc/system文件。
kernel initialized:
kernel按照系統文件參數完成所有的module的調用后,首先創建系統的第一進程sched,其進程號為0,而該進程有時候被叫做“swapper”。
init:
init進程是第二個被創建的,該進程創建后讀取/etc/inittab文件和/etc/default/init文件,這兩個文件對系統的定制作了一些規定,比如說系統的缺省運行級別,系統時區和語言環境等等,該進程是系統以后所有進程的父進程。
rc scripts:
init進程創建以后,系統就根據/etc/inittab文件中指定的運行級別來執行相關的啟動腳本,所有的啟動rc腳本都存放在/etc/rc#.d目錄下,不同級別執行不同的腳本以啟動與級別相對應的進程。需要注意的是/etc/rc#.d目錄下的腳本都將被執行,首先執行K打頭的腳本,然后執行S打頭的腳本,并安裝ASCII碼的順序執行。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。