15款MBP在可移动磁盘WTG的注意事项

最近一直有人在质疑我的这篇《15款MBP在U盘WTG解决方案》的帖子,尤其是可移动磁盘的部分。质疑是无可非议的,毕竟帖子缺失有很多含混不清的地方,有很多细节也没有说明。为正视听,也为了解决这个悬而未决的问题,今天专门发出这篇帖子,讨论15款MBP在可移动磁盘的注意事项。

关于15款MBP在可移动磁盘WTG的讨论

00.请注意,15-mbp只支持UEFI启动。下文中如果没有特殊说明,Mac均指15款MBP,wtga均是wtga_3310。
01.在进行WTG之前,我们需要了解UEFI的现状和windows的启动过程。Windows8之后,微软启用了对UEFI的支持,并且在Microsoft UEFI中加入的Secure Boot选项,并且强制所有OEM厂商开启Secure Boot,虽然处于反垄断法的压力微软要求Secure Boot选项可以关闭,但是确实存在有的厂家拒绝提供关闭Secure Boot的选项。同时形成了一个事实,所有的Microsoft UEFI Boot公钥均掌握在微软,这代表着微软完成了在预装windows系统的OEM_PC中的引导垄断,这就使得微软可以将自己的Windows操作系统提前到UEFI模块启动的同时启动,也就是将寻址引导和系统加载同时进行。这个表现为,我们在可以看到,厂商logo在上、Windows加载圆圈同时在下面转的场景。在这种显示状态下,UEFI(硬件/机制/指令集)的启动完成,BCD文件的寻址引导开始,同时还加载并运行了WindowsRE。这个WindowsRE包含了启动修复,系统还原,完整还原,Windows诊断工具,命令提示符五个功能部分,而且WindowsRE的权限为最高的system权限。参照微软官方的说明,如果想将Windows部署到基于UEFI的电脑,Windows的分区要求为:WindowsRE工作分区,系统分区,Microsoft保留分区,其他应用程序分区。而在Mac下,苹果与微软达成共识,通过苹果的Boot Camp引导Windows系统。如果你曾经安装过Boot Camp Windows,你会发现,磁盘被分为五个区:ESP(引导分区),Macintosh(苹果Mac OS X系统),WinRE,Boot Camp Windows(Windoes系统),Based System(苹果恢复系统)。说这么一大堆,我要表达的是,Windows在UEFI模式下启动必要条件是ESP中的BCD指向和WinRE的正常加载。这意味着一定不能勾选“禁用WinRE”。
02.关于可移动磁盘性质的U盘,对于U盘,@ykl2001 比我更熟悉,也和他问过很多U盘的知识。现在可以确定,有几款sandisk的U盘是不能WTG的,以cz48为代表。这里要说明的是,不是所有U盘都可以进行WTG。
03.可移动磁盘的特性,Windows下只能识别第一个分区(hd0),只能给第一分区生成盘符,只能对第一分区的文件进行操作。wtga在可移动磁盘下不能勾选UEFI+pgt的选项。所以,我们采取了自建ESP分区和把ESP分区后置的方法,可以随时对VHD文件进行操作,同时wtg系统启动后,未占用的空间会形成D盘。
04.关于磁盘分区表的模式。如果磁盘选择了gpt模式,在wtga的工作过程中会自动生成EFI文件夹;如果磁盘选择了mbr模式,在wtga的工作工程中只会生成一个Boot文件夹。这意味着,在wtga部署过程中,磁盘须为gpt分区表。有人提出,wtga在mbr没有生成EFI文件夹是个案,但在我的机器上确实没有出现。
05.vhd与VHDX,根据微软官方描述,vhdx的优势在于增加存储容量和优化对大扇区存储器的支持,主要应用于企业级数据中心建立。我们可以确定,U盘,就算是1TB的超大U盘,与不嫩算是大扇区存储。而且,bootice是基于小扇区的引导维护工具,对于vhdx的优化和稳定性并不优于vhd,所以,我个人更推荐vhd模式。
06.关于“重新分区”选项。计算机更善于执行单一重复的工作,所以一次性下达多个不同指令出错概率必然增大。所以我个人建议手动用diskgenius进行重新分区操作。
07.处于同样的目的,不建议在wtga的部署工作中添加.net framework 3.5,更建议在系统释放后手动添加。
08.关于Boot Camp的驱动,请及时关注苹果官网,及时更新相关驱动。同时,完全不建议使用驱动精灵的第三方工具。Mac OS X和Mac电脑本身相对于Microsoft_OEM_PC过于精致。
09.关于强迫症,虽然在Microsoft_OEM_PC上ESP分区只保留了128MB-200MB,但是,wtg系统在安装Boot Camp管理端后,实际在ESP中是多系统引导,简单说,你是可以直接从wtg的Windows系统下直接回到Mac OS X,而并不需要手动关机,再冷启动。所以,128-200MB的空间显然是不足的。所以,分区大小强迫症还是用在第一分区大小的调整更为合适。
10.关于VHD本身,系统部署时没必要勾选“固定大小VHD”,这样部署出来的vhd文件占用空间为7.5GB左右,为最小,既减少了出错概率,又方便后续的复制工作。同时按照@ykl2001 的提示,vhd文件的大小(这个大小是vhd文件最大值的限定)建议写为可移动磁盘第一分区可容纳的最大数值。不中转VHD意味着直接在可移动磁盘中创建VHD文件,减少了对内存和虚拟内存的压力,同时先创建后部署可以减少丢包的错误。

