• 静思
  • 吴言片语
    • 吴言
    • 片语
    • 杂七杂八
  • 死于青春
    • 一路走好
  • 乌合麒麟
  • 纪念
    • 5.12
    • 3.23
  • GitHub
    • A List of Post-mortems
    • The Art of Command Line
  • 关于
    • Privacy Policy

程序员的信仰

金鳞岂是池中物,一遇风云便化龙

HOME » 技术生活 » GPT与MBR那些纠缠不清的故事第一弹——MBR与GPT都是什么呢?[zz]

GPT与MBR那些纠缠不清的故事第一弹——MBR与GPT都是什么呢?[zz]

2016 年 4 月 5 日 @ 下午 2:16 by Jay | 被踩了 4,046 脚

版权信息

原文作者:Park

原文地址:威锋论坛


(本系列文第二弹,如果看了本文不懂得可以看看,理论要结合实践才能得出结论: http://bbs.feng.com/read-htm-tid-5969091.html)

那个……最近看威锋上很多同学把分区表弄乱了(其实也没有,有一两个而已),感觉很多同学还是在用Windows的分区思维来看Mac,对于Mac使用的GPT(GUID分区图)不太了解,那我就敲篇科普文……本人说话有点啰嗦……所以请各位包含……还有本人才疏学浅,欢迎拍砖~

很多同学很喜欢用Windows分区思维来看Mac,觉得用Windows分区软件来分区问题不大,但是这样就造成了很多问题,有些同学改完分区之后会发现,咦?分区不见了诶~好神奇哟。然后剩下的我就不说了。用自带的磁盘工具分区也经常出问题,那么我就来给大家讲讲Mac的GPT与Windows的MBR之间的二三事

电脑的硬盘都有分区,这个大家应该都知道,但是其实这个分区在硬盘上是不存在的。总不能说,我买块硬盘,咣当用分区软件一分,一下子就把硬盘磁碟给那笔画出来几个区。然后这个是第一个分区,这个是第二个分区,然后这个装Windows,那个装OS X等等。分区是存储在分区表上的。这个大家都知道我也就不再说了,但是分区表也是分格式的,就像一个登记表一样,记录着每一个分区的开始和结束位置(一般是以柱面、磁头、扇区做单位)。PC上使用的一般是MBR,也就是所谓的“主引导记录”,这个分区表一般存储在磁盘的第一个扇区。但是MBR(主引导记录)是PC用的东西,Mac从PowerPC时代就不是用这个的。现在大家如果到磁盘工具里,还能看到一个Apple分区图(如下图)这就是当时的产物

236776_6dde1359278224533a085aca15790

Apple分区图是为了配合当时的PowerPC Mac使用的(具体用来配合他的基础系统是什么技术我也不是特别清楚,有知道的同学可以帮忙补充一下),但是到了06年Intel Mac的时候,就要用一种和Intel兼容的技术了。Apple当时没有选用当时已经用了N年,可以说“古董级”的BIOS作为电脑的基础系统。而是使用了Intel当时正在大力倡导的EFI技术。

说道BIOS,我这里跟大家简单介绍一下,BIOS这种神器是从IBM时代开始的。具体的工作可以说就是几个:首先这个东西会检测系统硬件是否正常,然后接下来,通过CMOS里的设置看明白是要启动哪个设备(比如光驱、硬盘、闪存,还有上个世纪的软驱和比较奇葩的网络等等)并按照顺序检测。通过选定的启动设备启动系统。这个东西可以说当初作为一个电脑的基础系统,起了很大的作用,但是用Mac的同学都应该知道,Mac下是不需要设定启动设备的。如果要启动到闪存盘也是只需要在启动的时候按住Option键来选定而已,而且最好的是这个选定界面支持鼠标。那为什么在Mac下就这么简单呢?这就要讲到EFI技术了

话说这个EFI技术是Intel当时极力倡导的,后来交给一个组织发展,改叫UEFI。不过不论叫什么,这个东西他是好的没错。好处呢就是他的数据(如果我没记错的话)是保存在闪存上的,而且是用32位的C语言开发的。这个什么语言可以不用管它,但是需要知道的一点就是这个可以执行一些比较复杂的程序。比如说在09年左右开始,貌似华硕就出过一款主板,内置了一个紧急恢复系统,用于在操作系统崩溃的时候恢复数据用的。还自带一个浏览器,可以说是已经到了神器级别……不知道现在的华硕板子还有没有这个玩意了。总之,那段时间之后的主板大都开始配备EFI了。笔记本也是这段时间才开始配备的。

好了,总算把EFI的问题倒腾完了,接下来,继续说GPT的问题。GPT和MBR不同,他并不是在一个固定的扇区的,而是从在第一个扇区之后开始(为什么保留第一个扇区我等会跟大家解释)作为一个分区进行保存,分区表可以要多大有多大。GPT作为一种分区表是极好的,优点是什么呢?我来给大家讲解一下。刚才我也说过,BIOS是管电脑启动的,但是他知道该启动哪个设备之后,如何知道该启动哪个分区呢?这个在MBR中是由所谓“活动分区”管理的。也就是说,BIOS会在之后读取MBR中的“活动分区”,然后根据活动分区加载启动器(比如Windows XP的ntldr、Win Vista的bootmgr等等),由启动器再加载操作系统。但是,这样就造成了一个后果,就是比如我在A分区装了个Windows,B分区装了个Linux,必须指定一个活动分区然后用他的引导器来引导操作系统。这一点可能有同学不太理解。就是说,如果你装了Linux和Windows,你必须选择使用一种引导器,然后再由引导器自动(或者你手动)添加另一个操作系统。比如选定GRUB(Linux的引导器),那你能看到的就是GRUB那个方框式界面,如果选定了bootmgr,那就能看到的是“Windows启动管理器”那个界面。当然一般Linux和Windows共存的时候一般都用GRUB的。而GPT加载的方式就不一样。虽然也有引导器,但是没有活动分区这码事。具体的引导方式我也不清楚(不清楚你说毛啊亲)。至少在Mac下我理解是通过设定引导分区来进行的。有知道的同学可以告诉我一下……

说完了GPT的第一个优点,接下来说第二个,这个优点就是GPT对多分区的支持很好。很多同学经常性被MBR分区表的那个什么“逻辑分区”、“主分区”、“扩展分区”犯晕。为什么要有这么多类型的分区呢?就是因为MBR只有一个扇区(我没记错的话)。这个扇区只支持四个分区的信息。所以,只能分四个区。但是为什么(事实上)MBR还能分很多区呢?这就是扩展分区和逻辑分区。扩展分区就是一个大的分区(在MBR看来),但是其中实际包含要多少有多少个逻辑分区。每个逻辑分区都存储着下一个逻辑分区的信息,然后这样连起来。而GPT刚才我也说过,他可以要多少个扇区有多少,所以他可以存储最多无限个分区。当然,看你给GPT分配多大空间了。

最后说GPT的第三个优点,就是对大硬盘的支持好。前一段时间一直爆出iMac 3TB硬盘的版本无法使用Boot Camp,就是源于MBR使用的是CHS寻址,也就是我刚才说的磁头、柱面、扇区寻址办法。而这种寻址不能支持2TB(精确说应该是两点多T,有零有整的)以上的硬盘。所以就造成了这个结果(至于Boot Camp的实现原理我等会再和大家说)。而GPT使用的是LBA寻址,支持到十几EB的硬盘。几十年内是足够用的。

这么好的技术,为什么一直在PC上得不到应用呢?原因就是当时Windows对GPT的不支持。这里我就要狠狠地吐槽一下微软了。微软的Windows操作系统我一直管他叫“新技术推进的最大障碍”(其实Office神马的也是……不过这个留待下次吐槽)。比如说高DPI显示器(Retina屏幕),在Mac下可以说是神级的一个东西,但是为什么在PC下就推广不起来?原因就是MS一直是对高DPI显示持保守态度。07、08年的时候就有厂商出过20英寸的准高分辨率显示器。当时的显示器一直是叫好不叫座,为什么呢?原因就是当时的20寸显示器(16:10)都使用了1680×1050的高分辨率,而当时的Windows XP和Windows Vista没有针对高分辨率做任何优化。造成的直接后果就是字体在这种分辨率下很小,看着非常累。于是厂商们都使用低分辨率。直到今天,1366×768也是主流。同理换到EFI上也一样。当时的Windows Vista(32位)并不支持作为系统盘使用GPT的,而Windows XP (32位)干脆就不支持使用。64位的Windows倒是支持GPT作为启动盘了。但是当时64位的Windows多少人用啊……反观Linux,从2008年左右开始的Linux不论32位还是64位都支持GPT作为启动盘了。微软直到最近的Windows 8才完整的对GPT与LBA进行支持(没记错是这样)。我估计还是为了EFI的安全启动(可以让电脑只能使用Windows)而支持的。所以别看Apple有的时候专利流氓……微软也是挺恶心的……大公司都这样……

好了,那么为什么有些同学在拿Windows的磁盘管理来调整分区的时候造成分区表乱掉呢?这个我可以说说Boot Camp的实现原理

Windows就算是现在对GPT的支持好一点了,也只是64位有限支持而已。所以当初Apple用了一个折中方案,叫做MBR/GPT混合分区表。正常的GPT为了防止不识别GPT的分区软件弄乱分区,所以在原来的第一个扇区(也就是MBR用的)写入了一段信息,将整个磁盘写成了一个未知格式的分区。这样在MBR软件读取的时候,会显示整个硬盘有一个未知格式的分区,进而停止访问。但是Boot Camp为了兼容,在这个写入了前四个分区的磁盘信息,这样在Windows下也可以读取了。但是这样在调整的时候就出了问题。Windows的磁盘管理可能会把GPT分区表的分区删除,然后……整个硬盘就变成MBR分区表了……后面的后果……我不用说了吧

好了,码了这么多,原理说完了,接下来就是讲讲Boot Camp的话对于分区该有什么注意事项了:

1.对于Mac,千万不要尝试使用任何Windows下的分区软件来调整分区。Windows自带的磁盘管理是无法识别GPT/MBR的混合分区表的。第三方管理软件我不知道但是尽量别用。自带的磁盘管理就好

2.对于3TB以上硬盘的Mac,如果要安装Windows,需要将Boot Camp分区置于2TB之内。

好了,就说这么多了。本人才疏学浅。对很多东西不是特别了解,很多知识也记不清了。所以如果有说错的还是请多拍砖

本文部分内容参考Wikipedia。

本文全文基于cc-by-sa协议发表,您可以自由复制、放映、传播、修改、商业使用本作品。唯请遵循以下条件:

1.请署原作者之姓名(Park)

2.请仍基于本协议进行发表

附加条款:

1.若转载请通知(不是让我同意,只要让我知道就行……毕竟我挺想知道我的文章被谁转载了)

2.商业使用请寄送样刊(就是收藏……看样子也没人会商业转载吧……)

修改:2013年1月29日:

1.修正笔误(Bootmgr与Boormgr)

2.解释授权协议,修正附加条款

修改:2013年2月5日

把标题改了一下以便和我的第二弹标题一致……(原标题:打算玩Boot Camp或者多分区的戳,关于MBR与GPT的问题,我简单扯两句)


-- EOF --

除非注明(如“转载”、“[zz]”等),本博文章皆为原创内容,转载时请注明: 「转载自程序员的信仰©」
本文链接地址:GPT与MBR那些纠缠不清的故事第一弹——MBR与GPT都是什么呢?[zz]

分享

  • 点击分享到 Facebook (在新窗口中打开) Facebook
  • 点击以分享到 X(在新窗口中打开) X
  • 更多
  • 点击分享到Reddit(在新窗口中打开) Reddit
  • 点击分享到Telegram(在新窗口中打开) Telegram
  • 点击以在 Mastodon 上共享(在新窗口中打开) Mastodon

赞过:

赞 正在加载……

相关

Today on history:

【2008】清明,不宜出行
【2007】人生难得几回二[转载]
【2007】正义,以良家妇女或鸡的名义[转载]
【2007】请您花1分钟时间看看节能知识!
【2007】I'm a Google fan
Posted in: 技术生活 Tagged: bios, bootcamp, efi, gpt, guid, mac, mbr, windows
← Tips:解决Mac OS X系统语言与登录界面语言不一致的问题
再谈苹果的输入法:这一次是靠OS X自带的输入法来翻身的~ →

android (9) apple (20) augmentum (9) Beijing (21) bt (8) career (28) coding (38) firefox (10) google (36) hibernate (11) ibm (11) iphone (10) java (93) linux (16) m$ (26) mac (58) macos (27) nazca (9) olympics (8) oo (8) playstation (10) rip (8) Shanghai (39) spring (9) tips (45) tommy emmanuel (8) ubuntu (12) usa (23) windows (9) 北航 (17) 博客 (29) 吐槽 (8) 周末 (9) 和谐社会 (26) 小资 (11) 愤青 (40) 方言 (10) 朋友 (77) 歌词 (8) 烟酒不分家 (18) 爱国 (19) 爱情 (8) 犯二 (15) 破解 (8) 足球 (11)

烫手山芋

  • 再谈苹果的输入法:这一次是靠OS X自带的输入法来翻身的~ - 被踩了 27,817 脚
  • 生活,就是一个期待跟着一个期待 - 被踩了 21,385 脚
  • 星巴克饮品缩写大全(Starbucks Drink ID Codes)[zz] - 被踩了 18,466 脚
  • 从一个全角冒号说一下我为什么不感冒iOS - 被踩了 14,399 脚
  • 有关Character.isLetter()和Character.isLetterOrDigit() - 被踩了 13,619 脚

刚拍的砖

  • leo 发表在《再谈苹果的输入法:这一次是靠OS X自带的输入法来翻身的~》
  • 花 发表在《再谈苹果的输入法:这一次是靠OS X自带的输入法来翻身的~》
  • 无名氏 发表在《从一个全角冒号说一下我为什么不感冒iOS》
  • Jay 发表在《Mac OS geek级问题》
  • Wei Wang 发表在《再谈苹果的输入法:这一次是靠OS X自带的输入法来翻身的~》

随便看看

  • JBuilder 2005中的Servlet mapping21 年 ago
  • 80后的特征,你符合几条?(一)[zz]19 年 ago
  • 一个人的情人节19 年 ago
  • 谈论 zz前世 你是否埋葬了她?18 年 ago
  • 遍历Map<K, Collection<V>>的正确方法17 年 ago

文以类聚

光阴似箭

其他操作

  • 登录
  • 条目 feed
  • 评论 feed
  • WordPress.org

Copyright © 2025 程序员的信仰.

Jay's Omega WordPress Theme by Jay

 

正在加载评论...
 

    %d