PCEVA,PC绝对领域,探寻真正的电脑知识

标题: Hackintosh 黑苹果 ssd分区4kb手工对齐终极教程(HDD同样适用) [打印本页]

作者: brunolee    时间: 2011-9-9 01:49
标题: Hackintosh 黑苹果 ssd分区4kb手工对齐终极教程(HDD同样适用)
本帖最后由 brunolee 于 2011-9-22 02:14 编辑

一,背景介绍

在硬盘容量以MB计的年代,每扇区512byte显得非常合适。但随着技术的进步,硬盘容量的增大,依旧保持512byte的扇区尺寸已经越来越不合时宜。随着存储密度的提高,磁头信噪比下降,必须在512byte之间加入40byteECC校验区,不仅效率低下,还浪费了巨大的存储空间。

于是4KB扇区走入了我们的视野,各大厂商纷纷推出4KB扇区的硬盘。4KB扇区之间也需要ECC校验,但是每4KB只需要100byte的校验数据,相比512byte字节ECC显然效率提高了很多。对于我们消费者来说,4KB扇区能够显著提高格式化容量,大约能够多出7%~11%的格式化容量。而且还能使硬盘的可靠性得到明显的提升。

不过为了过渡,现在的4KB逻辑扇区被模拟成8512byte逻辑扇区,以保证操作系统的兼容性。但这样带来一个明显的问题:扇区与簇的“校准”。

[attach]49759[/attach]

如果如上图所示,如果操作系统的4KB逻辑扇区正好对应4KB物理扇区,则驱动器读写一切正常,但如果如下图这样,操作系统的逻辑扇区卡在4KB物理扇区之间,那么将会严重影响驱动器的随机读取性能,对于ssd还会影响其寿命,因为ssd每次写入块是512KB,可想而知ssd“读--写”的过程对于ssd介质来说是一种怎样的摧残。

所以,对于我们日常使用来说,对齐4KB分区非常重要,不但能提高读取性能,对于硬盘的使用寿命和稳定性也有一定的提升。

对于windows7来说,操作系统在格式化磁盘的时候,已经为我们考虑到了这一点,所以只要使用windows7系统程序进行格式化的磁盘,应该都是对齐的。我们可以使用AS SSD Benchmark来查看一下分区对齐情况。

[attach]49714[/attach]

然而对于我们安装的mac osx来说,就远没有那么幸运了,分区经常是没有对齐的。这里借用一张网络的图片来说明问题。

[attach]49715[/attach]

上图显示红色 xxxxxxx BAD,就是分区没有对齐;如果显示的是 xxxxx OK,并且是绿色,那么分区就是对齐的。

那么怎么才能对齐4KB分区呢?请往下看。


二,原理、思路与方法


(一)原理

想要对齐4KB扇区,必须做到以下三点:

分区偏移量/文件系统簇大小=整数

分区偏移量/NAND 擦除块大小=整数

分区偏移量/NAND读写页大小=整数


对于ssd来说,一般以上这些数据是这样的:

文件系统簇大小4096bytes
NAND擦除块大小524288bytes
NAND/写页大小4096bytes


而“分区偏移量”是每一个磁盘分区开始的第一个字节在磁盘上的位置,就是这个位置,决定了这个分区的4KB对齐情况!这也就是我们需要得到的最关键的数据。


(二)思路


先来看一下我的分区分布情况


[attach]49778[/attach]


从图中可见,我的mac osx分区是一个逻辑分区(Logical Partition),它是位于扩展分区(Extended Partition)下的第一个逻辑分区,Start CHShex)是C20A4H1S1)。CHS,即Cylinder-head-sector,从它就能计算出此分区的开始字节数——分区偏移量。

分区偏移量计算方法:

SOSStartingOffsetSectors= C*255*63+H*63+S

此时,我的分区偏移量是(20A4转换成10进制 = 8356

20A4*255*63+1*63+1

= 8356*255*63+63+1

= 134239204 = SOS

SOS*512 = SOBStartingOffsetByte= 68730472448

这里,我做了一张电子表格——数据计算对齐.xlsx,下称“计算对齐”,在第一个表格中,只要输入CHS的值,就能自动得出当前的SOB

[attach]49782[/attach]

请一定使用 office 2010计算!低版本的office没有其中计算所需的16进制——10进制转换函数!

聪明的你或许已经发现,将第四列StartOffsetsectors80053e3转换成10进制=134239203134239203+1就是我们刚才得到的134239204


试一下,SOB68730472448能否对齐呢?我做了另一张电子表格——数据验证对齐.xlsx,下简称“验证对齐”,请将这个数字填入其中:

[attach]49761[/attach]

很遗憾,奇迹并没有发生,规则#1 #2 #3都明确告诉我们,4KB对齐失败了!

根据“原理”的阐述,“分区偏移量”必须能够整除“文件系统簇”、“nand擦除块”、“nand读写页”,而我们发现“nand擦除块”正好是4096的倍数,根据简单的数学计算,只要能够整除“nand擦除块”的“分区偏移量”即能够整除其他两个数据。这为我们计算带来了便利,而不用查找他们的公倍数。

于是我编写了一个简单的小程序来计算“分区偏移量”。其工作原理是把SOB不断地增加512byte,然后计算它是否能够整除“nand擦除块”。这样计算出来的新“分区偏移量”就是最接近你的SOB的、并且可以对齐4KB扇区的“分区偏移量”。

我将SOB68730472448)填入程序,程序运行如下:

