Mac Pro更换SSD后,在Win7下启用ACHI的方法AHCI

在Mac Pro下更换SSD后,如果安装Win7,要将SSD改为AHCI模式是非常麻烦的。本文介绍如何将Mac的Win7下的SSD改为AHCI方式驱动,及几种常见问题的处理。

一、当Lion与Win7双系统并存时,如何将Win7的SSD驱动模式改为AHCI

1.1、进入Win7系统,修改注册表 通知系统下一次开机,加载AHCI驱动:

开始菜单,运行,regedit,进入以下目录:
HKEY_LOCAL_MACHINESystemCurrentControlSetServicesmsahci
HKEY_LOCAL_MACHINESystemCurrentControlSetServicesIastor(可能没有)
HKEY_LOCAL_MACHINESystemCurrentControlSetServicesIastorV

在右窗格中,右键单击“名称”列中的“Start”,然后单击“修改”,在“数值数据”框中,键入 0 ,然后单击“确定”。

1.2、准备一个U盘,进入Mac 的Lion系统,利用磁盘工具将其格式化为“日志式”(第一个选项),将U盘命名为“UPan”,然后下载patchedcode.rar,解压后,将patchedcode.bin拷到U盘根目录。

1.3、【如果没有联网恢复系统的Mac,请跳过此步】将联网的路由器的DNS改为114.114.114.114与8.8.8.8

1.4、进入联网恢复系统或者用Lion的安装U盘或光盘引导,进入安装界面,选择“终端”,以修改MBR信息。

联网恢复系统进入方法:重启机器,按住Option键不松,出现磁盘选择界面时,按下“Command+R“键,然后选择3步骤中的路由器进行连接,经过漫长的下载(如果不按步骤3改DNS的话,在国内大概需要2-3小时下载,改了DNS后大概10来分钟就可以了)后,即可进入联网恢复系统。

进入终端后,输入以下命令:

cd /Volumes/UPan

dd if=/dev/disk0 of=backup.bin bs=512 count=1

(备份现有的MBR,运行后,会显示success,可以输入ls命令,看下U盘目录下是否新添加了一个backup.bin的文件)

diskutil umountdisk /dev/disk0

(卸载SSD,注:回车后,一定要看到success类似的成功信息,如果显示忙无法卸载,需要重新启动后再次进入终端重新执行卸载)

dd if=patchedcode.bin of=/dev/disk0 bs=440 count=1

(将patchedcode中的mbr写入到硬盘,回车后,一定要看到成功提示)

reboot

重启后,进入Win7,系统就会自动重新加载AHCI驱动,然后提示需要重启,重启一次后即可。

 

二、当更换了新的SSD,没有Lion系统,只安装Win7时,如何启用

2.1、准备一个U盘,将1.2中的patchedcode.rar下载解压后的patchcode.bin放到U盘根目录,并下载ahci驱动解压后放到此U盘下。

2.2、先用Win7光盘安装系统,在安装win7选择磁盘或分区时,点击“加载驱动程序“,浏览——U盘的2.1中的ahci驱动的目录,将”显示未签名的驱动“勾上,选择第一个驱动,然后安装系统。

2.3、系统安装完成后,进入win7,运行regedit,将1.1中的注册表三个键”start”改为0

2.4、重启电脑后,按1.3,1.4中的步骤进行操作即可。

当完成AHCI驱动后,进入Windows 7系统,即可在“设备管理器”中看到SSD已由原来的IDE模式变为了AHCI模式,此时,我们还可以下载IntelRST驱动来优化SSD的使用以延长其寿命。

 

三、常见问题

3.1、Win7下的BootCamp控制面板打不开,显示”尝试访问启动磁盘设置时出错“

网上很多贴子说,只要下载一个经过改动的c:windowssystem32AppleControlPanel.exe替换后即可,但是我尝试过多次,没有一次成功的。后经过测试,在本人的电脑上,是因为Intel RST服务与BootCamp冲突导致的,只需在控制面板——程序中,将“英特尔快存储技术”卸载,重启电脑后即可打开BootCamp控制面板。

