Boot
錯誤的引導順序 - BIOS 卡住而不是嘗試下一個引導設備
我有一個執行 Intel S2600C0 bios 版本的測試伺服器
SE5C600.86B.02.06.0002
。它有 7 個 SSD:5SDLFNCAR-960G-1HA2
s 和 2Micron_M500DC_MTFDDAK800MBB
。作業系統和所有文件都在第一個 SSD 上,其他 6 個 SSD 由我們的軟體使用。問題是,如果第一個 SSD 不是啟動順序中的第一個,BIOS 會在嘗試從它啟動時卡住,而不是意識到它無法啟動並繼續啟動順序中的下一個設備。
我們的實驗表明分區表有問題:
- 使用數據磁碟上的 GPT 分區表(我們用於軟體的分區表)啟動時卡住了。
- 使用數據磁碟上的 MBR 分區表引導會卡住。
- 我嘗試在表中添加一個分區並啟動 - 它也卡住了。
- 當我擦除分區表(使用
sgdisk -Z
)時 - 我能夠以任何引導順序引導。引導標誌(或GPT可引導的 Legacy BIOS)始終處於關閉狀態 - 儘管我也嘗試過啟動它(仍然沒有工作)
“只需設置正確的引導順序”不是解決方案(儘管我可能被迫接受它),因為:
- 當所有 SSD 的類型相同並且在 BIOS 菜單中具有相同的名稱時,需要大量的試驗和錯誤才能確定作業系統駐留在哪一個上。
- 測試伺服器是一回事——我們希望避免對客戶的伺服器進行測試。
這是 BIOS 資訊:
$ dmidecode -t bios -q BIOS Information Vendor: Intel Corp. Version: SE5C600.86B.02.06.0002.101320150901 Release Date: 10/13/2015 Address: 0xF0000 Runtime Size: 64 kB ROM Size: 8192 kB Characteristics: PCI is supported BIOS is upgradeable BIOS shadowing is allowed Boot from CD is supported Selectable boot is supported EDD is supported 5.25"/1.2 MB floppy services are supported (int 13h) 3.5"/720 kB floppy services are supported (int 13h) 3.5"/2.88 MB floppy services are supported (int 13h) Print screen service is supported (int 5h) 8042 keyboard services are supported (int 9h) Serial services are supported (int 14h) Printer services are supported (int 17h) ACPI is supported USB legacy is supported BIOS boot specification is supported Targeted content distribution is supported BIOS Revision: 4.6 BIOS Language Information Language Description Format: Long Installable Languages: 1 en|US|iso8859-1 Currently Installed Language: en|US|iso8859-1
這是預期的行為:當 BIOS 辨識出正確定義的分區表時,它會載入第一個 512 字節的扇區並將控制權交給剛從磁碟載入的程式碼。在那之後,它沒有“良好啟動”或“卡住啟動”的控制/可見性/概念。
當沒有找到有效的分區表時,BIOS 會自動選擇下一個磁碟,直到找到有效的分區表。
要解決此問題,您有三個解決方案:
- 使用和硬體 RAID 控制器,它可以在 BIOS 級別看到多個磁碟的單個實體
- 使用 fakeraid 解決方案(就像英特爾在其晶片組上提供的那樣),通過使用適當的 Option ROM,可以抽像出多個磁碟佈局,將它們作為單個磁碟呈現給主 BIOS
- 在每個磁碟上安裝一個合適的 MBR/bootloader ,這樣 BIOS 引導順序就變得無關緊要了(這是經典的軟體 RAID 解決方案)