输入数=68730472448
本程序用作手工计算mac os x在hackintosh上4kb对齐的CHS所在具体字节数。  
输入数除以524288(擦除块大小)的整数部分=131092
输入数除以524288(擦除块大小)的余数=0  
下一个可以对齐到4kb扇区的字节数位置偏移为(StartingOffset)=68730486784  
请把上面这个数据直接输入  数值计算对齐.xlsx 文件以计算 CHS   


得出68730486784,能否整除“nand擦除块”呢?填入“验证对齐”:

[attach]49760[/attach]

看来计算成功了!


(三)方法

目标已经明确,我们将数据输入“计算对齐”,即能得出对齐的CHS,这里我的CHS值如下:

[attach]49762[/attach]

其中8356129是十进制数据,20A411D是十六进制数据。

至此,我们基本上对手工对齐4KB扇区有了基本的数据计算和理论认识。



作者: brunolee    时间: 2011-9-9 01:49
本帖最后由 brunolee 于 2011-9-9 15:58 编辑

三,实践


有了理论的支持,真正操作起来才会变得比较容易。


(一)硬件、软件环境准备

1.硬件环境。

我有两块硬盘,一块是ssd m4 128g,分成两个分区,即如图中所示。其中Mac OS X分区f:即是所要对齐的分区(A1)。

[attach]49731[/attach]

第二块硬盘是SAMSUNG 320g的普通硬盘。这块硬盘用来存储相当关键的交换分区数据,当然,如果空间足够,我们也可以在同一块硬盘上(ssd上)制作交换数据分区。

2.软件准备

操作系统:Windows7 x64Mac OS Xhackintosh10.7.1

分区软件:DiskGenius 3.5.0 免费版;Paragon Partition Manager™ 11 Server

引导软件:Chameleon1452windows版,wowpc.isoM4_win7sys根目录,并且请确保你的wowpc.iso中的org.chameleon.Boot.plist之中没有hidepartition字段)

自编软件:数据验证对齐.xlsx;数据计算对齐.xlsxget_sector.sh(此程序是bash shell程序,在MacOSX终端窗口运行 ./get_sector.sh xxxxxxxxxx 进行计算)


(二)操作步骤

1,关闭MacDrive

MacDrive 是一款能够在Windows7下面读写访问Mac分区磁盘的软件,但是它会影响我们在Win7下对于磁盘的操作,必须关闭!切记!

[attach]49732[/attach]

2,计算分区偏移量

相信经过以上这么多的介绍,您已经完全掌握了“分区偏移量”SOB的计算方法,这儿就不再赘述。

3,制作交换分区b1b2

Paragon Partition Manager™ 11 Server的神奇之处,就是能够在Win7下面建立AppleHFS+的分区,并且格式化(但不能通过这个访问HFS+格式磁盘)。我们使用Paragon分区复制功能,把mac os x分别复制到这两个分区。

[attach]49733[/attach]


[attach]49734[/attach]


[attach]49735[/attach]


[attach]49736[/attach]


再复制一次


[attach]49737[/attach]


最后你的磁盘分区应该是这样的


[attach]49738[/attach]


如果你把OSX复制到其他分区,不用介意,MacOSX基本都能从它们启动,甚至是“逻辑分区”。

TipsParagon所有操作可以一步步完成,每次完成使用Apply确认执行操作,否则它是不会执行的。当然您如果对操作有信心,可以一次完成,那么可以一次做完所有操作,然后再点击绿色的Apply


[attach]49739[/attach]


4,重建“对齐分区”a1àa11并格式化

打开DiskGenius,删除MacOSXa1)分区,新建分区(MacOSX,简称为a11),并且修改分区参数(注意修改“系统标识”为AF),使用计算好的分区参数填写。


[attach]49740[/attach]


