813
中電雲集
FreeBSD係統啟動過程
當使用安裝程序Sysinstall完成了係統安裝和基本配置任務之後,係統需要重新啟動。在係統從硬盤上重 新啟動之後,一個完好的FreeBSD係統就展現在使用者麵前了。係統將出現登錄提示,允許使用者登錄進入FreeB SD操作係統。Unix是一種多用戶、多任務的操作係統,它支持並能管理多個用戶使用係統,其用戶分為普通用戶和管理員兩類 。普通用戶隻能使用係統提供的具體應用功能,而隻有管理員才能更改係統的配置、維護整個係統。FreeBSD係統的擁 有者不但是僅僅使用係統的普通用戶,同樣也是整個係統的管理員,要負責係統維護的任務。
Unix下係統維護的任務具有相當大的伸縮性,按照不同的係統的要求,可以非常簡單,僅僅使用係統初始提供的 管理策略即可,也能是一種相當複雜的任務,對訪問的客戶進行更嚴格、更全麵的限製。無論如何,FreeBSD的使用和 維護都是一件富有挑戰性的任務。
-
係統的啟動與關閉
不象個人計算機上的其他幾種操作係統,FreeBSD被設計為一種可以永久運行的係統,正常情況下不需要也不 應該頻繁的啟動和關閉。然而,FreeBSD的啟動過程從計算機係統自檢到載入FreeBSD係統內核,其中經過了幾 個不同的階段,這些階段的操作都涉及到係統維護,因此相當重要,需要係統管理員加以了解。同樣,由於FreeBSD是 一個多用戶係統,在後台運行著相當多對係統而言非常重要的進程,係統關閉時就需要首先關閉這些進程,因而FreeBS D的關閉過程也必須按照一定的要求來操作,否則就會對係統造成破壞。
- 係統啟動過程
- 多操作係統引導程序
- boot loader
普通個人計算機的啟動過程相當簡單,首先是係統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就不能正確找到以前設置的分區。
無論是標準引導程序,還是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=0×1697f2 data=0×168d0+0×1f17c syms=[0x4+0x1eb70+0x4+0x2014a]
/modules/splash_bmp.ko text=0×1025 data=0xc+0×634 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的啟動標誌),那麼內核的探測 信息就不會顯示在屏幕上,而是被這個啟動圖象遮住。
最後更新:2017-01-04 22:34:38