ISOhybrid是一種使用可引導ISO鏡像創建Hybrid鏡像的工具。由ISOhybrid工具創建的Hybrid鏡像可用作基於USB鏡像或ISO鏡像。
在創建hybrid鏡像時,該工具在ISO鏡像的前512位元組裡添加一項MBR(主引導記錄),並在鏡像的欄位末填充幾個零,使最終鏡像的大小為1M的倍數。因此所創建的MBR將會列出一個從零偏移位置(默認)到hybrid鏡像末端的分區。例如,ISOhybrid鏡像上的fdisk-l將會顯示如下:
linux# fdisk -l Centos60-Base.iso
Disk Centos60-Base.iso: 231 MB, 231735296 bytes
64 heads, 32 sectors/track, 221 cylinders, total 452608 sectors
Units = sectors of 1_*512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: __0xf2d79d93
Device Boot Start End Blocks Id System
Centos60-Base.iso1_*0 452607 226304 83 Linux
通常,BIOS預計MBR會在前512位元組出現,然後第一分區在第一扇區後(前512位元組)啟動。由於這兩者在Hybrid iso鏡像中重疊,使伺服器的BIOS產生混淆,將該鏡像視為Floppy映像,進而無法引導"isolinux.bin missing or corrupt"信息。如果BIOS中的"USB Flash Drive emulation Type" 從"Auto"更新至"HDD/Hard Disk",該鏡像將會開始引導裝入程序。在HDD中,該設置將會迫使BIOS讀取MBR並引導至USB密鑰。以下分別為8G、9G、10G和11G伺服器所需BIOS更改的屏幕截圖:
這個問題的另一有效解決方案是創建一個 hybrid 鏡像,使第一分區能夠在零偏移位置啟動。不幸的是,此操作可衍生出其他問題。根據ISO 9660規範,ISO鏡像的前32位元組是無法使用的(大多數被歸零)。ISOhybrid工具使用該空間的前512位元組來設置hybrid鏡像的MBR。 在非零偏移位置(0到32位元組之間)啟動的分區將會在起動時全部歸零,而不是提供文件系統信息的超級塊。這將導致安裝程序無法成功安裝分區 (ex:dev/sda1),進而使引導失敗。
AFAIK xorriso似乎是創建hybrid鏡像的唯一工具,並且所創建的hybrid鏡像可雙重掛載(作為整體設備[/dev/sda] 及作為分區[/dev/sda1])。如需了解更多關於該工具的信息,請訪問此維基頁面:http://libburnia-project.org/wiki/PartitionOffset 。
總之,使零偏移創建的Hybrid ISO鏡像可在正確的BIOS更改下引導裝入程序。除非引導腳本更新至安裝整體設備而不是分區或使用正確的工具創建可支持雙重掛載的鏡像,否則非零偏移的鏡像不會引導裝入程序。
責編:李紅燕