15款MBP在可移动磁盘WTG的详细操作步骤(所有的软件均适用管理员权限运行!)

01.用diskgenius删除可移动磁盘内所有分区。
02.将可移动磁盘的分区表模式转换为gpt模式,即软件中的GUID模式。
03.新建占用全盘空间的NTFS分区,不建立ESP或MSR分区,保存更改,格式化新分区,为新分区添加盘符。退出diskgenius。
04.使用wtga软件部署系统,模式为VHD模式 ,勾选不中转VHD。
05.如果不能保证所使用的install.wim为最新,请导入Mac USB 3.0补丁。
06.复制部署产生的EFI文件夹和win8.vhd文件到另一磁盘。
07.diskgenius下删除可移动磁盘内所有分区。
08.diskGenius下对可移动磁盘分区,第一分区占磁盘主要部分、NTFS、不要创建MSR分区;第二分区占用少量空间、ESP(在软件中叫做EFI system partition)。
09.保存分区表,退出diskgenius。
10.打开bootice,编辑wtga部署生成的BCD文件,模式为vhd,Disk指向可移动磁盘,Partition指向第一分区hd0,File指向\win8.vhd。
11.退出bootice,打开diskgenius,删除第一分区,为ESP分区指定盘符,在资源管理器下将EFI文件夹复制到ESP分区。
12.diskgenius下删除ESP分区盘符,右键强制删除ESP分区中除EFI文件夹外所有文件,重建第一分区,分配盘符。
13.退出diskgenius,资源管理器下将wtga部署的vhd文件复制到第一分区。
14.关闭windows,在Mac下开机按option,从标注为EFI的磁盘启动。进入系统释放过程。
15.系统会自动释放,“准备就绪”之后会弹窗:安装程序无法将Windows配置为在此计算机的硬件。
16.不管弹窗,按Shift+F10,调出cmd。
17.输入“cd oobe”(不包括引号,中间两个圈时小写字母o),回车。
18.输入“msoobe”(不包括引号,六个字符全部是小写字母),回车。系统继续释放,选择语言和输入法,进入个性化设置。
19.设置颜色,计算机名称,参数调整,本地用户名。此时再次弹窗:安装程序无法将Windows配置为在此计算机的硬件。
20. 在cmd输入“exit”(不包括引号),回车。cmd窗口会关闭。焦点回到弹窗。
21.在弹窗处回车(就是选择确定),系统自动重启,按住option,选择可移动磁盘启动。
22.系统提示“您可以从应用商店获取新的应用”,“正在处理一些事情”,“尽情享用吧”。进入桌面。
23.安装Boot Camp驱动。

viploser对于WTG的一些感悟

这篇帖子实际是自我反思,对技术的,对帖子的,对个人的。自从发布了三篇“教程”贴后,看到很多人在照着我的帖子wtg,当然,有人成功,有人失败。有人在各种引用和转链接,有人在质疑。我的技术路线分两种:如果是fixed磁盘,就走传统,相当于Boot Camp在另一块磁盘上;如果是removable磁盘,就按照http://bbs.luobotou.org/thread-6511-1-1.html的方法建立一个可以引导的U盘,引导的系统指向自己的VHD。