3.2、Mac启动Win7时,白屏时间过长

这是因为Mac在搜索启动磁盘引起的,我们可以在Win7的BootCamp控制面板中,选择“启动磁盘”后,应用一次,即可明显减少白屏的时间。(至于bootcamp控制面板打不开,请参考3.1)

3.3、有没有必要装“intel RST“的问题

网上很多贴子说,intel RST只对多块磁盘时有用,即主要用于一块SSD与一块HDD搭配使用时,可以利用此技术,将SSD作为HDD的缓存盘,以便使得HDD具有SSD差不多的读写速度,如果只有一块SSD时,无须安装Intel RST。但本人还是建议安装intel RST,因为我检索了一些资料,除了在RAID方面的功能外,Intel RST技术还能有效地平衡SSD的擦写,减少错误数据的产生,并有效延长SSD的使用寿命。我用AS SSD Benchmark进行过测试,没有安装Intel RST时,得分确实要比安装了Intel RST要低50分左右,但与SSD的稳定性与寿命相比,这点速度上的差别是无关紧要的。

3.4、联网恢复系统下载过程中出现错误

请如下步骤重置MAC的PRAM即可。

3.4.1、关掉电脑
3.4.2、同时按下这四个键:Option+Command+P+R,然后按电源键开机
3.4.3、在开机出现灰色屏幕时按下并按住第2步中的4个键,值到Mac的第二次重启(会明显感觉到启动声音变成了出厂时的最大音量)
3.4.4、释放这几个键。

3.5、重置了PRAM后,Mac启动的“Pong”声音过大

这个声音无法在win7中修改,如果要修改,需要进入Lion系统中(如果你的新SSD只有Win7,那请换上原来的Lion的硬盘重启),将系统音量调小才可以。可以在Lion下安装一个叫StartupSound的软件,然后在偏好设置最下方找到这个工具再设置。或者,通过Lion的终端输入命令,如“sudo nvram SystemAudioVolume=%80”来控制。

双系统下丢失OS X系统引导的修复方法

起因
在通过Boot Camp安装完Win8之后,发现只有一个分区,就在Win8的磁盘管理中通过“压缩卷”功能对当前系统分区操作,扩展了一部分未使用的容量出来,于是在重启系统之后发现引导界面中“Macintosh HD”引导项不见了,在一番折腾之后(貌似是合并刚刚扩展出来的空闲空间)我把“Recovery HD”也弄丢了。。。

现象
尝试着回忆之前做过的操作,并试着修复,不过失败了,把当前情况记录如下:

  • 在Windows系统下可以正常加载OS X分区(Boot Camp驱动已装),分区类型显示为HFS(右键该分区,查看属性)
  • 在第一次重启时仍可看到“Recovery HD”,进入“Recovery HD”后,OS X 分区显示为:disk0s2,分区类型显示为:“MS-DOS”(也或许是“MS-FAT”之类,此部分为回忆,细节已忘)

分析
既然分区内数据都在,并且在Recovery环境下显示的分区类型有误,猜想可能跟分区表/分区格式有关。在一番查找后,看到本论坛的一个帖子:【Mac技术组】Mac 系统引导过程概述 & BootCamp  的秘密,仔仔细细地读了两遍后我注册了威锋网账号。因为这篇文章写得太好了,解答了我以下几个问题:

  • 磁盘分区表目前主要有两种:MBR 与 GPT,并且把 GPT 的结构大概读了下
  • OS X 的磁盘分区结构
  • Mac 引导系统的过程
  • 如果同时存在MBR与GUID,那么EFI会读取哪个分区表?(既混合分区,帖子里有细说)

于是我决定记录下这个问题,自己的思考以及最后如何解决问题的,并分享出来。

在了解了帖子中的大部分概念后,这个情况就感觉清楚多了,那么我需要解决这几个问题:

  • 如何确定磁盘所使用的分区表类型(MBR or GPT)
  • 如何查看某个分区的GUID(是否是OS X分区的GUID变更导致引导时找不到此系统)
  • 如何更改分区类型ID(如果是,那么我需要重新设置这个分区ID)