您也许注意到了,我这里填写的C(起始柱面)H(起始磁头)S(起始扇区)分别是C8356H1S30),比“计算对齐”的结果大了“1”。其实这很好理解,“分区偏移量”SOB是“上一个分区最后一个字节”(严格来说这里的空间其实已经浪费掉了,并不在上一个分区容量的覆盖范围内,这里这样说只是便于理解),而这里DiskGenius填写的是当前需要对齐的分区a11的第一个字节,所以当然大了1最后同样,DiskGenius也需要Apply来确认执行。


[attach]49741[/attach]


接着,使用Paragon Partition Manager™ 11 Server对已经对齐的分区a11格式化,分区参数使用AppleHFS


[attach]49742[/attach]


别忘了Apply

5,MacOSX下恢复数据

重启电脑,Chameleon自动辨识新的b1b2 OSX系统,我们选择b2吧,其实都一样,目的只是为了把另一个OSX复制到A11。进入OSX,使用“磁盘实用程序”,将b1MacOSX做为“恢复源”,a11做为“目标”进行系统恢复。至此,手工对齐MacOSX分区的工作就已经完成了,两个交换分区b1b2已经完成了使命,可以删除了。


[attach]49777[/attach]



四,验证


现在我们可以回到Windows,使用软件验证一下我们的结果。AS SSD Benchmark


[attach]49743[/attach]


[attach]49744[/attach]


[attach]49745[/attach]


结果令人满意,C:测试已经达到了sataII接口的极限速度,250mb/s;而L:暂时无法测试,MacDrivewindows下虽然可以读写mac磁盘,但测试无法通过。


作者: brunolee    时间: 2011-9-9 01:50
本帖最后由 brunolee 于 2011-9-9 15:10 编辑

三个附件:
[attach]49779[/attach]

[attach]49780[/attach]

[attach]49781[/attach]

感谢浴室的对齐计算表格!
作者: brunolee    时间: 2011-9-9 01:57
太棒了。。超过5分钟就不能编辑了,排版一塌糊涂。。。
作者: yanleiberg    时间: 2011-9-9 04:10
本帖最后由 yanleiberg 于 2011-9-8 15:14 编辑

沙了你个发。
不简单,不易懂。
排版想办法在搞搞吧,看得偶头大。
实在不行重新发吧。

hackintosh估计好多人猜不出来什么意思? 标题应该简单明了。
还有最好4k未对其的图片也用同一个m4,这样才有比较意义啊。
作者: brunolee    时间: 2011-9-9 04:48
实在版主不给改的话,回头补发一贴吧。
都是网络水军害的,浮躁的人太多。
作者: mikeee146    时间: 2011-9-9 06:25
这可是好文章,不过确实太乱……
作者: James007ss    时间: 2011-9-9 08:01
不错的MAC教程,楼主已经可以编辑了。
作者: pancq    时间: 2011-9-9 08:14
看不董。。。。
作者: xxy    时间: 2011-9-9 08:51
这个实际用处是啥?
作者: flyerwang    时间: 2011-9-9 08:56
很不错,如果软件全用成中文的就更适合新手看了,哈哈
作者: glaygle    时间: 2011-9-9 11:03
先占楼,然后慢慢研究,这不是看一二遍就能够搞明白的
作者: yeeuyz    时间: 2011-9-10 21:22
楼主,我的chs中的c有五位字符,输进去全部出来。还有,hdd在那个验证计算文件中nand要怎么填?
作者: James007ss    时间: 2011-9-10 21:27
回复 13# yeeuyz


    NAND就是指你SSD的颗粒。
作者: brunolee    时间: 2011-9-11 01:12
楼主,我的chs中的c有五位字符,输进去全部出来。还有,hdd在那个验证计算文件中nand要怎么填? ...
yeeuyz 发表于 2011-9-10 21:22



   把你的CHS贴上来看看,五位的CHS一般这个分区开始的地方应该超过500GB之后了,注意电子表格计算出来的 SOB 可能会显示科学计数,比如 5.39052E+11 这样的,你可以将表格显示格式改成“邮政编码”,这样才能显示完整。
   NAND 只要填写一个"分区偏移量" 的字节数就行了,这个就是通过程序 get_sector 计算出来的值,但为了性能考虑,我只把程序计算到1TB之内,超过1TB的开始值没有纳入计算。而“验证对齐”中其他都是常量,不需要更改的。

   如果你的分区开始字节已经大于1TB,可以试试这个程序,可以计算到10TB。

[attach]49927[/attach]
作者: yeeuyz    时间: 2011-9-11 07:12
楼主,你这里的sh文件要用什么打开?难道是终端?
作者: overthink    时间: 2011-9-11 07:44
不错,我得来学习学习
作者: ach9999    时间: 2011-9-11 09:13
以前有段时间玩黑苹果,驱动难整得要死 = =  