在我的新人贴里我说过,在15-mac下wtg各种失败,只是因为mac主板固件规定的引导方式不同。Microsoft官方说windows to go无法支持mac也是因为长期以来mac存在三套不同的引导机制:在mac os x 10.5之前有两种(乔布斯在WWDC曾公开,在这之前,甚至所有的mac系统都被编译成powerPC和intel两种版本以适配不同构架的硬件),我们认为最近(13-late/mac os x 10.8+)的引导方式属于第三种。所以,在制作成形wtg系统之前,请考虑,你是为了mac,还是pc:mac-wtg要对准靶点;pc-wtg要广泛兼容。

不得不承认,windows to go和hacintosh一样,是一个相对小众化、绝对精英化的IT范围。hacintosh的精巧绝伦之处在每一台电脑的硬件都不同,每一次调整DSDT都是一种心跳的经历;而windows to go的华美之处在于每一只U盘都是独特的,不同的主控和闪存、不同的焊接方式都会让结果不同,再加上bios firmware的限制,做一只“完美”(虽然不存在)的wtgU盘才是享受的。

对于参照我的“教程”失败的WTGer们,我还有这么几点要说:1.我研究的并不是wtg,而是15-mbp的wtg,所以,我目前发布的“结局方案”只是我在15-mbp上的成功经验,而不是“教科书”,更不是“圣经”,一切教程都以nkc3g4的说明帖为准。2.Microsoft UEFI有一道SecureBoot的“保护”机制,官方说是为了防病毒保障系统下层安全。这个可以导致非认证的系统无法引导。这个非认证,指的是uefi下没有公钥的系统。举个最简单的例子就是预装win8的电脑直接ghost安装win7的话是无法启动的。3.Mac的引导和windows的uefi是不一样的。我们之所以认为mac采用了uefi启动,是因为它在硬盘中隐藏了一个ESP分区,而这个所谓的“ESP”分区,也是在windows下用diskgenius识别出来的(无论是Boot Camp还是wtg安装的windows)。所以,具体mac采用了什么启动方式,是没有外人知道的,apple也讳莫如深。我们从外围(坊间传闻)可以推测,他们用的并不是同一款协议,具体请自查uefi的en_wikipedia。如果有精力可以看uefi的协议全文。4.即使在win的uefi范畴内,不同厂家的bios程序也是不同的,比如部分Lenovo的bios会锁定SecureBoot为ON,再比如部分dell的bios程序会锁定无法打开bootmenu。还有靠固件包从legacy bios升级到oaf的bios无法确认其功能的完整性和真实性。5.虚拟机的限制实在太大,如果赶上bios本身不支持虚拟化,那虚拟机的结果和真机变数就真的很大了。虚拟机搞搞杀毒软件、搞搞未知程序还是可以的,但研究引导和启动,确实不合适。

技术的提高完全在于折腾,我为了结局SD卡的wtg,单单是wtga的部署过程,我经历了不下50次。当年为了hacintosh,也基本半个月没正常用过电脑。但正是这种折腾的过程,才能在成果出现之时,体现出技术之美。这也就好比创新性实验,百转千回的配方,千锤万凿的试验,望穿秋水的统计,心烦意乱的等待,才能最终体会到论文发表时刻的欣喜与感动。

15款MBP在U盘WTG解决方案

经过又几天的折腾,已经实现了15款Macbook Pro Retina在U盘上的WTG,识别为本地磁盘的U盘、识别为移动磁盘的U盘都尝试成功,现在公布解决方案。此问题至此有解。

[设备]
Mac:Apple Macbook Pro 13.3 Retina (MF840CH/A)
U盘(本地):擎泰SK6221主控,英特尔SLC闪存,USB3.0
U盘(移动):toshiba Trans Memory Mx,32GB
系统:cn_windows_8.1_enterprise_with_update_x64_dvd_6050374
工具:wtga_3290,Diskgenius_3.8.0.0_pro单文件版
模式(本地):传统模式,UEFI+gpt
模式(移动):VHD模式,勾选重新分区,勾选不中转VHD

