<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hant-TW">
	<id>https://wiki.zh-tw.ima.org.tw/w/index.php?action=history&amp;feed=atom&amp;title=%E7%A3%81%E7%A2%9F%E5%8D%80%E9%96%8B%E6%A9%9F%E8%A8%98%E9%8C%84</id>
	<title>磁碟區開機記錄 - 修訂紀錄</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.zh-tw.ima.org.tw/w/index.php?action=history&amp;feed=atom&amp;title=%E7%A3%81%E7%A2%9F%E5%8D%80%E9%96%8B%E6%A9%9F%E8%A8%98%E9%8C%84"/>
	<link rel="alternate" type="text/html" href="https://wiki.zh-tw.ima.org.tw/w/index.php?title=%E7%A3%81%E7%A2%9F%E5%8D%80%E9%96%8B%E6%A9%9F%E8%A8%98%E9%8C%84&amp;action=history"/>
	<updated>2026-07-04T19:14:35Z</updated>
	<subtitle>本 wiki 上此頁面的修訂紀錄</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>https://wiki.zh-tw.ima.org.tw/w/index.php?title=%E7%A3%81%E7%A2%9F%E5%8D%80%E9%96%8B%E6%A9%9F%E8%A8%98%E9%8C%84&amp;diff=9013&amp;oldid=prev</id>
		<title>TaiwanTonguesApiRobot：​從 JSON 檔案批量匯入</title>
		<link rel="alternate" type="text/html" href="https://wiki.zh-tw.ima.org.tw/w/index.php?title=%E7%A3%81%E7%A2%9F%E5%8D%80%E9%96%8B%E6%A9%9F%E8%A8%98%E9%8C%84&amp;diff=9013&amp;oldid=prev"/>
		<updated>2025-09-25T07:45:36Z</updated>

		<summary type="html">&lt;p&gt;從 JSON 檔案批量匯入&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新頁面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;磁碟區開機紀錄（VBR）（又稱為磁碟區開機磁區、磁碟分割開機紀錄或磁碟分割開機磁區）是由 IBM 個人電腦所引入的一種開機磁區。它可能存在於已分割的資料儲存裝置（如硬碟）或未分割的裝置（如軟碟）上，並包含用於啟動載入儲存在裝置其他部分之程式（通常是作業系統，但非必要）的機器碼。在未分割的儲存裝置上，它是裝置的第一個磁區。在已分割的裝置上，它是裝置上個別磁碟分割的第一個磁區，而整個裝置的第一個磁區則是包含磁碟分割表的主要開機紀錄（MBR）。&lt;br /&gt;
