跳轉到內容

啟動管理器

來自Wikibooks,開放世界中的開放書籍

啟動管理器和本文件由André Fischer編寫,現在在ETH SVN儲存庫中根據ETH許可證維護。那裡相關的七個檔名稱以“BootManager”開頭。

Bluebottle啟動管理器及其與類似產品的關聯 - 2008年2月13日

啟動機制理論的簡要介紹

[編輯 | 編輯原始碼]

啟動作業系統可以看作是三個過程的序列

  ▪ 以機器為中心的程序:BIOS定位可啟動卷

當計算機開啟時,計算機的BIOS會找到主可啟動裝置(由使用者在BIOS設定中定義),並將控制權轉移到主引導記錄(MBR),即引導卷第一個磁軌上的第一個扇區(512位元組)。隨著固態裝置/磁碟與傳統硬碟的競爭,更通用的術語“卷”優於“硬碟”、“裝置”或“HDD”。DOM(磁碟模組)和快閃記憶體驅動器也是線性組織的大容量儲存裝置。由於快閃記憶體驅動器中沒有任何機械驅動,因此該名稱是一個誤稱。實際上,分割槽有時被稱為“卷”,但這似乎不合適。

卷要麼被分割槽,要麼只有一個分割槽。後者的情況,其中卷可以稱為“超級軟盤”,此處不予考慮。術語“塊”,通常在Bluebottle中使用(參見LBA邏輯塊地址),等同於“扇區”,它與硬碟的物理形狀有關。一個塊儲存512位元組。分割槽要麼是主分割槽,要麼是擴充套件分割槽。後者是一個容器,可以容納一個或多個邏輯驅動器。根據微軟的說法,邏輯驅動器的工作方式類似於主分割槽,但不能用於啟動作業系統。對於AOS系統,術語“邏輯驅動器”更恰當地替換為“邏輯分割槽”,因為容器是透明的。

備註

AMI、華碩、Award、技嘉、英特爾、鳳凰和其他BIOS的行為各不相同,並且存在許多版本。對USB的不同級別支援進一步複雜化了問題。一些PC可以從USB啟動,而另一些PC有USB但不能從中啟動。當從USB裝置啟動失敗時,要麼是PC,要麼是裝置出現故障。硬體和軟體存在於無限數量的組合中,在特定環境中預測啟動管理器行為是困難或不可能的。其餘文字散佈著在各種產品品牌中遇到的特殊情況的示例。儘管存在這些困難,但啟動管理器已成功用於許多Shuttle、Qbic和華碩機器以及英特爾主機板。

  ▪ 以啟動管理器為中心的程序:使用者選擇要引導到的分割槽。

啟動作業系統的傳統方法是載入並執行MBR中的程式碼,然後載入並執行“活動”分割槽的分割槽引導記錄(PBR)中的程式碼,如MBR中的分割槽表中所述。此概念僅適用於主分割槽,不適用於邏輯分割槽,並且此啟動管理器會忽略它。此啟動管理器提供的替代方法是載入並執行另一個卷的MBR,就像BIOS將控制權轉移到引導卷的MBR時一樣。

MBR包含啟動管理器階段1。鑑於MBR的大小有限,階段1除了載入並將控制權轉移到位於第一個卷磁軌上的階段2(緊隨MBR之後,見下文第1節)之外,幾乎不做其他操作。階段1還透過唯一的簽名驗證載入的階段2是否有效。

階段2接收到控制權後,會顯示一個可啟動作業系統的文字選單。選擇目標作業系統會導致啟動。它還可以準備自動啟動在進行重新啟動之前最後一次選擇的作業系統(請參閱使用者友好性)。

在系統啟動時,只有BIOS驅動程式可用於訪問卷,幸運的是,現代BIOS包含P-ATA、S-ATA、ATAPI和USB驅動程式,足以從各種卷啟動作業系統。Firewire BIOS支援目前很少見,並且沒有進行探索。當BIOS支援擴充套件INT 13h時,啟動管理器支援邏輯塊地址(32位LBA)模式。簡單的INT 13h的CHS模式要求PBR(任何分割槽的第一個塊)駐留在8.4GB邊界以下。32位LBA模式使得可以定址2TB的儲存空間。不支援48位LBA模式。BIOS設定控制定址模式。

  ▪ 以作業系統為中心的程序:PBR將控制權轉移到特定於作業系統的引導載入程式,該引導載入程式查詢並載入核心。作業系統啟動。

例如,位於分割槽開頭的Bluebottle引導載入程式OBL.Bin查詢並載入與引導卷特性匹配的核心,即

        ▪ P-ATA/S-ATA大容量儲存裝置上的AosIDE.Bin
        ▪ ATAPI CD-ROM上的AosIDE.Bin,用於生成Live CD - https://en.wikipedia.org/wiki/Live_CD
        ▪ USB大容量儲存裝置上的AosUSB.Bin,用於生成Live USB - https://en.wikipedia.org/wiki/LiveUSB

Trace是在引導載入程式釋放控制權後執行的第一個核心模組。在2007年底之前,執行的第一個核心模組是Machine。

功能概述

[編輯 | 編輯原始碼]

非侵入式多引導管理器,旨在控制每個連線的最多8個捲上的最多12個主分割槽或邏輯分割槽,即在機器啟動時被BIOS識別。

可以與存在於機器其他捲上的其他啟動管理器共存。檢測卷的MBR中是否存在GAG、GRUB、LILO和Windows。

使用Bluebottle安裝,也可以從Live CD安裝,就像用於安裝Bluebottle一樣,安裝在各種捲上

        ▪ 可以從包含的BootManager.iso檔案燒錄可引導CD-ROM
        ▪ 可以從包含的BootManager.Bin檔案建立可引導軟盤
        ▪ 或直接使用WMInstaller安裝到卷的MBR上

保留MBR分割槽表的完整性和Windows Vista在MBR中使用的磁碟簽名的完整性。

不需要專用的分割槽。

可以安裝在任何捲上並從中執行,包括內部或外部、固定或可移動的卷,包括USB-FDD和CD-ROM。