[步骤](本地)
本地U盘的WTG步骤和移动硬盘完全相同。
01.win环境下,用diskgenius删除U盘下所有分区,新建一个占用全盘的NTFS分区。
02.win环境下WTG,工具为wtga_3290,磁盘为量产后的U盘,模式为传统模式,勾选uefi+gpt,导入USB3.0补丁。
03.mac按住option开机,选择EFI磁盘启动。系统自动释放。
04.安装Boot Camp驱动,这里安装全部驱动即可。

[步骤](移动)
移动U盘的WTG步骤和SD卡下WTG的步骤基本一致。
01.win环境下WTG:使用U盘为toshiba Trans Memory Mx;VHD模式,vhd文件大小默认,勾选非交换VHD,勾选重新分区。
02.复制出第一步部署生成的全部文件(整个EFI文件夹和win8.vhd)到另一个磁盘。
03.DiskGenius下对U盘分区,第一分区28GB,NTFS;剩余空间建立ESP分区。
/*之所以把ESP分区后置,为了保证28GB为第一分区,win下只能识别可移动磁盘除MSR的第一个分区*/
04.将第一步生成的EFI文件夹导入ESP分区。
/*具体方法:删除分区0,DiskGenius给ESP分区分配盘符,文件管理器下把EFI文件夹复制进去,删除ESP分区盘符,重建分区0。*/
/*注意此处不要使用精简的EFI文件,精简EFI大概率语言报错!*/
05.将第一步生成的win8.vhd文件复制到U盘的第一分区。
06.导入USB3.0补丁。
/*在此处而不是第一次部署导入USB3.0补丁是为了保证能保留下一个干净的vhd文件,防止以后出问题。*/
07.用bootice修改U盘ESP分区中BCD文件:VHD模式;Disk指向U盘;Partition指向0:(NTFS,28GB);File指向\win8.vhd。
/*此处可以进行EWF的导入工作。*/
08.Mac按住option开机,从U盘启动。
/*如果无法识别U盘或者释放前蓝屏,可以不导入USB3.0补丁,个别U盘确实有问题。*/
09.系统会自动释放,“准备就绪”之后会弹窗:安装程序无法将Windows配置为在此计算机的硬件。
10.不管弹窗/*不要对弹窗进行任何操作!不要按回车!*/,按Shift+Fn+F10,调出cmd。
11.输入“cd oobe”(不包括引号,中间两个圈时小写字母o),回车。
12.输入“msoobe”(不包括引号,六个字符全部是小写字母),回车。系统继续释放,选择语言和输入法,进入个性化设置。
13.设置颜色,计算机名称,参数调整,本地用户名。此时再次弹窗:安装程序无法将Windows配置为在此计算机的硬件。
/*此时同时存在cmd窗口和弹窗,光标在cmd,鼠标无效。不要对弹窗进行任何操作!*/
14. 在cmd输入“exit”(不包括引号),回车。cmd窗口会关闭。焦点回到弹窗。
15.在弹窗处回车(就是选择确定),系统自动重启,按住option,选择U盘启动。
16.系统提示“您可以从应用商店获取新的应用”,“正在处理一些事情”,“尽情享用吧”。进入桌面。
17.安装Boot Camp驱动。

[特别提示]
01.一定要保存仅进行了部署的vhd文件,仅进行部署的含义是没有导入USB3.0补丁,没有进行任何启动,没有任何修改。此vhd文件可以在各种失败、错误后重新使用,以免再次进行系统部署。
02.U盘鱼龙混杂,不是任何一个U盘都可以进行wtg的,有一些超低价格的杂品U盘,闪存芯片和主控都是电子垃圾拼凑的,基本就不要尝试了。
03.金士顿的DataTraveller不同批次主控和闪存都不同,在使用体验上有高速版和低速版,连拷文件都不好使的U盘还是不要wtg了吧。

[U盘来源]
我所使用的识别为本地磁盘的U盘,是论坛里@枫林做的,个人亲测好用,而且透明的很漂亮。
另一个识别为移动磁盘的U盘,买鼠标送的,没有什么特殊的地方,不是单独选的,也没检测过主控或是闪存。

[简述]
简单的说,就是自建一个带有ESP的可启动U盘,ESP的BCD指向本U盘中的vhd。之后的问题就是用system权限完成系统释放。

