針對無法從 USB 開機安裝 Ubuntu (舊 BIOS 不支援 USB 開機、USB 製作失敗、無光驅) 的情境,利用 Win7 現有開機管理員 + EasyBCD 註冊 NeoGrub,直接從硬碟啟動 Ubuntu ISO 安裝程式,實現免 USB/光碟的雙系統安裝。本文記錄完整分區、EasyBCD 設定、ISO 解包、啟動參數調整流程。
適用環境: Win7 x64 (Legacy BIOS 模式,非 UEFI)、單顆硬碟、C 盤為 Win7 系統盤、需保留 Win7、新增 Ubuntu 分區。
ubuntu-12.04.3-desktop-amd64.iso) 放置於 C 盤根目錄。| 分區 | 掛載點/用途 | 檔案系統 | 大小 |
|---|---|---|---|
| (hd0,0) / sda1 | swap | swap | 2-4 GB |
| (hd0,1) / sda2 | / (根目錄) | ext4 | 20-50 GB |
| (hd0,2) / sda3 | C: (Win7) | NTFS | 剩餘空間 |
關鍵: Ubuntu 安裝所需分區 (swap、ext4) 必須為主分區 (Primary),不可為邏輯分區,否則 NeoGrub 無法正確對應 (hd0,1) 等 GRUB 裝置代碼。
C:\NST\menu.lst (記事本編輯)。# NeoSmart NeoGrub Bootloader Configuration File title Install Ubuntu 12.04 LTS root (hd0,2) kernel (hd0,2)/vmlinuz boot=casper iso-scan/filename=/ubuntu-12.04.3-desktop-amd64.iso ro quiet splash locale=zh_TW.UTF-8 initrd (hd0,2)/initrd.lz
參數說明:
root (hd0,2):指向存放 ISO、vmlinuz、initrd.lz 的分區 (此處為 C 盤 / sda3)。kernel ... iso-scan/filename=...:核心參數,掛載 ISO 並啟動安裝程式。locale=zh_TW.UTF-8:設定安裝語言為繁體中文 (可改 en_US.UTF-8)。/casper 資料夾,複製 vmlinuz (或 vmlinuz.efi) 和 initrd.lz 到 C 盤根目錄。vmlinuz.efi (UEFI 核心),必須重新命名為 vmlinuz (移除 .efi 副檔名),NeoGrub Legacy 模式才能載入。sudo umount -l /isodevice 卸載 ISO 掛載裝置,否則安裝程式會報錯「裝置忙碌」。Ubuntu 安裝程式預設會將 GRUB 安裝至 MBR,覆蓋 Windows 開機管理員。重開機後若直接進 GRUB 無 Win7 選項:
bootrec /fixmbr bootrec /fixboot bcdboot C:\Windows
或使用 EasyBCD → 「BCD 部署」→ 「寫入 Windows Vista/7/8 開機載入器」→ 選擇 MBR → 確定。
| 現象 | 原因 | 對策 |
|---|---|---|
| NeoGrub 選單不出現 | EasyBCD 未正確寫入 BCD、BIOS 開機順序錯誤 | 重新在 EasyBCD「BCD 部署」寫入、確認 BIOS 第一開機序為硬碟 |
| Kernel panic / 無法掛載 ISO | vmlinuz/initrd 路徑錯誤、檔案損毀、未重命名 .efi | 確認 C 盤根目錄有 vmlinuz、initrd.lz、ISO;重命名 vmlinuz.efi→vmlinuz |
| 安裝程式報「isodevice busy」 | 未執行 umount -l /isodevice | 進 Live 環境後第一件事先執行此指令 |
| 安裝後無 Win7 開機項 | GRUB 覆蓋 MBR | Win7 修復光碟執行 bootrec /fixmbr + bcdboot |
此法讓無 USB 開機能力的舊電腦也能輕鬆安裝 Ubuntu 雙系統,核心在於主分區規劃、NeoGrub 正確指向 C 盤、vmlinuz 去 EFI 化、umount isodevice 四大關鍵點。