能夠啟動安裝在2TB以下邊界的分割槽中的作業系統(32位LBA模式)。

結合日常工作中的易用性和與無處不在的外部USB和其他儲存裝置相關的機器裝置和卷控制的非常專業的檢查。

使用匯編語言(Nasm語法)編寫,開原始碼包含在Bluebottle發行版中。

本文件詳細介紹了它與一些其他競爭對手的啟動管理器的關係以及如何與它們共存。

功能詳解

[編輯 | 編輯原始碼]

Bluebottle啟動管理器圍繞傳統MBR設計,大多數機器上都有傳統MBR,在分割槽表中為四個16位元組的分割槽表條目提供空間。一個條目可由擴充套件分割槽使用,邏輯分割槽可以以任意數量連結到該分割槽。沒有考慮像Ranish分割槽管理器這樣的具有其他分割槽表組織的啟動管理器來打破4的限制。也沒有考慮提議的英特爾EFI標準。

1. 給定捲上的物理位置
它包括LBA=0處的MBR和位於“磁軌0”剩餘空間中的少量塊。該範圍內的塊通常未使用,並填充為0,除非安裝了第三方啟動管理器。例如,GRUB和Boot-US就是這種情況。“磁軌”與卷的物理組織有關,因為它以前存在。如今,每磁軌的扇區數是一個邏輯值。
第一個分割槽通常在安裝作業系統期間建立和格式化,這會修復使用的第一個LBA。在大多數情況下,工廠新卷會被格式化並預裝作業系統。使用的第一個LBA編號隨卷幾何形狀而變化,更準確地說,是每磁軌的扇區數。以下值可以觀察到作為第一個使用的LBA編號
        ▪ 例如,在安裝了Windows Vista的大容量捲上,LBA = 2048
        ▪ LBA = 63是USB和HD卷< 100 GB的標準
        ▪ LBA = 32在CD-ROM FDD模擬(見下一節)和工廠新ZIP 100捲上
        ▪ LBA = 16在工廠新的32MB磁碟模組(DOM)上

目前,13個塊被程式碼和資料佔用,兩個塊是專用的工作區。

2. 可以安裝它的卷

它可以安裝在PC的任何捲上並從中執行,無論是內部還是外部,固定還是可移動的。這已在各種介質上進行了測試:3.5英寸軟盤(僅限USB-FDD)、2.5英寸和3.5英寸HDD(P-ATA、S-ATA)、模擬軟盤的CD-ROM(使用Bluebottle、Nero、Magic ISO燒錄)、USB快閃記憶體(SD、CF)、固態磁碟(例如DOM)和USB-ZIP(僅測試了Iomega ZIP 100MB)。它可以單獨安裝,無需分割槽卷或安裝作業系統,從列出的容量極小的1.44MB軟盤就可以看出這一點。當單獨安裝在CD-ROM或USB-FDD上時,它可以在不干擾常規引導卷的MBR或引導管理器的的情況下使用。稍後可以決定是否將其安裝在常規引導捲上。它非常通用,並且由於它可以安裝在同一臺機器的多個捲上,因此它有資格成為多引導管理器。

它安裝的每個卷,只要BIOS可以訪問/引導(參見引言中的備註),都可以控制機器以啟動特定的作業系統。顯然,BIOS設定中的裝置優先順序順序將定義要首先引導哪個卷以及訪問它們的順序。

承載Bluebottle分割槽的卷

Bluebottle的佔用空間非常小,這意味著在一個相當大的捲上,人們要麼會發現幾個Bluebottle分割槽(可能與其他作業系統共存),要麼在一個小尺寸捲上發現一個分割槽——從最小的62MB起。在後一種情況下,USB-HDD快閃記憶體(USB快閃記憶體盤)是承載整個作業系統及其應用程式的理想儲存介質。無需將笨重的個人電腦拖到辦公室或出差。只需將快閃記憶體盤插入個人電腦並啟動Bluebottle即可。鑑於快速的資料傳輸、高容量和其他技術進步,USB快閃記憶體驅動器(UFD)越來越受歡迎。只要BIOS和USB裝置本身支援從USB引導,就可以接管機器而無需訪問(寫入!)機器的內部儲存,也無需在內部硬碟驅動器上進行永久安裝。如果無法從USB引導(例如,舊的BIOS可能禁止它),則可以從CD-ROM或USB-FDD引導以引導USB裝置(參見第5節)。

這裡值得一提的是一種特殊情況:在一個非常小的捲上,例如64或128MB,不僅設想多個分割槽是不合理的,而且單個工作的Bluebottle也只會剛好適合,沒有空間用於使用者資料。在這種情況下,最好格式化一個不包含核心和程式的單個分割槽。然後,此分割槽僅可作為資料儲存使用,並且永遠不可引導。但是,它會在分割槽列表中顯示。

BIOS卷檢測和列舉
在引導管理器控制下,USB裝置受BIOS的限制,BIOS會檢測和列舉它們。參見“Compaq、Intel、Phoenix BIOS引導規範1.1”。在這方面,BIOS表現出不友好的行為,因為卷列舉取決於不同卷的特性:有些被識別,有些則沒有。

卷從左到右列出,可以識別出兩組
  ▪ 識別為80h、81h、82h等-傳統“固定”磁碟,現在
包括支援換線的可移動介質裝置
  ▪ 識別為00h的FDD-傳統“可移動”磁碟(CD-ROM、USB-FDD、USB-ZIP)。

只考慮其中一個:當它是引導裝置時,它將是CD-ROM;如果BIOS將其識別為USB-FDD,則它將是USB-FDD。

引導卷始終顯示在最前面,其型別(HDD或FDD)決定了哪一組首先列出。最多可以同時控制8個卷。在如今可以將大量廉價且無處不在的外部USB儲存裝置連線到PC的時代,這是一個重要的設計考慮因素(參見第3節)。

從CD-ROM(模擬FDD)引導

CD-ROM必須符合El Torito可引導CD格式,使用CD上的檔案模擬軟盤。BIOS將引導卷識別為00h,它位於其組中的第一個且唯一的卷,後面跟著ATA HDD和USB-HDD。包含的BootManager.iso檔案是分發Bluebottle引導管理器的最佳工具。