[一些建议]
关于是不是要勾选“重新分区”和“非中转VHD”,可以自己尝试。不同的环境,不同的U盘,产生的效果确实不同。

15款MBP在SD卡WTG解决方案

经过几天的折腾,已经实现了15款Macbook Pro Retina在SD卡上的WTG,现在公布解决方案。此问题至此有解。

[设备]
Mac:Apple Macbook Pro 13.3 Retina (MF840CH/A)
SD卡:Transcend JetDrive Lite 128GB
系统:cn_windows_8.1_enterprise_with_update_x64_dvd_6050374
工具:wtga_3290,ghost11.2,Diskgenius_3.8.5pro
模式:VHD+UEFI

[名词]
部署:wtga软件完成的工作。本质是把install.wim解压缩并且复制到指定分区或vhd,并且生成启动相关参数文件的过程。
释放:部署好的系统经过基础个性化设置成为完整可操控系统的过程。简单的说就是从选择语言到进入桌面的过程。

[步骤]
01.纯PC下WTG:PC环境为win8.1pro,使用U盘为Corsair Survivor 32GB,VHD模式,vhd文件大小默认,勾选非中转VHD。
02.DiskGenius下对SD卡分区,第一分区120GB(12885MB),NTFS;剩余空间建立ESP分区。
/*如果正好是120*1024=12880MB,会显示为119.9GB,如果有强迫症,可以12885MB,保证显示120GB*/
/*之所以把ESP分区后置,为了保证120GB为第一分区,win下只能识别可移动磁盘的第一个分区*/
03.提取第一步部署生成的EFI文件夹,全部导入SD卡的ESP分区。
/*具体方法:删除分区0,DiskGenius给ESP分区分配盘符,文件管理器下把EFI文件夹复制进去,删除ESP分区盘符,重建分区0*/
04.用bootice修改SD卡ESP分区中BCD文件:VHD模式;Disk指向SD卡;Partition指向0:(NTFS,120GB);File指向\win8.vhd。
5.提取第一步部署生成的win8.vhd,复制到SD卡分区0。
06.SD卡插入Mac卡槽,按住option开机,从SD卡启动。
07.系统会自动释放,“准备就绪”之后会弹窗:安装程序无法将Windows配置为在此计算机的硬件。
08.不管弹窗/*不要对弹窗进行任何操作!不要按回车!*/,按Shift+Fn+F10,调出cmd。
09.输入“cd oobe”(不包括引号,中间两个圈时小写字母o),回车。
10.输入“msoobe”(不包括引号,六个字符全部是小写字母),回车。系统继续释放,选择语言和输入法,进入个性化设置。
11.设置颜色,计算机名称,参数调整,本地用户名。此时再次弹窗:安装程序无法将Windows配置为在此计算机的硬件。
/*此时同时存在cmd窗口和弹窗,光标在cmd,鼠标无效。不要对弹窗进行任何操作!*/
12. 在cmd输入“exit”(不包括引号),回车。cmd窗口会关闭。焦点回到弹窗。
13.在弹窗处回车(就是选择确定),系统自动重启,按住option,选择SD卡启动。
14.系统提示“您可以从应用商店获取新的应用”,“正在处理一些事情”,“尽情享用吧”。进入桌面。
15.安装Boot Camp驱动:先进入$WinPEDrivers$,删除AppleSPIDevice,之后运行setup.exe或者手动安装。
/*文件名可能不同,操作实质为删除SD卡卡槽驱动*/
/*安装驱动过程有一定几率浅蓝屏,我因为温度过高蓝过一次,有“:-)”表情的那种,百分数读到100%会重启,重启之后继续就好。如果驱动安装失误或错误,会直接没有表情的那种浅蓝屏,需要重新把vhd拷进去(把装坏了的替换掉),然后重新释放;所以个人建议把vhd做好备份,系统坏了可以随时救回来*/

[简述]
简单的说,就是自建一个带有ESP的可启动SD卡,ESP的BCD指向本SD卡中的vhd。之后的问题就是用system权限完成系统释放。

[分析]
系统会卡在“安装程序无法将Windows配置为在此计算机的硬件”,说明问题在windows而不是macbook/*如果是mbp的问题,会无法发现可启动SD卡或者直接无法引导*/。
所以我专门研究了windows系统的释放过程。安装过程中,msoobe的执行是Administrator权限(至少不是system权限),而cmd是system权限,用权限直接绕过了弹窗。