不过还是好玩的  够你折腾几天   {:1_320:}
作者: yeeuyz    时间: 2011-9-11 16:15
这次我把分区建在硬盘的最前端,还是不行,我怀疑楼主的计算文件有问题。
我的硬盘式WD-10EARS
作者: brunolee    时间: 2011-9-11 20:45
楼主,你这里的sh文件要用什么打开?难道是终端?
yeeuyz 发表于 2011-9-11 07:12



   就是终端里面运行一下。   ./get_sector.sh xxxxxxxxxx
作者: brunolee    时间: 2011-9-11 20:53
这次我把分区建在硬盘的最前端,还是不行,我怀疑楼主的计算文件有问题。
我的硬盘式WD-10EARS ...
yeeuyz 发表于 2011-9-11 16:15



   计算方法很简单,两个判断,一个循环,你可以用文本编辑打开看一下,所以程序不可能出问题的。   可能你的填写方法有问题。第一个“计算对齐——原始数据”里面要填写16进制的CHS;“计算对齐——计算数据”里面填写的是计算出来的结果,然后它会返回给你一个CHS,这个值最后一位别忘记+1,加了1,才是最终DiskGenius需要填写的数据。
作者: yeeuyz    时间: 2011-9-11 23:17
楼主请看,无论我把mac分区放在硬盘的前面还是后面,xls文件都是无法算出数值
[attach]49980[/attach]
作者: brunolee    时间: 2011-9-11 23:22
回复 22# yeeuyz


   看一下B7单元格的公式。感觉是B7不能正确转换B6数值所导致的。
作者: yeeuyz    时间: 2011-9-12 07:29
回复 23# brunolee


   B7==HEX2DEC(B6)   16进转10进?
作者: brunolee    时间: 2011-9-12 15:47
回复 24# yeeuyz


    对的,就是这个函数而已,应该不会有错误,你看看是不是office版本的问题,我用的是office2010。你可以换一个你这个版本可以用的公式,应该就可以了。
作者: yeeuyz    时间: 2011-9-12 15:58
回复 25# brunolee


    看来问题就是处在这儿了。我已经白费好大功夫了
作者: yeeuyz    时间: 2011-9-13 18:33
的确是那个坑爹2003的问题
作者: yeeuyz    时间: 2011-9-13 21:45
其实这篇教程不难,不过实施起来有些麻烦。需要装一些软件,还有那个sh文件的运行问题。我刚好有个vbox中装了ubuntu,直接在里面运行得了。不过还请作者在原贴强调一下一定要用office2010,否则是计算不出数据的。
作者: 笠猪    时间: 2011-9-16 16:51
非常专业, 受教鸟,谢谢
作者: scoliosis    时间: 2011-9-23 14:18
同是黑苹果的谢了。
作者: sun117    时间: 2011-9-25 10:45
精品文章,收藏了。以后安装黑苹果会非常有用!
作者: klovecf    时间: 2011-9-26 09:23
挺复杂的。。。
作者: scoliosis    时间: 2011-9-27 15:34
吸取LZ的经验教训,我是用win7先分区(GPT),然后Mac安装时,抹除格式化后系统装在这个分区上,这样,分区就对齐了。

谢了。
作者: onelove1991    时间: 2011-12-17 20:18
楼主,请问新ssd或hdd买来就装上win7,是不是win7会给自动对齐呢?谢谢解惑。。{:1_301:}
作者: ancientstar    时间: 2011-12-18 13:35
谢谢lz分享 我拿pq调整固态的分区大小 果断进不了系统 引导损坏 我都是在win7安装时分区的 虽然不是1024对齐 但是绿色的 应该就可以了
作者: nokia5510    时间: 2012-5-6 00:15
基本上就没有看懂!LZ你还敢再强大点么?
作者: 173233171    时间: 2012-7-8 12:01
擦 有点复杂 慢慢地看
作者: ezraer    时间: 2012-11-14 22:30
强文啊,很细致,思路清晰,学习了。
作者: jewelz    时间: 2013-1-6 10:10
技术帝啊 bash代码直接贴出来多好
作者: zhouhsc_cn    时间: 2013-1-6 16:35
看楼主写得这么辛苦,而且很难看懂,实在忍不住就注册上来回复一下我的方法:

在windows下分一个4K对齐的主分区,到mac下格式化为HFS+给黑苹果用就可以了。
作者: myc92    时间: 2013-2-26 19:53
您这黑苹果哪下的?我想装,虚拟机装不成功




欢迎光临 PCEVA,PC绝对领域,探寻真正的电脑知识 (https://bbs.pceva.com.cn/) Powered by Discuz! X3.2