從USB-FDD引導

只有將軟盤載入到USB-FDD中才能使用它。考慮到PC現在很少配備傳統的FDD,這些裝置不再受支援,並且被簡單地忽略。如果存在FDD,則甚至無需在BIOS設定中停用它。

從內部P-ATA HDD引導

BIOS將引導卷識別為80h,然後是其餘的ATA HDD,最後是USB-HDD。

從外部USB-HDD或USB-ZIP引導

BIOS將引導卷識別為80h,然後是ATA HDD,最後是其餘的USB-HDD。

在一臺機器上,卷被標記為“n.a.”表示“不可訪問”(對此奇怪的情況沒有解釋,BIOS返回正確的卷計數但無法訪問它們)。

當高速USB 2.0裝置連線到USB 2.0集線器時,此裝置以USB 1.1速度(12MB/s)受支援。只有在作業系統安裝驅動程式之後,才會建立高速資料傳輸。在Disk2go裝置上可以觀察到速度差異,該裝置用綠色LED指示12MB/s的速度,在高速時亮紅色。

BIOS引導卷順序由BIOS設定控制

根據BIOS的不同,可以透過按DEL、PF2或PF1呼叫設定。可以更改引導卷順序。在修改設定時,請記住停用FDD,如果提供“即插即用作業系統”供選擇,請使用“否”。或者,可以保留BIOS設定不變,並在呼叫BIOS引導選單後選擇引導卷(通常在系統啟動時按ESC或PF8,具體取決於BIOS)。

請參閱機器所屬的使用者指南(BIOS設定部分)。

支援大卷大小

LBA定址方案用於每個分割槽表條目中保留的32位。鑑於塊大小為512位元組,可以定址高達2'048 GB的卷。引導管理器還可以透過將LBA對映到其CHS等效項來使用CHS定址方案。測試擴充套件INT 13h支援的存在指示是否需要對映。當使用CHS定址方案(使用24位地址)時,卷大小限制為8GB,這在當今環境中很少見。

3. 獨立於主機作業系統

如果PC和連線的USB快閃記憶體可以從USB引導,則插入安裝了Bluebottle的快閃記憶體的使用者將找到使用硬體的最佳和最安全的情況,而無需使用或更改機器駐留的作業系統或可能的第三方引導管理器。當USB卷配置時,安全級別最高,必須使用AosUSB.Bin核心,但不能訪問IDE卷。如果需要,可以透過執行ATADisks.Install ~啟用IDE驅動程式模組。之後,任何IDE分割槽都可以在使用者自己的風險下掛載和訪問。

所有這些都可以使用非常原始的MBR來實現,但是Bluebottle引導管理器提供了額外的價值,它能夠完全控制機器的卷和分割槽,從而在某種程度上充當主機。

當無法做到這一點時,它允許將控制權轉移到主機MBR管理器,而不會以其他方式干擾,也不需要重新引導。Bluebottle引導管理器是合作且非侵入性的(參見第5節)。

那些可能猶豫是否安裝Bluebottle引導管理器的人,可以選擇將Bluebottle包含在某些第三方作業系統的引導選單中,例如Windows Vista。

4. 使用者指南
這是一個示例選單,可以在BootManager啟動時訪問。

======================================================
Bluebottle BootManager 28/01/2008
GenuineIntel                Intel(R) Pentium(R) 4 CPU 3.0GHz
64-bit processor  Family 0Fh Model 04h Cores: 1 Logicals: 2 HT: Y
BIOS/MBR 80 detected volumes:
>80 117M  >81 19G   >82 9G
 USB           IDE          IDE
 ^^^^^^
Volume 80 (Mode LBA 5) - MBR: Bluebottle  - Vol. signature @ 1B8h: 66 0D 67 0D
   Partitions: (those marked in red cannot be accessed)
1 OBERON      4C
Enter one of the following:
  the number of a partition hosting an OS to start
              Set ScrollLock to halt Bluebottle start-up.
            Selection will replace current default vol. xx , part. yy
        n(ext) or  p(revious) volume ^^^^^^
        v to toggle graphic VBE info
        i to toggle PCI vendor/device info
        l to toggle 25/50 lines
        s to switch to MBR on selected volume
======================================================

每當啟動時,引導管理器都會報告CPU特性

  ▪ CPU型別:Intel、AMD、Via(正式名稱為IDT/Centaur)或其他
        注意:僅在少量CPU樣本上進行了測試。
  ▪ 速度
  ▪ 位寬(32位或64位)
  ▪ 是否支援超執行緒
  ▪ 核心、邏輯處理器、執行緒的數量

下一行(以紅色突出顯示)顯示從哪個卷提取了MBR/引導管理器。正是這段程式碼生成了向用戶顯示的報告。大多數情況下,它是引導卷的MBR,除非使用者請求切換到另一個卷的MBR(參見下面的響應“s”)。

在後續行中,BIOS檢測到的所有卷都從左到右列出,從引導捲開始(第2節)。此外,將檢查該卷的分割槽表(如果有),並顯示所有駐留分割槽列表。從那裡,可以選擇一個合適的分割槽來啟動作業系統,前提是它已正確安裝。否則,可以選擇另一個卷(如果有),併為其重複相同的檢查分割槽表的過程。透過輸入“n”表示“下一個”或“p”表示“上一個”來選擇卷。當前選擇的卷在下行中用6個“^”字元的字串下劃線表示。

對於訪問的每個卷,都會顯示主引導記錄(MBR)的型別。檢測到Bluebottle、GRUB、LILO或Windows(用“Foreign”表示)引導管理器的存在。因此,無需在所有捲上安裝Bluebottle引導管理器。其他現有的MBR和引導管理器仍然可以呼叫並且完全可以執行。這可以透過對提示文字響應“s”來完成,這同樣適用於引導管理器本身。