&lt;br /&gt;
磁碟區開機紀錄中的程式碼可由機器的韌體直接呼叫，或由主要開機紀錄或開機管理程式中的程式碼間接呼叫。MBR 和 VBR 中的程式碼本質上是以相同的方式載入。&lt;br /&gt;
&lt;br /&gt;
透過開機管理程式呼叫 VBR 的過程稱為鏈式載入。一些雙重開機系統，例如 NTLDR（微軟 Windows NT 衍生作業系統所有版本，直至並包含 Windows XP 和 Windows Server 2003 的開機載入程式），會將各個作業系統安裝到單一磁碟分割 VBR 中的啟動載入碼複製並儲存於磁碟檔案中，在開機載入程式詢問使用者要啟動哪個作業系統後，從檔案載入相關的 VBR 內容。&lt;br /&gt;
在 Windows Vista、Windows Server 2008 及更新版本中，NTLDR 已被取代；開機載入功能改由兩個新元件提供：WINLOAD.EXE 和 Windows 開機管理程式。&lt;br /&gt;
&lt;br /&gt;
在 FAT12（DOS 1.x 除外）、FAT16、FAT32、HPFS 和 NTFS 等檔案系統中，VBR 也包含一個 BIOS 參數區塊（BPB），用以指定檔案系統主要磁碟上資料結構的位置和佈局。（關於 FAT VBR 的磁區配置、各種 FAT BPB 版本及其條目的詳細討論，可在 FAT 的相關文章中找到。）&lt;br /&gt;
&lt;br /&gt;
==技術細節==&lt;br /&gt;
&lt;br /&gt;
===簽章===&lt;br /&gt;
依照慣例，開機磁區中若存在適用於 x86 CPU 的 IBM PC 相容開機載入程式，會由一個稱為開機磁區簽章的雙位元組十六進位序列表示（在磁區大小為 512 位元組或以上時，於固定位移 `+1FEh` 處為 `55h`，`+1FFh` 處為 `AAh`）。對於 512 位元組的磁區，開機磁區簽章也標誌著磁區的結尾。在更小或更大磁區上的 VBR 也可能在其實際磁區大小的末端顯示簽章，然而，此處描述的語意僅適用於 `+1FEh` 處的 16 位元簽章。&lt;br /&gt;
&lt;br /&gt;
此簽章表示至少存在一個可安全執行的虛設開機載入程式，即使它可能無法實際載入作業系統。它並不表示存在某個（或甚至特定的）檔案系統或作業系統，儘管某些 3.3 版之前的舊版 DOS 在其偵測 FAT 格式化媒體的過程中依賴此簽章（較新版本則不然）。其他平台或 CPU 的開機程式碼不應使用此簽章，因為當 BIOS 假設開機磁區包含有效的可執行碼而將執行權交給它時，可能會導致當機。這意味著，要讓非常舊版的 DOS 也能使用的 FAT12/FAT16 媒體必須保留此簽章，即使它們不包含作業系統或僅用於在其他平台上開機；因此，它們也必須至少包含一個 x86 相容的（虛設）載入程式（可比較 Atari ST 上的 FAT 和 MSX-DOS 的範例）。儘管如此，一些用於其他平台的媒體即使沒有 x86 相容的虛設載入程式，也錯誤地包含了此簽章，使得這項檢查在實務上並非 100% 可靠。&lt;br /&gt;
&lt;br /&gt;
自（至少）IBM PC/AT 以來的大多數系統 BIOS 都會測試此簽章（但最初的 IBM PC 和其他一些機器則不會）。不僅如此，大多數 MBR 開機載入程式在將控制權交給開機磁區之前也會檢查它。某些 BIOS（如 IBM PC/AT）只對固定磁碟／可卸除式磁碟機執行此檢查，而對於軟碟和超級軟碟，只要起始位元組大於或等於 `B0h` 且前九個字不包含相同的值，開機磁區就會被視為有效，從而避免對軟碟進行 `55h`、`AAh` 的明確測試。由於舊的開機磁區（即非常古老的 CP/M-86 和 DOS 媒體）有時即使可以成功開機也沒有此簽章，因此在某些環境下可以禁用此檢查。這也反映了軟碟可以被格式化為使用小於 512 位元組的磁區大小。&lt;br /&gt;
&lt;br /&gt;
如果 BIOS 或 MBR 程式碼未偵測到有效的開機磁區，因此無法將執行權交給開機磁區程式碼，它將嘗試序列中的下一個開機裝置。如果所有裝置都失敗，它通常會顯示一則錯誤訊息並呼叫 INT 18h。這將會啟動 ROM 中的可選常駐軟體（ROM BASIC）、嘗試透過網路遠端開機、在使用者確認後透過 INT 19h 重新啟動系統，或導致系統中止啟動載入過程，直到下次開機。&lt;br /&gt;
&lt;br /&gt;
從十進位位移 72 到 79，一個 NTFS PBR 包含磁碟分割 UUID 磁碟區 ID 序號。&lt;br /&gt;
&lt;br /&gt;
===呼叫===&lt;br /&gt;
VBR 中的開機程式碼可以假設 BIOS 已經設定好其資料結構和中斷，並已初始化硬體。為求容錯操作，程式碼不應假設存在超過 32 KB 的記憶體；如果需要更多記憶體，應為此查詢 INT 12h，因為其他開機前程式碼（例如 BIOS 擴充功能覆蓋層、加密系統或遠端啟動載入程式）也可能存在於記憶體的其他地方（並且通常會透過相應減少回報的 INT 12h 記憶體大小來隱藏自己，以免被 MBR 和 VBR 的操作覆寫）。BIOS 開機規範允許 64 KB 的記憶體，並明確建議將 `0000h:8000h` 至 `0000h:FFFFh` 作為 MBR 和／或 VBR 的記憶體空間。開機程式碼不得假設 CPU 優於原始的 Intel 8088 或 8086（用於原始 PC），且不得對硬體的確切狀態、中斷系統（中斷可為啟用或停用狀態）或堆疊的位置和大小做任何假設。儘管原始 IBM BIOS 將 DS、ES 和 SS CPU 暫存器初始化為區段 `0000h` 並將初始堆疊維持在 SS:SP = `0000h:0400h`，但這並非一個可依賴的條件，因為並非所有 BIOS 和 MBR 程式碼都遵循此慣例。下方未提及的暫存器必須視為未初始化。通常不允許直接存取硬體。雖然磁碟參數表（DPT/FDPB）通常已在記憶體的 `0000h:0078h` 處設定好，但 VBR 必須將 INT 1Eh 向量所指向的 DPT 移動（並可能修復）至此位置（INT 1Eh 不是中斷，而是指向 DPT 的遠指標）。&lt;br /&gt;
&lt;br /&gt;
在受控環境中，某些條件可以放寬，例如，現今一些開機載入程式在正常操作中會假設有高達 128 KB 的記憶體可供使用（無需查詢更多），而一些使用 LBA 存取的開機載入程式則假設至少有 Intel 80188 或 80186 CPU。&lt;br /&gt;
&lt;br /&gt;
當先前的啟動載入程式（通常是 BIOS 或 MBR，但可能為另一開機載入程式）透過跳轉至 CPU 真實模式下的 `0000h`:`7C00h` 將執行權交給 VBR 時，VBR 會被載入到記憶體位址 `0000h`:`7C00h`，且 CPU 暫存器設定如下。&lt;br /&gt;
&lt;br /&gt;
* CS:IP = `0000h`:`7C00h` (固定)&lt;br /&gt;
某些 Compaq BIOS 錯誤地使用 `07C0h`:`0000h`。雖然這在真實模式記憶體中解析為相同的位置，但這是不標準的，應予以避免，因為假設特定暫存器值或未編寫為可重定位的 VBR 程式碼可能因此無法運作。&lt;br /&gt;
&lt;br /&gt;
* DL = 開機磁碟機單元（軟碟／超級軟碟：`00h` = 第一個，`01h` = 第二個，...，`7Eh`；固定磁碟／可卸除式磁碟機：`80h` = 第一個，`81h` = 第二個，...，`FEh`；值 `7Fh` 和 `FFh` 保留給 ROM／遠端磁碟機，不得在磁碟上使用）。DL 受 IBM BIOS 及大多數其他 BIOS 支援。已知 Toshiba T1000 BIOS 不正確支援此功能，且某些舊的 Wyse 286 BIOS 對硬碟使用大於或等於 2 的 DL 值。被設定為超級軟碟的 USB 隨身碟通常會被分配 DL = `00h` 或 `01h`，然而，一些罕見的 BIOS 也錯誤地將設定為可卸除式磁碟機的 USB 隨身碟呈現為 DL = `01h`，而非使用 DL = `80h`。傳統上，BIOS 在開機期間只傳遞 `00h` 和 `80h` 這兩個值，且許多開機磁區無論如何都硬性編碼為使用固定值。隨插即用 BIOS 規範和 BIOS 開機規範（BBS）也允許其他裝置變得可開機。後者也建議 MBR 和 VBR 程式碼應使用 DL 而非內部硬性編碼的預設值。（注意：MS-DOS/PC DOS 和 OS/2 的 VBR 會忽略提供的 DL 值，而改為擷取儲存在延伸 BIOS 參數區塊（EBPB）位移 `+19h` 處或 DOS 3.2 至 3.31 版中磁區位移 `+1FDh` 處的值。某些版本的 DR-DOS 從 7.02 開始使用 DL。DR-DOS 7.07 的 VBR 預設使用 DL 並忽略 BPB 值，但可使用 `SYS /O[:nnn]` 重新啟用使用 BPB 值的舊行為，甚至強制將特定的開機磁碟機單元 `nnn` 儲存在那裡。在 FAT32 磁碟區上，FreeDOS 也利用 DL 值，而在 FAT12/FAT16 磁碟區上，僅當 BPB 值設為 `FFh` 時才如此。）&lt;br /&gt;
* DH 位元 5 = 0：裝置透過 INT 13h 支援；否則：不理會（應為零）。DH 受某些 IBM BIOS 支援。某些 MBR 和 VBR 程式碼會保留 DH 的值。&lt;br /&gt;
&lt;br /&gt;
具備隨插即用 BIOS 或 BBS 支援的系統，除了 DL 之外，還會提供一個指向 PnP 資料的指標：&lt;br /&gt;
&lt;br /&gt;
* DL = 開機磁碟機單元（見上文）&lt;br /&gt;
* ES:DI = 指向 &amp;quot;``$PnP``&amp;quot; 安裝檢查結構&lt;br /&gt;
&lt;br /&gt;
此資訊允許開機載入程式（在 MBR 或 VBR 中）主動與 BIOS 或記憶體中常駐的 PnP / BBS 覆蓋層互動，以設定開機順序等，然而，此資訊被大多數標準的 MBR 和 VBR 忽略。理想情況下，ES:DI 會被傳遞，但支援 PnP 的作業系統通常也有備援方法來稍後擷取 PnP BIOS 進入點，因此大多數作業系統並不依賴此項。ES:DI 中的資訊可作為提示——根據 PnP BIOS 規範，「$PnP」安裝檢查結構可透過在系統記憶體中從 F0000h 到 FFFFFh 每 16 位元組邊界搜尋 ASCII 字串 $PnP 的簽章來找到。&lt;br /&gt;
&lt;br /&gt;
對於已分割的媒體，當 VBR 由 MBR（或其他開機載入程式）而非 BIOS 啟動時，許多實作除了 DL（有時也包括 DH 和 ES:DI）外，還會傳遞額外資訊給 VBR：&lt;br /&gt;
&lt;br /&gt;
* DS:SI = 指向對應於已啟動 VBR 的 16 位元組 MBR 磁碟分割表項目（在重定位的 MBR 中）。如果磁碟分割表中沒有任何磁碟分割被標記為可開機，PC-MOS 5.1 依賴此項來開機。結合 LOADER，Multiuser DOS 和 REAL/32 的開機磁區在找不到開機檔案（LOADER.SYS）時，會用此來定位作用中磁碟分割的開機磁區（或磁碟上固定位置的另一個啟動載入程式，如 IBMBIO.LDR）。PTS-DOS 6.5 和 S/DOS 1.0 結合其進階作用中磁碟分割（AAP）功能使用此項。除了支援 LOADER 和 AAP，DR-DOS 7.07 在使用其雙重 CHS/LBA VBR 程式碼時，可利用此項來決定必要的 INT 13h 存取方法。OS/2、MS-DOS（7.0 之前）、PC DOS（至 7.10）和 Windows NT（至約 2007 年）的 MBR 程式碼恰好也提供相同的介面，儘管這些系統並未使用它。Windows NT 6.0（及更高版本）安裝的 MBR 使用其他暫存器，因此不再與這些擴充功能相容。雖然某些擴充功能僅依賴於 16 位元組的磁碟分割表項目本身，但其他擴充功能可能需要整個 4（或 5 個項目）的磁碟分割表也存在。&lt;br /&gt;
&lt;br /&gt;
在 DR-DOS 7.07 下，MBR 可選擇性地使用一個擴充介面並與 LOADER 結合：&lt;br /&gt;
&lt;br /&gt;
* AX = 魔術簽章，表示此擴充功能的存在（`0EDCh`）&lt;br /&gt;
* DL = 開機磁碟機單元（見上文）&lt;br /&gt;
* DS:SI = 指向所使用的 16 位元組 MBR 磁碟分割表項目（見上文）&lt;br /&gt;
* ES:BX = 開機磁區或特殊 &amp;quot;``NEWLDR``&amp;quot; 磁區映像的起始位置（通常為 `7C00h`）&lt;br /&gt;
* CX = 保留&lt;br /&gt;
&lt;br /&gt;
結合 GUID 磁碟分割表（GPT），一份增強型磁碟機規格（EDD）4 混合式 MBR 提案建議對 MBR 至 VBR 介面進行另一項擴充：&lt;br /&gt;
&lt;br /&gt;
* EAX = `54504721h` (&amp;quot;`!GPT`&amp;quot;)&lt;br /&gt;
* DL = 開機磁碟機單元（見上文）&lt;br /&gt;
* ES:DI = 指向 &amp;quot;``$PnP``&amp;quot; 安裝檢查結構（見上文）&lt;br /&gt;
* DS:SI = 指向一個混合式 MBR 遞交結構，該結構由一個 16 位元組的虛設 MBR 磁碟分割表項目（除了位移 `+0h` 的開機旗標和位移 `+4h` 的磁碟分割類型外，所有位元均設為 1）以及額外資料組成。如果那些較舊的擴充功能只需要 16 位元組的磁碟分割項目而非整個磁碟分割表，這部分相容於上述較舊的 DS:SI 擴充功能。&lt;br /&gt;
&lt;br /&gt;
==參見==&lt;br /&gt;
* 主要開機紀錄 (MBR)&lt;br /&gt;
* 延伸開機紀錄 (EBR)&lt;br /&gt;
* BIOS 參數區塊 (BPB)&lt;br /&gt;
* FAT 檔案系統中的 BPB 格式&lt;br /&gt;
* 磁碟分割&lt;br /&gt;
* 磁碟分割對齊&lt;br /&gt;
&lt;br /&gt;
==註解==&lt;br /&gt;
&lt;br /&gt;
==參考資料==&lt;br /&gt;
&lt;br /&gt;
==延伸閱讀==&lt;br /&gt;
&lt;br /&gt;
Category:電腦檔案系統&lt;br /&gt;
Category:BIOS&lt;br /&gt;
Category:開機&lt;br /&gt;
&lt;br /&gt;
[[分類: 待校正]]&lt;/div&gt;</summary>
		<author><name>TaiwanTonguesApiRobot</name></author>
	</entry>
</feed>