使用 syslinux.exe 寫入 USB 後,部分機型啟動卡在:
SYSLINUX 3.84 2009-12-18 EBIOS Copyright (C) 1994-2009 H. Peter Anvin et al
根因:BIOS 未將 USB 識別為 **USB-HDD** 類型,而是當作 USB-FDD/USB-ZIP,導致啟動扇區載入失敗。
# 假設 USB 為 /dev/sdb,請三確認裝置名稱!
sudo wipefs -a /dev/sdb # 清除舊簽名
sudo fdisk /dev/sdb <
# Windows
syslinux.exe -i -a X: # X: 為 USB 磁碟代號
# Linux
sudo syslinux -i /dev/sdb1
# 或
sudo extlinux -i /mnt/usb # 若使用 extlinux
# 掛載 USB
mkdir -p /mnt/usb
mount /dev/sdb1 /mnt/usb
# 複製核心、initrd、配置檔
cp vmlinuz initrd.img /mnt/usb/
cp syslinux.cfg /mnt/usb/ # 或 extlinux.conf
# 關鍵:syslinux.cfg 範例
cat > /mnt/usb/syslinux.cfg <<'EOF'
DEFAULT linux
LABEL linux
KERNEL vmlinuz
APPEND initrd=initrd.img root=/dev/sda1 ro quiet
EOF
sync && umount /mnt/usb
| 現象 | 可能原因 | 對策 |
|---|---|---|
| 仍卡版本資訊 | BIOS USB 模式支援有限 | 嘗試 BIOS 設定「USB 模擬類型」為 HDD;或插 USB 2.0 介面 |
| 顯示 "Missing operating system" | 分區未設啟動旗標 / MBR 未寫入 | 重跑 fdisk 設 a、重跑 syslinux |
| 核心載入後掛起 | 核心參數錯誤 / 缺驅動 | 調整 APPEND 行,加 rootdelay=10、usbcore.autosuspend=-1 |
現代電腦建議直接使用 GRUB2 + UEFI 或 systemd-boot,Syslinux UEFI 支援有限且配置複雜。若必須用 Syslinux:
# 建立 GPT + ESP 分區
sudo fdisk /dev/sdb
# g (GPT), n (ESP, +200M, type EFI System), n (data), w
sudo mkfs.vfat -F 32 /dev/sdb1
sudo mount /dev/sdb1 /mnt/usb
mkdir -p /mnt/usb/EFI/BOOT
cp /usr/lib/syslinux/efi64/syslinux.efi /mnt/usb/EFI/BOOT/BOOTX64.EFI
cp syslinux.cfg /mnt/usb/EFI/BOOT/
syslinux.cfg 路徑、核心參數務必精確避坑提醒:
syslinux.exe X:不加-i -a參數可能不寫入 MBR,導致「Missing operating system」。永遠用完整參數。