根據請求,它還會顯示
  ▪ 圖形控制器支援的VBE VESA模式列表(在響應提示時輸入“v”)。Bluebottle需要使用線性幀緩衝區的VESA模式。會生成一個合適的模式列表,其中模式顯示為3位綠色值。此類值是配置資料元素“Init=”的重要引數。安裝Bluebottle時,“Init=117”將作為預設值建立,對應於1024 x 768 x 16的解析度,大多數圖形控制器都支援此解析度。使用者可能希望在列表中選擇具有更好解析度的VESA模式,以便在啟動Bluebottle時使用。

  ▪ 已安裝的PCI裝置列表(在響應提示時輸入“i”)

文字顯示在50行80個字元的行上,相比於預設的25行佈局。輸入“l”可切換行數。引導管理器強制執行50行模式而不是預設的25行模式。經驗表明,切換實際上沒有必要,除非圖形控制器不支援50行模式(這種情況尚未遇到)。

任何無效的輸入都會得到確認:“無效輸入,請重試”

總之,它指導使用者

  ▪ 每天啟動首選的作業系統
  ▪ 每天在已安裝的多個(可能是不同的)作業系統中選擇並啟動一個
  ▪ 有時恢復由於卷主引導記錄損壞而導致無法訪問的作業系統
  ▪ 偶爾檢查機器裝置並確定它是否適合執行Bluebottle,特別是在考慮購買時。請記住驗證機器是否允許從USB引導,這確實是一種非常有用且值得推薦的功能。另請參見第5節。

5. 它可以啟動的作業系統
它可以啟動位於
  ▪ 它所在的捲上,以及
  ▪ 另一個捲上。

TUI允許選擇卷並選擇啟動哪個作業系統,而無需考慮其他類似系統中通常定義的啟動順序。作業系統透過訪問PBR的方式啟動,就像BIOS與MBR合作一樣。

每個選定的卷最多可以列出12個分割槽。請記住,擴充套件分割槽無法訪問,但在列表中會顯示為紅色。

假設將安裝了可啟動AOS的USB-HDD插入無法從USB啟動的機器,那麼仍然可以透過CD-ROM啟動,然後啟動USB上的AOS。除了啟動順序外,無需對機器進行任何更改。

相容所有Windows版本。相容x64(AMD62/EM64T)和Windows 64位(非GPT)。

最後但並非最不重要的一點是,任何捲上的引導管理器都可以用來啟動位於另一個捲上的作業系統,該作業系統使用不同的引導管理器(例如GRUB),或者MBR已損壞但分割槽表完好的卷。

6. 不需要特殊分割槽
它既不佔用分割槽,也不放置在分割槽內(參見第1節)。

7. 使用者友好性
引導管理器將報告它能夠獲取到的有關機器上存在的卷及其分割槽的所有資訊。它不依賴於使用者提供的配置資料,並且無需配置。儘管報告真實,但它並非全部真相,例如定義了分割槽但沒有安裝和可啟動的作業系統的情況。引導管理器無法應對此類使用者責任情況,並且會在沒有回退或警告的情況下中止。

它會優雅地將其塊之一(LBA編號12)中最終選擇的卷和分割槽記憶下來,以便啟動所需的作業系統,除非它是從CD-ROM執行(原因很明顯),或者從FD執行,因為FD被認為僅用於啟動作業系統,而不是真正繫結到任何機器。

下次啟動機器時,將自動啟動相同的作業系統,無需使用者干預。

但是,如果使用者希望啟動不同的作業系統,則在MBR接管控制權之前立即設定ScrollLock鍵,將停止引導管理器執行,並顯示提示文字以選擇其他選項。

全新安裝後,預設卷和分割槽未定義,其執行將必然停止以與使用者互動。

它不會(應該不會!)損壞安裝在卷的第一軌道上的外部引導管理器(GRUB、Boot-US)。

8. 無“活動”分割槽概念
它允許透過鏈載入機制啟動作業系統,而無需依賴於“活動”分割槽的檢測(甚至不是Windows分割槽)。

發行版中包含的材料

[編輯 | 編輯原始碼]

 1. BootManager.Text - 本文件
 2. BootManager.Asm - Nasm語法原始碼
 3. BootManager.Bin - 彙編後的BootManager = Stage 1 + Stage2
 4. BootManager.iso - 用於燒錄CD-ROM的ISO檔案
 5. BootManagerNull.Bin- 用於生成BootManager.iso的512位元組幫助檔案

庫存檔案BootManager.Bin、BootManagerMBR.Bin和BootManagerTail.Bin可從儲存庫獲取,https://svn-dept.inf.ethz.ch/svn/lecturers/a2/trunk/source/。提交使用者名稱infsvn.anonymous和密碼anonymous。建立這些檔案的說明如下。

如何建立、安裝和啟動引導管理器

[編輯 | 編輯原始碼]

1. 使用網路彙編器語法編寫彙編程式碼

使用Nasm程式碼編寫,在真實模式下執行。從BIOS接收控制權,並具有以下介面

  ▪ MBR載入到地址7c00h
  ▪ 暫存器dl包含引導卷識別符號。從CD-ROM或USB-FDD啟動時為0,從分割槽卷啟動時為80h。

引導管理器處於控制狀態時,會提示使用者選擇將控制權轉移到

  ▪ 可啟動分割槽的PBR以啟動作業系統,假設它已正確安裝,
  ▪ 或另一個卷中的MBR(它甚至可以將控制權轉移給自己)。

2. 彙編程式碼
2.1 在Oberon中,將Oberon文字轉換為純ASCII,準備進行Windows/DOS處理:Miscellaneous.MakeDOSText name.Asm => name.ASC ~

2.2a 在DOS中:使用網路彙編器彙編源文字*.ASC

2.2b 在Windows中:在DOS視窗中使用ansmw.exe。命令引數詳細資訊:nasmw -h

2.3 在Oberon中,使用Backup.ReadFiles name.BIN ~讀取.BIN檔案

此時,您擁有包含6656位元組[1]的BootManager.Bin。即13個512位元組的塊。BootManager.Bin可從儲存庫獲取, https://svn-dept.inf.ethz.ch/svn/lecturers/a2/trunk/source/

