Re: [請益] 開機管理程式的迷思?

看板FreeBSD作者時間20年前 (2005/09/01 05:32), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串4/9 (看更多)
==> 在 piligo.bbs@ptt.cc (pili) 的文章中提到: > 在看過好幾本書後,才知道原來開機管理程式,功能不是只有做多重開機選單, > 他還有一個任務是載入核心 你在說哪個部分的開機程式呢? > 那我想請教的是當我MBR交由SPfdisk處理時,那在安裝BSD時到了選擇 BootMgr > & Standard & None ,該選哪一個才不會覆蓋到MBR,又能載入核心? > 註:好像不管選哪一個都是裝在MBR還是可以自行決定呢? > 以及當開機管理程式是裝在分割區,有哪些注意條件,譬如只能在特定的分割區 > 上,或者要在多少磁柱內才能裝? > 謝謝 FreeBSD Boot Manager 程式,只有提供一個很簡單的功能,那就是依據配置 方式,於開機時讓使用者決定要啟動哪個分割區內的作業系統。比方系統有 安裝 Windows 與 FreeBSD,開機選擇 Windows 時,就讀入 Windows 分割區 裡面前面 512 byte 開機啟動磁區資料,裡面有包含一端 boot trap code, 後續就是讀入並啟動 boot trap code,讓該程式碼處理後續啟動該 Windows 系統流程。而,啟動 FreeBSD 時也是如此。 簡單說,FreeBSD Boot Manager 與 spfdisk 提供的 Boot Manager 功能都是 一樣的。 安裝過程選擇 Standard,那表示把 MBR 開機磁區覆寫一份,提供最原本 MBR 開機程式所提供的功能。所謂提供的功能,就是會讀入目前分割狀態,然後尋找 有設定為 active 的 primary partition,再讀入該分割區內第一個磁區 512 bytes 的資料,由該 OS 提供的 boot loader 繼續處理後續開機流程。 簡單說,選 Standard 只是表示讓硬碟的 MBR 開機磁區內放一份傳統一般開機 程式碼。 選擇 None 表示不進行任何異動,所以通常要啟動所安裝的 FreeBSD 的話, 那得確認要有程式能夠載入並啟動該分割區內的第一個磁區內的 bootstrap code, 這樣由 freebsd 的 boot loader 接手後才能夠繼續進行後續開機流程。 安裝 FreeBSD 時,通常會執行 disklabel 程式,該程式最後階段都會把 UFS 分割區項目安裝一份 bootstrap code 在裡面,於便於提供其他開機程式載入 該分割區第一個磁區時,能夠啟動該 bootstrap code 程式。 簡單說,只要能夠讀入 UFS 分割區內的第一個磁區載入並啟動裡面的開機程式碼, 那就可以啟動 FreeBSD 系統。 不過 FreeBSD 使用的 UFS 分割區內,通常裡面的 bootstrap code 啟動時, 又可以選擇於 /boot 目錄內不同的 boot loader 項目。一般預設都是使用 /boot/loader,目前甚至還可以選擇 /boot/pxeboot 等項目。而系統預設的 /boot/loader 這程式碼,才是實際載入 freebsd kernel image 進而開機的 主要檔案。 題外話的是,Linux 安裝使用的 GRUB/LILO 這類程式,其實層面與上面不大 相同,因為 linux 的分割區上所謂 boot trap code,就是 grub/lilo 這類 程式。這類程式是兼具 boot manager 與載入 kernel image 的程式,架構 做法與 FreeBSD 幾乎完全不一樣。 至於 1024 cylinders 這類限制,沒計錯應該都沒有了,主要 bios 的 int13h 呼叫早就已經納入 int 13 extended call,可以正常 access 於 1024 cylinders 以外資料之外,相關 boot trap code 這類也已經支援修正。 以上是我個人所知道的項目,如有問題歡迎任何指教與指正 :-) -- 相信一種真誠存在於心與心之間... -- * Origin: ★ 交通大學資訊科學系 BBS ★ <bbs.cis.nctu.edu.tw: 140.113.23.3>
文章代碼(AID): #135Y7L00 (FreeBSD)
文章代碼(AID): #135Y7L00 (FreeBSD)