Oberon/ETH Oberon/bootstrap
本文件最初託管於 ETHZ。它仍在 ETH 許可 下,並存放在 WayBack 存檔 中。
本文件的目的是以系統化和漸進的方式解釋如何從無到有地啟動作業系統(即引導機制),從最簡單的單一作業系統設定,到更復雜、更需要多引導管理器的設定,包括引導載入程式的級聯。每個作業系統在安裝介質上都有自己的引導扇區,這裡將回顧其中幾個,但將重點強調通用性,以方便理解用於啟動作業系統的機制的細節。
啟動作業系統的替代方法將按以下順序進行回顧
- 直接從軟盤引導:軟盤是一種單分割槽儲存介質(本文件中有描述)
- 透過(可能包含多個分割槽的)海量儲存介質的 MBR 間接引導分割槽
- 透過 引導管理器 引導,通常在多個作業系統環境中使用
- 透過 另一個作業系統 間接引導,例如透過 DOS 使用 noboot.exe(Oberon)或 loadlin.exe(Linux)
- 引導一個 託管在檔案中的虛擬作業系統(在 FatFS 或 Linux FS 中)
該方法通常適用於大多數作業系統,但重點放在我們感興趣的作業系統 ETH Oberon 上。
這部分對於所有基於 x86 的機器來說是通用的,但根據不同製造商提供的 BIOS,會觀察到一些差異,並且 BIOS 設定也可能因機器而異。
在系統完成開機自檢 (POST) 後,BIOS 載入程式會生成一個 INT 19。通常,INT 19 會嘗試從第一個軟盤驅動器讀取引導扇區(參見下一節“直接從軟盤引導”)。如果在軟盤上找到了引導扇區,該引導扇區將被讀入記憶體位置 0000:7C00,並且 BIOS 檢查該扇區的最後兩個位元組是否為“55 AA”。如果正確,該程式將跳轉到記憶體位置 0000:7C00 以執行負責載入和啟動作業系統的引導載入程式(它從核心開始)。
如果最後兩個位元組不包含“55 AA”簽名,則會顯示一個依賴於 BIOS 的訊息,例如“非可引導磁碟”或“非系統”,並且機器將停止執行。
但是,如果在第一個軟盤驅動器上沒有找到引導扇區,INT 19 會嘗試從第一個硬碟讀取 MBR。如果找到 MBR,它將被讀入記憶體位置 0000:7C00,並且 INT 19 將跳轉到記憶體位置 0000:7C00。MBR 中的小程式將在簡單情況下嘗試在其分割槽表中找到一個活動(可引導)分割槽。或者,它可以是引導管理器程式的起始部分。
按下 Ctrl-Alt-Del 鍵時也會呼叫 INT 19。在大多數系統中,Ctrl-Alt-Del 會導致在呼叫 INT 19 之前執行簡短的 POST 版本。
一種啟動作業系統的簡單而穩定的方法,缺點是速度相對較慢。大多數製造商建議建立救援軟盤,以便在啟動相關作業系統時遇到困難時使用。
先決條件是
- 機器必須配備軟盤驅動器。對於較新的非傳統機器來說,情況並非如此。
- BIOS 設定必須優先考慮軟盤驅動器。如果安裝了兩個軟盤驅動器,則可以透過 BIOS 設定或在較舊的機器(其 BIOS 不支援軟體切換)中切換電纜來切換 A 和 B 驅動器。
- 必須提供一張可引導軟盤。對於 ETH Oberon,請參見 軟盤支援。
優勢:消除了安裝 MBR 或引導管理器時可能遇到的困難。
完整的 ETH Oberon 引導載入程式 (OBL) 彙編程式碼位於 OBL.Asm 中,其編譯後的形式位於 OBL.Bin 中。
當執行 Partitions.Format 命令 時,OBL 寫入 Oberon 分割槽(型別 76)中的前 4 個扇區。一個分割槽佔據整個軟盤。對於海量儲存裝置上的分割槽來說也是如此。不同之處在於,在後一種情況下,OBL 在 MBR 中的第一階段載入程式之後成為第二階段載入程式。
引導扇區的結構是
當 Oberon 執行時,可以透過執行以下命令顯示引導扇區:Partitions.ShowBlocks dev#part 0 1 ~。可以使用您喜歡的作業系統或第三方軟體(商業版、共享版等)的功能獲取相同的資訊。
閱讀 Hale Landis 編寫的 "它是如何工作的:DOS 軟盤引導扇區"。
閱讀 "示例引導扇區"
2008 年 3 月 19 日 - 版權所有 © 2002 ETH Zürich。保留所有權利。
電子郵件:oberon-web at inf.ethz.ch [已過期]
主頁:http://www.ethoberon.ethz.ch/ [已過期]