3. 生成安裝資料
3.1 對於分割槽卷,步驟2中獲得的BootManager.Bin由WMInstaller處理並拆分為

  ▪ 放置在MBR中的一個塊,以及
  ▪ 放置在LBA 1到12塊中的12個塊。

這兩個部分也可從儲存庫中作為檔案BootManagerMBR.Bin和BootManagerTail.Bin使用。

3.2 對於FD,步驟2中獲得的BootManager.Bin可以直接使用,無需進一步操作(轉到4.3)。

3.3 用於燒錄可啟動CD-ROM的ISO映像檔案
使用與I386.Aos.Tool中建立新發行版相同的方法。在Oberon中,執行以下命令

Configuration.DoCommands
OFSTools.Mount SYS RamFS 200000 4096 ~
System.DeleteFiles AOS:BootManager.iso ~
FileDisks.Open SYS:AosCD.Dsk 600 ~
Partitions.Format SYS:AosCD.Dsk#0 AosFS 0 BootManagerNull.Bin ~ (boot file reserve size must be multiple of 4)
Partitions.FileToPartition SYS:AosCD.Dsk#0 BootManager.Bin 0 13
FileDisks.Close SYS:AosCD.Dsk ~
Aos.Call \w IsoImages.Make AOS:BootManager.iso SYS:AosCD.Dsk ~
OFSTools.Unmount SYS
~ 

注意:BootManagerNull.Bin是一個填充有00h的512位元組檔案,它代替了AosIDE.Bin或其他核心。

然後使用發行版中包含的映像檔案BootManager.iso燒錄可啟動CD-ROM(參見第4.4節)。

4. 安裝引導管理器
4.1 安裝計劃

如果卷已託管多個作業系統,則應首先計劃
  ▪ 收集有關當前卷組織的資訊:卷大小、分割槽數、作業系統型別、引導管理器的存在。

所有這些都可以輕鬆地使用Bluebottle Partitions工具完成:按照主選單>檔案>分割槽或使用Oberon Partitions.Tool:執行Partitions.Show detail ~
  ▪ 備份當前卷的MBR,並在必要時備份某些引導管理器使用的軌道0中的其餘塊。

這可以透過上述Bluebottle Partitions工具完成,然後選擇“ToFile”,或者使用Oberon Partitions.Tool:執行Partitions.PartitionToFile dev#0 MBRBackup.Bin 0 1 ~可能需要儲存多個塊。可以透過執行以下命令檢查此檔案:Hex.Open MBRBackup.Bin ~

如果遇到問題,可以透過執行以下命令恢復MBRBackup.Bin檔案

Partitions.WriteMBR dev#0 MBRBackup.Bin ~

4.2 在分割槽捲上執行,在AOS中

WMInstaller.Open ~

並按照說明操作。

或者,在Oberon或AOS中使用以下命令。

Partitions.WriteMBR dev#0 BootManagerMBR.Bin ~
Partitions.FileToPartition dev#0 BootManagerTail.Bin 1 12 ~

4.3 在可啟動CD-ROM上

在主選單中,依次選擇>檔案>CDRecorder>工具>燒錄ISO映像

然後瀏覽以找到BootManager.iso並燒錄CD-ROM。儘管如此,建立的CD_ROM不能保證在任何機器上都可讀。最好使用Nero等第三方軟體。MagicISO是另一種此類軟體。

4.4 在軟盤上

可能只需要臨時啟用FDD才能將引導管理器安裝到軟盤上,以便在USB-FDD上使用。

將DOS格式化的FD插入FDD,並在AOS中執行:Diskettes.Install ~

導航>檔案>分割槽>選擇一個分割槽>分割槽>從檔案>

檔名:BootManager.Bin / 偏移量:0 / 塊數:13

或在Oberon中

Diskettes.Install ~ Partitions.FileToPartition Diskette0#0 BootManager.Bin 0 13 ~

(13 = 1個MBR + 12個塊)

5. 啟動引導管理器
啟動PC並將其(透過BIOS設定或啟動選單)引導到其所在的卷。

要開啟BootManager選單,請使用ScrollLock鍵或按住Ctrl、Alt或Shift鍵,如A2啟動順序下的表格和腳註(2a)和(5)中所述。

6. 安裝新作業系統時,Bluebottle引導管理器會發生什麼?
如果安裝或重新安裝了另一個作業系統,該作業系統覆蓋/替換了MBR以用於其自身目的,則可以輕鬆恢復Bluebottle MBR。例如,Windows安裝有效地替換了MBR。因此,在重新安裝Bluebottle MBR之前,需要使用者處理才能保證Windows的完整性,否則Windows安裝將失敗。如果像Ubuntu這樣的作業系統建議安裝GRUB,則可能會出現兩種情況:GRUB安裝在MBR中,最終會覆蓋Bluebottle引導管理器,或者安裝在分割槽中(可能是專用的分割槽),不會發生干擾。

7. 如何恢復作業系統的原始MBR
在Oberon中,執行Partitions.WriteMBR dev#0 MBRBackup.Bin ~

8. 如何在啟動Bluebottle時訪問其他卷
通常,Bluebottle配置為包含其所在卷的磁碟驅動程式,即使用的核心是AosIDE.Bin或AosUSB.Bin。因此,請確保在需要時安裝另一個驅動程式。命令如下
  ▪ ATADisks.Install
  ▪ UsbHubDriver.Install,然後是UsbUhci.Install

競爭引導管理器

[編輯 | 編輯原始碼]

為控制多引導系統提供了各種引導管理器。以下是一些非詳盡的列舉:Windows(各種型別)的內建引導管理器、GRUB、GAG、LILO、BootIt、Boot-US。選擇一個合適的引導管理器並不容易,但在大多數情況下,一個甚至兩個引導管理器是作業系統發行版的一部分。一個好的選擇是將引導管理器的選擇和安裝委託給作業系統安裝程式。在安裝時,這可能不是什麼大問題,但應充分了解其影響。

