2016年8月2日 星期二

Create Bootable Windows Drive Partition for Older Model MacBook (Pro) with Optical Disc Drive

原本是用《Windows on the External Device (Windows To Go)》這個方法,但是這個用 MBR 分割區的方法在 MacBook Pro (13-inch, Late 2011) 沒辦法用。

下面這篇是我寫在 PTT Mac 版的文章:
[教學] 有光碟機版本的MBP裝Windows在外接硬碟上

跟我真正想講的有些差別。不過我當時是剛懂個大概,就想要 PO 出去看有沒有人已經研究過了,可以直接跟我說怎麼製作出 GPT 的可開機分割磁區。

作者 royhsia (轉檔真是大哉問) 看板 MAC
標題 [教學] 有光碟機版本的MBP裝Windows在外接硬碟上
時間 Sat Jul 30 02:50:20 2016

───────────────────────────────────────


想當然,我這段主要的想法,就是如何製作有光碟機版 Mac 可用的可開機 Windows 磁區

之前測試的心得是有光碟機版本的 Mac,無法用 MBR 格式磁區開機,也無法用 USB 安裝 Windows 7。讓人一定要去燒成光碟來用光碟機安裝。但是沒光碟機的就可以 =皿=。這對把光碟機拆掉做成 Fusion Drive 的人來說實在是很麻煩啊。

因為要把 Windows 安裝到外接硬碟的話,無論怎麼看都是用工具會比較方便而且輕鬆很多。而且不用在那邊擔心指令打錯導致全部毀掉。

但是如果已經有 VHD 檔了。這樣自己手動做出外接硬碟的分割磁區再把 VHD 檔放入並用 bcdboot 寫入開機資訊與用 bcdedit 編輯開機資訊,會比用工具製作快很多。因為工具要在寫完 VHD 後才會做 bcdboot 這件事,而已經有做好的 VHD 檔勢必要把拿來安裝用的 VHD 檔給蓋掉。這樣會浪費不少時間在寫入 VHD 到外接硬碟。


我是發現「WTG 協助工具」有 Log 這件事後,在 %USERPROFILE%/ AppData/Local/Temp 裡面有放 diskpart 的執行腳本。幾個東西加一加,就成了這篇的資料來源。不過這些都不算什麼,因為「WTG 協助工具」本身是在 github 上開源的啊!!!

我除了看 Log 還有 Temp 資料夾下的文件之外,我還有在 Mac 用 QuickTime 錄 VMware 裡執行 Windows 8 製作時螢幕上跑的訊息來對照 Log 與 Temp 下的腳本順序。

注意:下方指令原意為讓我直接複製貼上使用。各位看官們自己要判斷適不適合你啊!



第一步:清除外接硬碟磁區並格式化為 GPT 格式與建立磁區

通常都是建一個磁區格式化一個磁區(因為建完磁區後會自動選擇該磁區),不過這腳本是建完後才回去選來格式化並指派磁碟機代號。 Windows 的隱藏磁區 X: 會從 partition 2 開始的原因是 partition 1 是 GPT 格式的隱藏磁區。 create partition efi size 350 這段與法是除了建立一個 350 MB 的磁區之外,磁區格式為「efi」!!我是重看之後發現我打錯,我原本以為 efi 是磁區標籤名。
正常指令都是會要下 exit 離開 diskpart,但是等等會繼續用 diskpart 所以指令就不加「離開」。


第一種第二步:第一次執行,需要用 dism 指令建立虛擬磁區(VHD)的用這個
注意:下面指令的 D:\sources\install.wim 是指 Windows 10 ISO 檔(或其他版本 ISO 檔)裡的 install.wim 所在路徑。

先建立一個最大 40 GB 的可延展磁區,選擇剛剛建立的檔案並把它掛載至系統上,再來格式化成 NTFS 格式,並指派磁區代號 V:。離開 diskpart 後就用 dism 把安裝檔案解壓到 V: 槽中。
要執行 Win10 的 dism 必須要使用 Win8.1 以上的 dism 才可以。在 Win7 試過執行 Win10 的 Dism.exe 結果慘敗,一堆檔案找不到。


第二種第二步:已經有 wtg.vhd 的用這個
不能用系統管理員權限執行指令從網路磁碟機複製的原因
因為不能夠直接貼在系統管理員權限的命令提示字元視窗執行,這邊乾脆直接手動在 GUI 介面把 wtg.vhd 檔複製到磁區 O: 還比較賞心悅目一點(囧)。

再用下面這個(用第一步的命令提示字元視窗繼續貼)

選擇 VHD 檔並把它掛載至系統上,再指派磁區代號 V:。

第三步:用 bcdboot 與 bcdedit 建立 UEFI 開機相關資料

重點來了! bcdboot 是把 EFI boot 要的 EFI/boot/bootx64.efi 檔寫入磁碟中的隱藏磁區(在製作的時候還看得到這個磁區 X:)。這邊用 V:\Windows\System32\bcdboot.exe 的原因是直接用磁碟上使用的版本(Windows 10)來執行此動作會比製作系統(Windows 8)裡的版本要好。至少 Windows 10 的 bcdboot 版本比較新啊 XD。 /l zh-TW 是指定台灣語言。工具用的是 /l zh-ch 會造成找不到語言的錯誤 = =a(不是應該用 zh-CN 嗎?)。只有這個 /l 語言選項可以省略,其他幾個不可省。
因為是要做 VHD 版本的外接 Windows 開機磁區,所以會需要用 bcdedit 來修改開機資訊。用 V:\Windows\System32\bcdedit.exe 的原因跟上面一樣。
我是覺得把三行 bcdedit 都做完之後再去做 diskpart 的卸載 VHD 與移除 X: 磁碟機代號應該也可以。不過我參考的那個工具就是這麼做(而且還做兩次!)猜想可能是有什麼 bug 考量,怕麻煩的我就不改這邊了。


其實比較難的地方是第一步跟第三步,因為不知道指令要下什麼。查到指令後覺得, -3-。

* NOTE: 要用傳統直接寫到硬碟(不爽用 VHD)的 UEFI+GPT 用這個

這版本在分割磁區時,除了 efi 磁區之外還會建兩個,一個約 90 GB,另一個是磁碟剩餘大小。如果有要做外接雙系統的話可以用這指令。 Dism 的部分會用系統內建的版本,聽說 Win8 以前會無法以 dism 做 Win10 的安裝磁區,這傳聞不知道是真是假。
因為是直接寫到硬碟磁區裡,所以最後不需要再用 bcdedit。



後記:
可以搭配 Windows 8.1 使用的 Mac 機型
支援 Windows 10 的 Mac 電腦

我原本還因為 Win10 的 ISO 裡面是 install.esd 在那邊找要怎麼轉成 install.wim。還沒找出個五四三就被別的東西遷走心神了。我用找到的 ESD 轉 WIM 工具 decrypt.cmd 完全辨識不到我之前抓到的 Win10 那個 install.esd,一直說錯誤。我後來就放棄掉那個版本的 Win10,直接上網重抓。

另外一件事是在我以 VHD 的方式裝好 Win10 後在我要關機的時候發現竟然關機跟重新啟動的選項都被換成有安裝更新的版本,我就算開命令提示字元以 shutdown /s 他照樣是安裝完更新後才關機。所以我就上網去找該怎麼關掉那個該死的自動更新。答案就是下面這個:
Win Updates Disabler v1.4