对于以上几个问题,简单回答如下:

  • Win8磁盘管理或者第三方工具DiskGenius都可以查看(具体为:如果显示“转换成 MBR 磁盘”,那么该磁盘必然使用的是 GPT)
  • DiskGenius 可以查看
  • DiskGenius 无法更改GPT格式磁盘的分区ID,需要使用Win8自带命令行程序:`diskpart`

解决
首先是通过DiskGenius查看GUID,然后在全局唯一标识分区表查询,下图这个是微软的基础数据分区的GUID,需要更改为:48465300-0000-11AA-AA11-00306543ECAC(HFS)

然后是通过`diskpart`命令更改GUID,我先是直接在Win8系统下操作,因为分区已被Win8挂载,尽管我也加了“override”选项,依旧是失败。想起之前通过BootCamp助理创建的Win8安装U盘,于是换了U盘引导,顺利更改。

通过U盘启动后进入“修复计算机”,找到并打开CMD,在CMD下执行`diskpart`,子命令如下:

  1. list disk
  2. select disk 0
  3. list partition
  4. select partition 2
  5. set id=48465300-0000-11AA-AA11-00306543ECAC

复制代码

在更改分区ID后,关机再开机,同时按住Option键:Macintosh分区回来了^_^

下图是更改“Recovery HD”分区的(子命令可以缩写为前三个字符)

再打开DiskGenius软件查看GUID:

结语

Mac 系统引导过程概述 & BootCamp 的秘密

前言

  • OS X 与 Windows 在引导流程上有很大的差别,而且在 Mac 上运行 Windows 需要经过特殊的处理。造成这种差异的原因在于磁盘分区表格式。

分区表

  • 一个磁盘抛开物理组成部分的话,它就是一个地址序列,这个序列从 0~n-1 ,每个地址包含 512B(字节)的空间。一般我们将这些地址称作逻辑块地址(LBA),每块由 512B 组成。分区表告诉操作系统,磁盘的分区有几个,从哪里开始到哪里结束。当将一个磁盘插入已经含有操作系统的机器上时,操作系统会检索这个磁盘的分区表,并正确认识它的分区结构。一个磁盘是先有分区表,后有分区,然后才有文件系统,有了文件系统才能被操作系统读写删。