引導管理器爭奪第一軌道的空間,或者至少爭奪MBR。殘酷的事實是一個引導管理器可以抹掉另一個引導管理器。一些安裝程式透過將現有作業系統整合到引導選單中來修復損壞。對於大多數提供安裝GRUB或LILO(檢測Windows和其他Linux分割槽的存在)的Linux發行版來說,情況就是這樣,但Windows卻忽略了除自身之外的所有作業系統。Windows會毫不猶豫地抹掉MBR。不幸的是,可以理解的是,GRUB、LILO和Windows都沒有檢測到AOS分割槽的存在。

在作業系統安裝時,可以選擇不安裝建議的引導管理器,但這假設知道如何修剪現有引導管理器的引導選單。對於那些不想採用Bluebottle引導管理器的人,提供了有關如何在他們首選的引導管理器中繫結AOS的說明。請參閱“如何使用其他引導管理器啟動AOS”。總的來說,這些說明也適用於其他作業系統。

引導管理器以多種方式安裝,總結如下

  ▪ 位於MBR(LBA=0)以及第一磁軌限制內的後續塊中。GRUB就是一個例子,Bluebottle引導管理器是另一個。LILO佔據MBR,僅此而已。
  ▪ 位於一個專用的主分割槽中,佔用MBR分割槽表中4個可能條目中的一個。GRUB就是一個例子。
  ▪ 位於承載作業系統的分割槽中。Windows Vista和其他Windows版本以這種方式安裝其引導管理器。GRUB也可以安裝在Linux分割槽中,甚至可以安裝在交換分割槽中。LILO安裝在Linux分割槽中。

最終,哪個引導管理器將佔主導地位,尤其是在MBR方面,將取決於作業系統在捲上安裝的順序。

建議
無論安裝順序是由使用者決定還是由環境決定,都希望採用合理的策略來安排作業系統的安裝順序。Windows通常是絆腳石。

安裝多個作業系統的操作複雜性,這裡只提供最基本的資訊。

NeoSmart網站記錄了成功達成目標所需的所有步驟,包括先安裝Vista或後安裝Linux。

  ▪ 將Linux新增到Vista引導載入程式 - https://neosmart.net/wiki/display/EBCD/linux
  ▪ Ubuntu Linux和Windows Vista雙啟動 - https://neosmart.net/wiki/display/EBCD/Ubuntu
  ▪ Fedora Linux和Windows Vista雙啟動 - https://neosmart.net/wiki/display/EBCD/Fedora

總之,儘可能先安裝Windows Vista,然後再安裝其他作業系統。

Bluebottle引導管理器的多引導功能基於鏈式載入機制:引導管理器將引導過程傳遞給另一個(引導管理器或引導載入程式)。它要求Vista引導管理器、GRUB、LILO、GAG或其他程式完成引導過程,從而最大限度地減少配置要求並確保與各種作業系統的最大相容性。

在這種情況下,可以啟動

  ▪ AOS在任何位置
  ▪ 安裝在主分割槽中的Windows Vista
  ▪ 安裝在Linux分割槽中的GRUB、LILO、GAG或其他引導載入程式的Linux

在Linux安裝過程中,請按照NeoSmart文件中描述的步驟操作

當系統提示設定引導載入程式時,請確保指定將GRUB、LILO、GAG或其他引導載入程式安裝到正在安裝Linux的分割槽中,而不是安裝到卷的MBR中。引導載入程式儲存在Linux稱為“超級塊”的分割槽開頭。

如果不是這種情況,即引導載入程式放置在MBR中,則無法啟動Linux分割槽。該分割槽將在Bluebottle引導選單中以紅色顯示,並顯示“無PBR”的提示。

要解決此問題,請按以下步驟操作

  1. - 從Live CD啟動,例如Ubuntu或Knoppix的Live CD
  2. - 開啟終端
  3. - 輸入:sudo grub
  4. - 對提示回覆

root (hdX, Y)
setup (hdX,Y)
quit

X是Linux分割槽所在的驅動器號 - 驅動器在啟動時由BIOS識別,編號從0開始

Y是分割槽號

setup在後臺使用“install”命令將GRUB安裝到指定的目標裝置中。

Bluebottle引導管理器可以鏈式載入分割槽的PBR。此時,控制權將轉移到駐留引導管理器,該管理器將直接或間接地透過準備好的引導選單啟動作業系統。始終可以安排避免顯示中間引導選單。

開發Bluebottle引導管理器的理由

[編輯 | 編輯原始碼]

鑑於有各種類似的引導管理器可供選擇,人們可能會質疑開發另一個引導管理器的必要性。那麼是什麼讓Bluebottle引導管理器與眾不同呢?下一節將對此進行回顧。

引導選單完全透過從BIOS在啟動時檢測到的所有卷的MBR和PBR中提取相關資訊來構建。

現在,外部卷可以輕鬆地插入機器(例如USB介面),人們可以很容易地看到其他引導管理器設想的引導選單的靈活性有多差。

其他引導管理器由引導選單控制,引導選單駐留在檔案系統中的某個位置,由安裝程式構建,然後由使用者在主機作業系統的控制下進行編輯。例如,GRUB建立menu.lst,LILO也是如此。

這種引導選單的主要缺點在新增或刪除分割槽並重新排序時真正顯現出來,這迫使使用者編輯選單。

因此,無需在預先或啟動時編輯、自定義或個性化多引導系統,也不需要超級使用者(sudo)的概念。

當分割槽移動時,也會出現類似的編輯任務:另一個引導管理器無法再找到PBR,必須重新安裝。同樣,在建立或刪除分割槽後重新編號分割槽時也需要編輯。對於Bluebottle引導管理器,這種修改的影響在時間上大大減少。例如,Bluebottle分割槽可能需要修改配置資料中的BootVol1=值。

在引導選單出現在螢幕上時,沒有需要在神秘命令中指定的選項。下面名為GRUB的部分中顯示了一些示例命令,但還有許多此類命令。相反,TUI是一個簡單的英語提示文字,等待鍵盤輸入單個字元的回覆。任何語言的鍵盤都適用,無需滑鼠。

時尚、短暫的TUI無法用啟動畫面裝飾。

它嚴格且僅使用BIOS驅動程式和卷識別符號:00h、80h、81h、…

使用者不必處理各種作業系統在裝置對映方面的特性: [hd0、hd1、hd2、…] 或 [sda、sdb、sdc、…] 或其他取決於引導管理器的對映。

