mkisofs (或 genisoimage) 是 Linux 下製作 ISO 9660 光碟映像的標準工具。本文整理開機光碟關鍵參數、常用指令範例、常見警告解決方案。
| 參數 | 說明 |
|---|---|
-no-emul-boot | 指定開機映像為「無模擬」模式 (非軟碟/硬碟模擬) |
-b / -eltorito-boot | 指定開機映像檔路徑 (相對 ISO 根目錄),如 isolinux/isolinux.bin |
-c / -eltorito-catalog | 指定開機目錄檔名稱,mkisofs 會自動產生,如 isolinux/boot.cat |
-J / -joliet | 生成 Joliet 目錄記錄 (支援 Windows 長檔名、Unicode) |
-R / -rock | 生成 Rock Ridge 目錄記錄 (支援 Linux/Unix 權限、長檔名、符號連結) |
-r / -rational-rock | Rock Ridge + 開放所有檔案讀取權限 (適合發布光碟) |
-boot-load-size 4 | 開機載入區塊大小 (預設 4 扇區,兼容性最佳) |
-boot-info-table | 在開機映像中嵌入資訊表 (修正啟動位置) |
-input-charset UTF-8 | 指定輸入字元集 (解決檔名編碼警告) |
-V | 設定卷標標籤 |
-o | 指定輸出 ISO 檔名 |
mkisofs -r -J -T -V "MY_BOOT_ISO" \
-o custom.iso \
-b isolinux/isolinux.bin \
-c isolinux/boot.cat \
-no-emul-boot \
-boot-load-size 4 \
-boot-info-table \
-input-charset UTF-8 \
.
-T:生成 TRANS.TBL 對照表 (舊系統兼容). 代表當前目錄為 ISO 根目錄來源,**不可省略**,否則報 Missing pathspec。| 警告/錯誤 | 原因 | 解決 |
|---|---|---|
Warning: creating filesystem that does not conform to ISO-9660. | 檔名過長或含非 ISO-9660 字元 | 加上 -J -R (Joliet+Rock Ridge) 即可解決,或移除 -d 參數 |
INFO: UTF-8 character encoding detected by locale settings. | 系統 locale 為 UTF-8,檔名編碼自動偵測 | 明確加上 -input-charset UTF-8 |
mkisofs: Missing pathspec | 未指定來源路徑 | 在 -o output.iso 後加上 . 或具體路徑 |
需準備 efi.img (FAT12/16 映像含 EFI 檔案),並加入參數:
-eltorito-alt-boot \
-e efi.img \
-no-emul-boot \
-eltorito-platform efi
完整指令會包含兩組 -b/-eltorito-alt-boot 區塊。