剛好手邊有個 160G 的隨身碟,就打算來建立一個可以用 USB 開機且安裝 OS 的 USB 隨身硬碟。
我的需求「看似」很簡單,不過實際上 google 了很久倒是沒什麼解法…所以在解決了這個難題之後,特地把他記錄下來…
Require:
開機時我可以選擇要使用哪一個 iso 檔案來開機
除了一般的 Unix-Like OS 之外,我還要能夠安裝 Windows 7
1. 單純 Unix-Like OS 的話很簡單,請直接 google BootMyISO 解決
2. 單純 Windows 7 的話也很簡單,請直接 /boot/bootsect X:,xcopy E: /s /e /f X:
X: 為 USB 隨身碟代號, E: 為光碟機代號
3. 如果沒這麼單純的話請往下看…
其實解法很簡單,我個人的步驟是
1. 請先把你的隨身碟格式化成 FAT32 (之後就不要再格式化囉,只格式化這一次)
3. 我把 Ubuntu lucid 10.04 dialy build 2009-12-07 的 iso 檔丟進去,並且依照上篇文章修改,並且確認可正常開機。
4. 接著參考 這篇文章 的後半段,從 Step 9 開始到 Step 11。
5. 這時候,隨身碟就只能用 Windows 7 開機,於是再重新用第二步的 BootMyISO 重新執行一次。
6. 重新把 Ubnutn 的 menu.list 寫入。
7. 加入給 Windows 7 用的 menu.lst
title Windows 7 64bit Ent
# find --set-root /pmagic-4.5.iso
# map /pmagic-4.5.iso (hd32)
# map --hook
# root (hd32)
chainloader /bootmgr
8. 我整個 menu.lst 是這樣
default 0
timeout 30
color cyan/blue white/blue
foreground ffffff
background 003f7dtitle Memtest86+
find --set-root /memtest86+-4.00.iso
map --mem /memtest86+-4.00.iso (hd32)
map --hook
root (hd32)
chainloader (hd32)title Windows 7 64bit Ent
chainloader /bootmgrtitle lucid-alternate-i386.iso
find --set-root /bootiso/lucid-alternate-i386.iso
map /bootiso/lucid-alternate-i386.iso (hd32)
map --hook
root (hd32)
chainloader (hd32)
9. 完成之後,這個隨身碟就可以拿去安裝 Ubuntu/Windows 7 了。
不過根據我測試的結果,舊一點的主機板雖然支援 USB-HDD 開機,但還是無法正常進去 Windows 7 的安裝畫面。不過我測了手邊的幾台電腦:X200、LS400、X61 都是可以正常進到 Windows 7 64bit 安裝畫面與 Ubuntu Lucid 10.04 的安裝畫面的。
P.S 我猜,如果確定你的隨身碟支援 USB-HDD 開機的話,也許可以跳過 1、2、3 步驟,等 Windows 7 的 bootmbr 寫進去後,在用 grub 覆蓋回來就好。
多重開機可以參考這篇:http://www.pendrivelinux.com/boot-multiple-iso-from-usb-multiboot-usb/補上最後的 menu.lst
default 0
timeout 30
color white/blue yellow/black
title Ubuntu Lucid 10.94 Desktop i386 Dialy Build 20091207
find --set-root /bootiso/lucid-desktop-i386.iso
map /bootiso/lucid-desktop-i386.iso (0xff)
map --hook
root (0xff)
kernel /casper/vmlinuz file=/cdrom/preseed/ubuntu.seed boot=casper iso-scan/filename=/bootiso/lucid-desktop-i386.iso quiet splash locale=zh_TW
initrd /casper/initrd.lz
boot
title Windows 7 64bit Ent
# find --set-root /pmagic-4.5.iso
# map /pmagic-4.5.iso (hd32)
# map --hook
# root (hd32)
chainloader /bootmgr
# boot
title Ubuntu Lucid 10.94 Alternate i386 Dialy Build 20091207
find --set-root /bootiso/lucid-alternate-i386.iso
map /bootiso/lucid-alternate-i386.iso (hd32)
map --hook
root (hd32)
chainloader (hd32)
title Memtest86+
find --set-root /bootiso/memtest86+-4.00.iso
map --mem /bootiso/memtest86+-4.00.iso (hd32)
map --hook
root (hd32)
chainloader (hd32)
title Reboot
reboot
title Shutdown
halt
請問一下站長
回覆刪除我做完之後執行win 7的ERD發生了
Error 60: File for drive emulation must be in one contiguous disk area
看了網路上的解答
好像是什麼map要求連續存取
但我不懂
要怎麼改
這是我menu.lst的一部分
還有連關機都不行
重開到可以@@
關機還要加什麼指令嗎
default 0
timeout 30
color white/black black/white
foreground ffffff
background 000000
title ERD_Win7_RTM
find --set-root /setup/ERD65_Win7.iso
map --mem /setup/ERD65_Win7.iso (hd32)
map --hook
root (hd32)
chainloader (hd32)
title Shutdown
halt
如果你有仔細的看完內文的話,就會看到我 windows 7 是沒有用 iso 檔的,原因你現在遇到了。
回覆刪除關機的話我不確定,不過我測試的幾台機器都可以。
windows透過iso檔直接安裝會沒有辦法進入安裝程式
回覆刪除原因是因為windows的安裝程式不認得grub4dos掛載的虛擬光碟
因此進安裝程式後找不到光碟資料
可參考我新的一篇文章
http://blog.mosquito.tk/2012/04/windows-iso-usb-installer.html
藉由3rd party寫的driver可以讓Windows認到grub4dos掛載的光碟
因此Windows系列的作業系統均可藉由ISO檔直接安裝