承載競爭引導管理器引導選單的分割槽丟失是災難性的。在駐留在另一個捲上的Bluebottle引導管理器的幫助下,只要分割槽表沒有損壞,同一個捲上的大多數其他作業系統仍然可以啟動。

同樣,引導卷的MBR中出現Rootkit病毒也會發出訊號。同樣,大多數作業系統仍然可以啟動,直到卷修復為止,可能需要使用AOS。

在測試過的其他引導管理器中,沒有一個提供將控制權轉移到另一個捲上的另一個引導管理器的可能性,並使其表現得好像它是引導卷一樣。在某種程度上,BIOS引導選單變得多餘。其他引導管理器只允許在另一個捲上啟動作業系統。

恢復損壞的MBR可能令人沮喪且令人頭疼:什麼是修復系統或恢復磁碟?(在磁碟實際上已消失的時代)網路上找到的哪些文件與在很久以前安裝MBR的作業系統版本相關?

Windows Vista引導管理器
在Windows XP下,只需編輯boot.ini即可啟動另一個作業系統,而Vista則需要使用者付出更多努力才能說服其引導管理器與其他作業系統協作。相對容易配置的boot.ini檔案被一個二進位制檔案取代,該檔案必須使用名為bcdedit.exe的控制檯應用程式進行編輯。這可能會證明是一項繁瑣的任務,最好使用EasyBCD等附加應用程式來執行。當Bluebottle駐留在另一個捲上時,這是值得懷疑的。