分区表格式与系统引导的关系

  • 磁盘分区表格式目前主要有两种,分别是 MBR 分区表 和 GUID 分区表,两种分区表的主要区别在支持的分区数量上。前者仅支持4个主要分区,后者则可以扩展到超过128个。
  • MBR,即 Master Boot Record ,位置在磁盘的第一个逻辑扇区,即 LBA0 的位置。一个逻辑扇区仅有 512B(字节) ,而且分给 MBR 分区表 的只有 64B ,每个分区占分区表的 16B ,剩下的字节由 MBR 引导代码和其它组成。因为每个分区只有 16B 大小的分区表记录,所以寻址最大只能到 2.2TB 。下图的绿色部分
  • PBR,即 Partition Boot Record ,位置在每个磁盘分区的开始部分,占用扇区不定。这个扇区一般保存着操作系统引导程序的所在位置。下图的红色部分。
  • 文件系统,File System ,操作系统对磁盘的所有操作都需要经过文件系统,删除文件指的是在文件系统里删除文件的索引条目,创建文件就是在在文件系统里添加索引条目并将具体数据写入磁盘。常见的文件系统格式有: FAT exFAT NTFS HFS+ 。文件系统位置一般在PBR之后。下图黄色部分

 

 

  • 传统的 BIOS 引导操作系统过程如下图:

 

 

  • 计算机器开机后,固化在 ROM 里的 BIOS 就会被加载到内存运行,BIOS 自检完毕以后加载 COMS 的参数,通过 COMS 的参数, BIOS 程序加载启动磁盘的 MBR 到内存里运行。通过运行 MBR 的代码,记录在 MBR 分区表中,标记为活动分区的磁盘分区 PBR 被加载到内存。与 MBR 类似,PBR 在运行后加载操作系统的引导程序到内存运行,例如 Windows 的 bootmgr 。当引导程序运行后,操作系统内核就被加载运行,完成从 BIOS 程序中接手的引导流程。
  • 传统的 BIOS 比较低级,它不能像操作系统一样识别文件系统,所以磁盘必须要有一个固定的物理块作为引导块(Boot Block),这个引导块就是 MBR 。
  • GPT,即 Globally Unique Identifier Table ,全局唯一标识码分区表,简称 GPT 或 GUID 分区表(下面将混用这两个称呼)。由于 MBR 分区表 的局限性(还有 BIOS 的),GPT 诞生了。GPT 由 GPT 头和 GPT 主体,GPT 备份 组成。起始于磁盘 LBA1的位置,相对的 LBA0 仍然为 MBR ,但是这个 MBR 是被保护的,没有引导代码,仅仅有一个被标识为未知的分区,当支持 GPT 分区表的操作系统检索到这个 MBR 后就会自动忽略并跳到 LBA1 读取 GPT 分区表。如下图,由于篇幅的关系,表的长度比例不等同与实际在磁盘地址里的实际比例。

 

 

  • EFI,是一种取代传统 BIOS 的一种技术。如果将 BIOS 比作是一个程序的话,那么 EFI 就是一个简化的操作系统。比起传统的 BIOS ,EFI BIOS 有更多的扩展性。下图介绍 EFI 引导操作系统的流程。

 

 

  • 在 EFI 系统启动后,GUID 分区表就会被识别,之后 EFI 系统就启动 Boot Loader 程序加载操作系统内核。对于分区表格式为 MBR 分区表 的磁盘,EFI 系统会 先启动 CSM 兼容模式后按传统 BIOS 的步骤加载操作系统的内核。如下图。

 


  • 一般的 EFI 系统仅能识别 FAT32 ,不同于 BIOS 只能识别固定位置的磁盘引导块。这意味着只要将引导程序放到 FAT32 分区里,EFI 系统就能通过分区表的指引找到这个保存着引导程序的 FAT32 分区。
  • EFI 系统是由模块化的 C 语言程序写出来的,所以通过添加或修改程序模块就能获得更多的功能。例如支持更多的文件系统,图形界面,甚至能使用浏览器浏览网页。


OS X 的磁盘分区结构

  • Mac 很早前就使用了 EFI ,因此在引导上与上文提到的 EFI 引导方式类似。另外,Mac 是使用 GUID 分区表  格式的磁盘。结构如下图:

 

  • OS X 是不需要 PBR 的,引导是直接从启动分区里找到引导程序加载内核。


Boot Camp 引导

  • 自从 Mac 使用 x86 架构以后,在其上面运行 Windows 已经成为了可能。苹果在 Mac 上开发了一种引导 Windows 的技术,叫做 Boot Camp 。
  • 在探讨 Boot Camp 之前,混合分区表格式需要引起关注。在我们较早前的讨论里得知,Windows 和 OS X 是分别使用两种引导方式的,前者基于传统 BIOS ,后者基于 EFI ,不幸的是 BIOS 是无法引导GPT 磁盘里的操作系统的。为了解决这个问题,混合分区表的概念产生了。
  • GPT 磁盘保留了一个 Protect MBR ,在一般情况下这个 MBR 是空白的。Mac 开机后 EFI 系统直接跳过 MBR 读取 GPT 分区表。假如我们在这个 Protect MBR 上写入分区表和引导代码后会怎样呢?当 EFI 检索到这个磁盘后会加载那个分区表?
  • 带着上面的两个问题,我们来探讨一下。EFI 是一个简化的操作系统,那么可以通过加载一些特别的程序让它只读 GPT 分区表是可能的。同样,让它只读 MBR 分区表也是可能的。这就是 BootCamp 程序的真面目。
  • 创建混合分区非常简单,使用 OS X 的 Boot Camp 助理安装 Windows 时自动产生。这时 GUID 分区表起始的4个分区就复制到 MBR 分区表。不使用 Boot Camp 助理也是可以手动创建的,通过磁盘工具在 GPT 磁盘上创建一个 FAT32 或 exFAT 分区后,系统自动地将 GUID 分区表的内容复制到 MBR 分区表。
  • EFI 系统通过加载 Nvram 的参数来决定是否启动 BootCamp程序。启动过程如下图:

 