我的WTG经历 2015款rMBP在SD卡WTG的思路

[硬件环境]
电脑:2015款 Apple MacBook Pro 13-Retina
SD卡:Transcend JetDrive Lite 128GB
系统:cn_windows_8.1_professional_vl_with_update_x64_dvd_4050293

[前言]
我之前是用Hacintosh的,最折腾的时候win7+win8.1+ubuntu+hacintosh四系统,所以对引导的问题专门研究过。对于15-mbp在SD卡无法WTG一直认为是引导的问题,而不是系统的问题,之所以强调这一点,因为本人已经完美成功移动硬盘下的WTG,所用磁盘为WD My Passport Ultra。

[我的折腾流程]
01.在纯PC下WTG,工具为wtga_3280,硬盘为1T WD MyPassport ULtra 0830,模式为传统,勾选重新分区,勾选UEFI+gpt;导入USB 3.0的补丁。
02.Mac下部署系统,安装全部Boot Camp驱动,安装.net framework 3.5。至此,得到可以在mac下用的win环境。以下所说的win环境均指这个WTG出的win。
03.在win环境下WTG,工具为wtga_3280,U盘为Corsair Survivor 32GB,模式为VHD,VHD大小默认,勾选非交换VHD。
04.提取刚才得到的VHD文件,大小为7.3GB。
05.SD卡新建120GB NTFS分区,剩余空间新建ESP分区。DiskGenius提取win环境ESP分区的EFI文件夹,用bootice修改BCD文件:VHD模式;Disk指向Corsair Survivor 32GB;Partition指向0:(NTFS,120GB);File指向\win8.vhd。
06.复制第04步所得VHD文件进入120GB NTFS分区。
/*这里的第05-06步骤参考了http://bbs.luobotou.org/thread-6511-1-1.html,提取win环境EFI保证option开机可识别efi磁盘。*/
07.重启,从SD卡启动。
/*此处的结果有三种:第一种卡死在准备就绪,无限圆圈;第二种准备就绪后弹窗无法安装;第三种出现释放界面,选择语言输入法后弹窗无法安装。证明本方案失效!*/
08.在win环境下WTG,工具为wtga_3280,硬盘为任意移动硬盘(我随便借了一个空的),模式为传统,勾选重新分区,勾选uefi+gpt。不进行任何释放操作。
09.手动ghost刚才WTG得到的整个磁盘,gho文件包含ESP和系统两个分区。
10.在win环境下,手动还原gho文件到SD卡。
11.用bootice修改BCD文件:Partition模式;Disk指向Corsair Survivor 32GB;Partition指向0:(NTFS,120GB)。
/*提示,如果无法修改BCD,可疑提取BCD文件,修改后用diskgenius替换回去*/
12.关机,从SD卡启动。
/*此处的结果准备就绪后弹窗无法安装,重启后蓝屏,代码为1(0x很多0最后是1)*/

[目前成就]
1.在15款rMBP中已经完成移动硬盘下的WTG。
2.把SD卡插在卡槽内,开机按option可以识别EFI分区。
3.可以加载SD卡内的传统系统或VHD系统。

[未来折腾的方向]
/*其实这里才是本帖的重点,希望有精力的萝卜头们可以尝试一下,最近精力实在有限。*/
/*如果你不了解你正在进行的操作,请到此为止!本人只提供方案,对尝试引起的后果概不负责*/1.在SD卡里只存放系统文件,不存放任何的boot文件;在mac下安装Chameleon引导SD卡里的win系统。
2.在win环境安装移动磁盘识别补丁,将SD卡或者加读卡器的SD卡识别为本地磁盘,之后uefi+gpt。
3.在Ubuntu下或者Mac下wine工具软件。可以在即使是移动磁盘上分区并识别多重分区。
4.Mac下修改DSDT,把SD卡直接识别为磁盘乃至分区,而不是SD卡。这个搞过Hacintosh的应该了解内建机制。
/*请不要说楼主太监了一类的话,真的没有时间了,所以才仅仅发了个思路。*/
5.降级Mac的主板固件。/*前方风险巨大!请勿轻易尝试!*/

[结束语]
15-mbp上的WTG是必然可以实现的。