Vista引導管理器駐留在Vista分割槽中,並具有以下特性(參見:http://linux.wordpress.com/2007/02/17/vista-and-solaris-express-dual-boot [失效連結])

  1.- Vista安裝程式要求捲上沒有分割槽處於活動狀態(或可引導狀態)。如果找到活動分割槽,安裝程式會顯示類似“此卷不適合安裝Windows”的訊息,並拒絕繼續。

  2.- Vista要求Windows分割槽處於活動狀態才能啟動。

  3.- Vista要求磁碟簽名(安裝程式使用的偏移量1b8h處的4個位元組)存在於MBR中才能啟動,否則它將拒絕啟動,並提示winload.exe已損壞。這是因為Vista的引導載入程式會檢查它。

Bluebootle引導管理器和GRUB確保在寫入MBR時4位元組磁碟簽名保持不變。

更多資訊可從以下網址獲取:http://www.windowsbbs.com/showthread.php?t=55415 [失效連結]。微軟在一篇白皮書中談到了這一點,並給出了一些奇怪的理由:http://www.google.co.in/search?q=OEMBoot_Vista [失效連結]

GRUB - Grand Unified Bootloader - 遺留 - 版本0.97 - https://www.gnu.org/software/grub
GRUB可以啟動Windows、MS-DOS、FreeBSD、NetBSD、OpenBSD、GNU Mach,並且包含在多個Linux發行版中。它有兩種風格:簡單的文字使用者介面或圖形介面。

從Ubuntu 7.10在一個捲上的測試中收集的筆記

在安裝GRUB期間,使用者可以選擇將GRUB安裝到引導卷的MBR中、Ubuntu Linux分割槽中或專用的小分割槽中。

當安裝在MBR中時,GRUB與Bluebottle引導管理器爭奪第一個卷磁軌中的空間。當它被安裝(作為安裝Ubuntu的副作用)時,它儲存在LBA=0到17的塊中,從而完全覆蓋現有的引導管理器。LBA=18到63包含全零。保留了原始MBR中的兩個區域,分割槽表和Windows Vista使用的磁碟簽名。

GRUB儲存選單檔案的位置,但檔案本身位於Ubuntu分割槽中。要啟動另一個作業系統(例如上面的Bluebottle),GRUB需要首先訪問Ubuntu分割槽以查詢鏈式載入程式命令。如果GRUB損壞並且無法訪問它,則Bluebottle將無法再啟動。使用Bluebottle引導管理器,它仍然可以在沒有GRUB幫助的情況下啟動。有趣的是,Ubuntu分割槽的PBR沒有有效的簽名,無法啟動。輔助交換分割槽也是如此。實際上,簡單的Ubuntu安裝將GRUB放置在MBR中,同時在Linux和交換分割槽的開頭留下空閒塊。使用者還可以選擇在安裝期間或稍後將GRUB安裝在Linux或交換分割槽中。然後,PBR將收到一個有效的簽名55aah,並被Bluebottle引導管理器識別為可引導的。

LILO - Linux載入程式 - lilo.go.dyndns.org
LILO能夠引導多個作業系統,包括Linux、Windows、MS-DOS等,在一些Linux發行版中使用。

從Mandriva Linux Spring 2007.1 - Mandriva Linux和DSL 2.4.4的測試中收集的筆記

在安裝Mandriva期間,使用者可以選擇安裝

  ▪ GRUB 圖形選單(參見上文 GRUB)
  ▪ GRUB 文字選單(參見上文 GRUB)
  ▪ LILO 文字選單

如果安裝在 MBR 中,LILO 將與 Bluebottle 引導管理器競爭 MBR 中的空間,僅此而已。使用者還可以選擇將其安裝在 Linux 分割槽中。

GAG - El Gestor de Arranque Grafico - https://gag.sourceforge.net/
GAG 可以從主分割槽或邏輯分割槽引導最多 9 個作業系統。它與 Bluebottle 引導管理器競爭第一個卷磁軌中的空間。它不安裝在分割槽中。解除安裝 GRUB 時,僅恢復 MBR,磁軌的其餘部分保持不變,即包含 GRUB 程式碼。GAG 無法訪問 USB 裝置(???)。

OSL2000 - https://www.osloader.com
OSL2000 與 Bluebottle 引導管理器競爭第一個卷磁軌中的空間。OSL2000 作為 Windows 安裝/解除安裝程式提供。安裝過程中,除了將其安裝在引導卷的 LBA=0 到 57 塊中之外,沒有其他選擇,並將覆蓋的任何資料儲存到備份軟盤中,以便在最終解除安裝時重新使用,從而恢復以前的狀態。

Boot-US - https://www.boot-us.de/
Boot-US 作為 Win32 程式提供,可以安裝在 MBR(僅在引導捲上)、專用的小主分割槽或舊版軟盤上。如果安裝在 MBR 中,它將與 Bluebottle 引導管理器競爭第一個卷磁軌中的空間。Boot-US 用自己的 MBR 替換現有的 MBR,並在 LBA=1 塊中放置其副本。這樣,在需要時可以刪除 Boot-US。然後,它的行為就像 Bluebottle 引導管理器一樣,並且不能與之共存。從 2.0.0 版開始,它可以引導 Windows NT/2000/XP/2003,但不能引導 Vista。

BootIt NG - Next Generation - https://www.terabyteunlimited.com/bootit-bare-metal.htm
BootIt NG 將自身安裝在卷的開頭,即用自己的 MBR 替換 MBR,並在引導捲上的第一個磁軌上佔用多個塊。因此,它的行為就像 Bluebottle 引導管理器一樣,並且不能與之共存。它也可以安裝在專用主分割槽中,這在最多 4 個分割槽的情況下可能會成為問題。

如何使用其他引導管理器啟動 AOS

[編輯 | 編輯原始碼]

當建立並格式化主分割槽或邏輯分割槽以承載 AOS 檔案系統(AosFS)時,它在開頭包含一個引導載入程式,負責定位和載入核心以及作業系統的其餘部分。PBR 中偏移量 1feh 處的“魔數”55aah 表示分割槽已格式化。因此,可以透過訪問 PBR 並將其控制權傳遞給它來啟動 AOS。這正是引導管理器在收到如下所述的指令時啟動 AOS 所使用的技術。在 Linux 行話中,這稱為鏈式載入。

例外情況是,一個旨在專門用作資料儲存庫的 AOS 分割槽可以在沒有核心和程式的情況下進行格式化。儘管存在有效的簽名 55aah,但由於缺少核心(參見承載 Bluebottle 的卷),這樣的分割槽是不可引導的。它只能在 AOS 中掛載/解除安裝。一個很好的例子是小型 USB-HDD(例如 62MB)或軟盤。在這兩種情況下,功能完備的 AOS 都無法容納,但它們都可以用作資料儲存。

當在安裝作業系統的過程中安裝以下任何一個引導管理器時,可以預期 Windows 或 Linux 分割槽將被識別,並且這些作業系統將包含在可引導的引導選單中。但是,在存在 AOS 的情況下,沒有一個會採取任何操作,這證明了下面為準備引導管理器以啟動 AOS 而提供的詳細資訊是合理的。

1. 安裝 Ubuntu 7.10 或 Google 的 gOS 時安裝的 GRUB
  ▪ 在 GRUB 選單中永久記錄啟動 AOS 的選項

在 Ubuntu 中,導航到應用程式 > 附件 > 終端以開啟終端,然後使用以下命令以管理員身份登入:sudo -s(在提示符下輸入管理員密碼)

注意:在基於 Ubuntu 的 gOS 中,導航到應用程式 > 系統工具 > UXTerm。

現在輸入以下命令

vi /boot/menu.lst

將游標置於要在選單中插入新文字的位置,輸入“i”以開始在 menu.lst 中插入這些行。

# This is for booting AOS residing in hd0,2 = IDE0#3 for example
title		AOS on hd0,2
chainloader (hd0,2)+1

輸入“:x”以儲存更新後的選單並退出編輯。

在 Debian Wheezy 中追加一行,例如

menuentry "Native Oberon" { chainloader (hd0,msdos7)+1 }

到 /etc/grub.d/40_custom。然後執行“sudo update-grub”以修改 /boot/grub/grub.cfg。“msdos”標識分割槽方案,“7”是分割槽號。Grub 手冊提供了更多詳細資訊。

  ▪ 從 GRUB 選單中動態控制啟動 AOS

啟動時出現 GRUB 選單時,輸入“c”以執行命令。然後依次輸入以下命令

chainloader	(hd0,2)+1
boot

此處需要引導命令,但在解釋 menu.lst 時會隱含該命令。

2. Windows Vista 引導管理器
優先使用 NeoSmart Technologies 的 [https://neosmart.net] 軟體 EasyBCD - 當前版本 1.7.1 - 免費下載。該工具易於使用:新增一個作業系統條目,命名它,指定 AOS 所在的分割槽,並儲存修改後的二進位制檔案 BCD(引導配置資料)。

在 Windows XP 及更早版本中,編輯 boot.ini 以指示內建引導管理器啟動另一個作業系統非常簡單,而 Vista 需要使用者付出更多努力才能說服其引導管理器與其他作業系統協作。boot.ini 被 BCD 二進位制檔案取代,在純 Vista 中,必須使用名為 bcdedit.exe 的控制檯應用程式來編輯該檔案。這可能會成為一項繁瑣的任務,最好使用 EasyBCD 等工具來完成。當然,可能還有其他此類工具。

3. GAG
從 GAG 引導卷或可引導 GAG CD-ROM 啟動 GAG,並按照 GUI 指示操作

  1. 按“s”設定 GAG
  2. 按“a”新增 AOS
  3. 按列出的作業系統中目標 AOS 關聯的字母(使用 GRUB 示例“c”表示 AOS)或按與目標 AOS 所在卷關聯的數字(“1”到“8”)
  4. 輸入描述(最多 15 個字元)
  5. 輸入密碼或不輸入
  6. 按與表示 AOS 的圖示關聯的字母
  7. 按“h”儲存到硬碟或按“r”返回主選單以測試此序列

外部連結
從快閃記憶體驅動器引導 - [http://www.usb-flash-drives-now.com/cheaper/Boot-From-Flash-Drive.html] [失效連結]

從 USB 引導 - 即使 BIOS 不支援: [https://www.plop.at/en/bootmanager/index.html]

  1. BootManager.Bin 自 André Fischer 撰寫本文件以來已進行了修改。因此,SVN 存檔中的 BootManager.Bin 略大於 6656 位元組。
華夏公益教科書