双系统磁盘分区结构

  • BootCamp 首先加载磁盘上的 MBR 到内存并运行,这时标记为活动的 BootCamp 分区 PBR 被找到,接着加载 bootmgr 后引导 Windows。值得注意的是,GPT 保护分区包含了整个 GPT 头 和 GPT 主体和第一个 EFI 系统分区。

 

注意事项

  • MBR 分区表只支持4个主要分区,如果按照一般的情况来安装 Windows 的话是不能再添加一个分区的。如果不幸对这个磁盘进行了分区,根据分区的方式会出现如下情况:

 

  • 安装 Windows 时或后将 GPT 保护分区格式化
    GPT 保护分区包含从 LBA1~LBA409639的所有数据,其中 GPT 头 和 GPT 主体部分都在这里。格式化这个分区意味着磁盘从混合分区表格式变为 MBR 分区表格式。尽管两个系统都还能继续启动,但对于 OS X 来说是灾难,首先磁盘无法进行动态分区,无法用 Boot Camp 助理移除 WIndows ,无法更新 OS X 等等。

 

  • 安装 Windows 后在 OS X 里添加一个分区
    这种做法对于 Windows 来说是一个灾难,当在 OS X 里添加一个分区后,GPT 分区表会跟 MBR 分区表同步,这时 GPT 已经有5个分区了,第5个刚好是 BootCamp ,所以 MBR 分区表自动将 BootCamp 踢出去,造成 Windows 无法引导。
  • 正确的多分区安装方法必须要在安装 OS X 前做好磁盘分区规划。如下表:

 

GPT保护分区
Windows
共享1
共享2
OS X
Recovery HD

 

  • 从 GPT 保护分区开始到共享2会被复制到 MBR 分区表,剩下的部分 MBR 分区表会识别为可用空间,但是无法使用这片可用空间创建任何分区。


题外

  • 对于 EFI 启动的操作系统来说,EFI 提供底层硬件的接口,这样的好处在于保护硬件,而且让驱动的更新更方便。

 

  • 传统的 BIOS 启动 Windows 在 BIOS 移交控制权后,Windows 全权掌握硬件服务层。
  • 在 EFI 主板上使用兼容模式 CSM 来启动的 Windows 也是类似的。
  • 对比起 WIndows 来说,OS X 并不掌握全部的硬件服务,OS X 需要 EFI 系统给出的硬件编程接口才能访问硬件。
  • BootCamp 启动的 Windows 则有点特别,与普通 EFI 主板上的兼容模式不同,Windows 在访问硬件需要经过 EFI 系统。这样做的作用就是 EFI 全权控制着 WIndows 的硬件访问能力,只要苹果有意,完全可以在驱动上限制 Windows 。
  • 从 Boot Camp 引导的原理来看,要在 Mac 上实现单独安装 Windows 是非常简单的。Boot Camp 程序是固化在 EFI 系统里的,所以通过简单设置一下 Nvram 的变量,就可以引导 Windows,无需混合分区表格式。修改 Nvram 变量需要通过运行在 WIndows 下的 BootCamp 程序,这意味着,只要装好了苹果提供的 BootCamp 驱动,你的 Windows 就能运行在 Mac 上。更有甚者在第二块磁盘上安装一个完全独立的 Windows ,而且是基于纯净的 MBR 分区表上安装,这样可以忽略掉与 OS X 共享一个磁盘又不能多分区的尴尬。
  • 尽管在 Mac 上单独装 Windows 也是很简单的,但 Mac 本身的 EFI 版本比较低,比很多 PC 主板的还低,所以一些较旧的型号甚至连 U 盘也不识别。这种旧型号的机器想要用上 Windows 得将磁盘拆下接到其它机器上装好系统再装回 Mac 。