FreeBSD系統啟動過程(轉)

gugu99發表於2007-08-11
FreeBSD系統啟動過程(轉)[@more@]

  當使用安裝程式Sysinstall完成了系統安裝和基本配置任務之後,系統需要重新啟動。在系統從硬碟上重新啟動之後,一個完好的FreeBSD系統就展現在使用者面前了。系統將出現登入提示,允許使用者登入進入FreeB SD作業系統。

  Unix是一種多使用者、多工的作業系統,它支援並能管理多個使用者使用系統,其使用者分為普通使用者和管理員兩類。普通使用者只能使用系統提供的具體應用功能,而只有管理員才能更改系統的配置、維護整個系統。FreeBSD系統的擁有者不但是僅僅使用系統的普通使用者,同樣也是整個系統的管理員,要負責系統維護的任務。

  Unix下系統維護的任務具有相當大的伸縮性,按照不同的系統的要求,可以非常簡單,僅僅使用系統初始提供的管理策略即可,也能是一種相當複雜的任務,對訪問的客戶進行更嚴格、更全面的限制。無論如何,FreeBSD的使用和維護都是一件富有挑戰性的任務。

  • 系統的啟動與關閉

  不象個人計算機上的其他幾種作業系統,FreeBSD被設計為一種可以永久執行的系統,正常情況下不需要也不應該頻繁的啟動和關閉。然而,FreeBSD的啟動過程從計算機系統自檢到載入FreeBSD系統核心,其中經過了幾個不同的階段,這些階段的操作都涉及到系統維護,因此相當重要,需要系統管理員加以瞭解。同樣,由於FreeBSD是一個多使用者系統,在後臺執行著相當多對系統而言非常重要的程式,系統關閉時就需要首先關閉這些程式,因而FreeBS D的關閉過程也必須按照一定的要求來操作,否則就會對系統造成破壞。

  • 系統啟動過程

      普通個人計算機的啟動過程相當簡單,首先是系統BIOS自檢,自檢之後將載入啟動硬碟上的主引導區,由主引導區上的載入程式再載入具體作業系統。標準的主引導區將按照啟動分割槽的設定,引導該分割槽上的作業系統,FreeBSD也可以使用這種方式。但更常見的引導FreeBSD的方式,是使用FreeBSD Boot Manager,來管理和負責引導包括FreeBSD在內的多個作業系統。

    • 多作業系統載入程式

      按照計算機啟動硬碟第一個扇區的系統主載入程式的不同,計算機有不同的啟動過程。FreeBSD最常使用 FreeBSD Boot Manager,它可以讓使用者在系統中共存的不同作業系統進行選擇。

      如果使用了Boot Manager用於多作業系統的引導,則系統自檢後首先進入Boot Manager的引導介面。

      F1: FreeBSD

      F2: Dos

      F5: Disk 2

      Default F1

      Boot Manager使用計算機的功能鍵來啟動各個分割槽的作業系統,使用F1將啟動第一個分割槽wd0s1 上的作業系統,F2啟動wd0s2,F3對應wd0s3,等等,F5啟動另一個硬碟上主引導區的載入程式。這樣可以在第二個磁碟上也安裝Boot Manager,由它來引導自己硬碟上各分割槽的作業系統。只有在分割槽的確存在的情況下, Boot Manager才顯示相應的啟動熱鍵,並從分割槽的型別判斷它是那種作業系統。在使用者選擇了某個選項,或者經過了一定的延遲時間之後,Boot Manager就啟動FreeBSD系統。

      使用Boot Manager作多作業系統引導需要注意的是:一旦在這臺計算機中重新安裝Dos/Windo ws系統,則主引導區就被重寫,需要重新安裝BootManager。

      當不想使用Boot Manager引導系統,而打算回到標準引導區的方式(不再需要引導多作業系統)時,可以使用DOS程式fdisk.exe來恢復主引導區的內容。也可以使用FreeBSD的sysinstall程式來重新安裝標準主引導區。

      A:> fdisk /mbr

      但是,Boot Manager仍然使用BIOS呼叫來獲得分割槽上的資料,由於BIOS只能訪問硬碟1024 柱面內的分割槽,因此FreeBSD的引導分割槽必須在1024柱面以內才能正常啟動系統。新的BIOS中使用LBA等方式對硬碟資料進行了重新對映,來避免這個問題。然而就需注意不能隨意更改BIOS中的硬碟對映方式不可隨便更改,必須與硬碟進行分割槽時的設定一致,否則BIOS就不能正確找到以前設定的分割槽。

    • boot loader

      無論是標準載入程式,還是FreeBSD Boot Manager,都將載入FreeBSD基本分割槽的第一個扇區,這裡放置著FreeBSD的啟動程式Boot Block,它將載入FreeBSD檔案系統中的boot l oader程式,不需進行任何操作,boot loader程式將引導系統核心來啟動系統。但在這個過程中也可以中斷自動啟動程式,進入互動模式,從而更改啟動核心、進行硬體設定、甚至提供了選擇不同的boot loader程式的機會。

      FreeBSD 3.1-release中更新了系統的boot loader程式,這個新boot loa der程式與FreeBSD 2.2.x和3.0版本使用的boot loader不同,升級的原因之一是老版本的b oot loader不能啟動ELF格式的核心,此外新版本的boot loader功能更強大。因此老版本的boo t loader的行為與下面描述的不同。

      通常沒有必要改變Boot Loader,如果要更改使用的Boot Loader程式,就要在啟動螢幕最先印出一個簡單的斜線 “/” 時,在幾秒時間內按下空格鍵,否則啟動過程將略過這個步驟,直接進入下一步。如果按下空格,則系統將出現boot提示符。

      /

      >>FreeBSD/i386 BOOT

      Default: 0:wd(0,a)/boot/loader

      boot:

      此時輸入 “?” ,可以列出對應的硬碟分割槽中根目錄下的所有檔案。這時可以在boot提示符下輸入另一個b oot loader程式,啟動該boot loader程式,也可以直接輸入某個核心檔名,從而略過boot l oader而直接啟動相應的核心。然而,透過boot loader能完成更多的任務,包括進行硬體資源設定。

      此時也可以列出、選擇不同的硬碟分割槽上的不同啟動檔案,正如之前的提示資訊,0:wd(0,a)用於一個包含 FreeBSD根檔案系統的子分割槽,其中第一個0為硬碟控制器的序號,而wd(0,a)為硬碟分割槽wd0a,根據硬碟分割槽情況,這對應第一個UFS分割槽上的根檔案系統。而後面可以跟隨目錄和檔名,以及可以使用?來列出目錄下的檔案,當然選擇啟動核心的任務可以在boot loader內部中更好的完成,一般情況下不需要進入這個階段改變boot loader程式。

      此後系統將進入Boot Loader程式中,由Boot Loader將核心/kernel和核心模組載入記憶體,接著Boot Loader就等待10秒間隔,在這個時間內可以讓使用者按下了除回車之外的其他任意鍵,進入Bo ot Loader的互動模式。

      /

      BTX loader 1.00 BTX version is 1.01

      Console: internal video/keyboard

      BIOS drive A: is disk0

      BIOS drive C: is disk1

      BIOS drive D: is disk2

      FreeBSD/i386 bootstrap loader, Revision 0.5 638/64512kB

      (wb@email.online.ha.cn, Web Mar 3 02:54:38 CST 1999)

      /kernel text=0x1697f2 data=0x168d0+0x1f17c syms=[0x4+0x1eb70+0x4+0x2014a]

      /modules/splash_bmp.ko text=0x1025 data=0xc+0x634 syms=[0x4+0x400+0x4+0x213]

      Hit [Enter] to boot immediately, or any other key for command prompt.

      Booting [kernel] in 8 seconds...

      Type ‘?’ for a list of commands, ‘help’ for more detiled help.

      disk1s3a:>

      新的Boot Loader使用BIOS的硬碟表示順序,沒有區分SCSI硬碟da和IDE硬碟wd,而直接使用disk0、disk1、disk2按BIOS中的順序表示硬碟。本例中的提示符為disk1s3a,由於本例中使用的硬碟為IDE介面,因此這實際就代表wd1s3a分割槽。

      在boot loader提示符下有很多相當有用的命令,例如使用ls命令可以列出disk1s3a中各級目錄下的檔案,使用lsdev可以列出當前核心中的裝置驅動,使用lsmod可以列出已經載入的核心模組,使用load 可以載入另外的需要載入的核心模組,使用autoboot可以在給定時間之後啟動系統,而使用boot命令可以立即啟動系統核心,或者使用pnpscan命令掃描當前系統中的PNP卡。一般boot命令比較常用,例如使用 “boot -s” 命令,將啟動系統並進入單使用者模式,在這個模式下可以執行系統維護任務。通常由於只有可以信任的管理人員才能訪問控制檯,因此預設狀況下進入單使用者模式不需要使用口令認證。

      在boot命令之後使用其他核心名字作引數,用來使用預設核心/kernel之外的其他核心來啟動系統。每個 FreeBSD系統都至少具備一個備用的通用核心kernel.GENERIC,在當前系統核心被破壞的情況下可以使用它來啟動系統。因此在載入程式被破壞而系統完好的情況下(通常是由於重新安裝了Windows的原因),可以使用安裝軟盤或光碟啟動,進入Boot Loader的互動模式,選擇硬碟上的核心啟動,然後進行修復而不需要重新安裝。當在boot loader提示符下使用 “boot -c” 命令,在其後的啟動過程中將進入UserConfig中,用於對核心中的硬體資源引數進行配置。與系統初始安裝時進入UserConfig的方式不同,這將直接進入User Config的命令列模式,核心將出現UserConfig的提示符:

      config>

      此時可以使用help命令查詢可以使用的UserConfig命令,如果輸入visual指令,表示使用vi sual方式配置系統硬體,則會進入UserConfig的全螢幕介面,否則就使用這個命令列方式進行硬體引數配置。命令列模式中可以使用ls命令列出不同的裝置驅動程式,使用irq、drq、iomem等命令檢視硬體的相應資源設定。

      命令列模式比全螢幕介面更強大的地方是能夠對ISA PNP裝置進行控制,這是透過pnp命令進行的。當IS A PNP卡由BIOS分配資源的時候,核心能以非PNP的驅動去探測它,這也是為何要在BIOS中關閉相關的PNP 選項的原因。但如果在編譯核心支援了PNP控制器,也可以在BIOS中設定為由OS(即FreeBSD)來管理硬體資源,這就需要使用pnp命令手工為ISA PNP硬體分配資源,以便非PNP的驅動能檢測並正確設定資源。但是手工設定要求對PNP卡硬體相當瞭解,否則還是讓BIOS來完成資源的分配更為適合。

      當退出UserConfig之後,或者在boot loader的互動模式下執行了boot命令,或者在bo ot loader提示進入互動模式的時候10秒鐘內沒有任何輸入,則boot loader就會載入核心,並自動將控制權交給已經載入的FreeBSD核心程式,由核心探測計算機中的各個硬體,並將探測結果列印到螢幕上。使用鍵盤右上角的Pause鍵可以暫停螢幕輸出,並可以使用Page Up,Page Down鍵上下滾動螢幕上的資訊進行檢視,最後再使用一次Pause鍵將開啟螢幕輸出,繼續系統啟動過程。核心的啟動資訊也可以在登入系統之後使用dmesg 命令檢視。

      FreeBSD 3.0以前的FreeBSD版本使用的Boot Loader為一個較老的版本,因此提示資訊與命令輸入方式也略有不同,但基本實現同樣的功能,舊Boot Loader程式的提示符直接就為 “boot:” ,可以直接輸入 “-s” 、 “-c” 等引數進入單使用者模式或進入UserConfig。啟動時boot loa der都會在螢幕上列印提示資訊,解釋了基本用法和具體引數對應的含義。

      FreeBSD 3.1之後可以設定系統啟動標誌圖象(如同Windows9x的啟動標誌),那麼核心的探測資訊就不會顯示在螢幕上,而是被這個啟動圖象遮住。

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

相關文章