ubuntu单系统和uefi+gpt分区

这件事我已经预谋很久了,然后我终于付出了行动。虽然我现在把操作系统换成Ubuntu并不是件明智的事,但是我那颗Geek的心已经等不了了。
这次操作系统分区我先是依照的《鸟哥的私房菜》分区的:

ubuntu_partion.jpeg

分区就和这张图类似。之后就出现这个问题:
ubuntu_writegrup_fail.jpeg

这我就很蒙了,我明明按照教程来的怎么能错呢?
还是百度大法好总,我在这里找到了点启示:http://forum.ubuntu.org.cn/viewtopic.php?t=465188
没错:我就是uefi开机,莫非和uefi开机有关系,尤其是那个繁体字的那几句话还要gpt分区,这又是个什么鬼。
好吧情急之下只能再次开启百度大法,我在这里找到了启示:http://blog.163.com/yangz_ranma/blog/static/121054460201601912253287/
然后按照他的操作总算是把Ubuntu给装上了
好吧,虽然把操作系统给装上了但还是有诸多疑惑,于是我就又去《鸟哥的私房菜》来寻求答案了。
我们先来认识下硬盘的结构如图:
hard_disk01.jpg

整个磁碟盘上头好像有多个同心圆绘制出的圆形图,而由圆心以放射状的方式分割出磁碟的最小储存单位,那就是磁区(Sector), 在物理组成分面,每个磁区大小为512Bytes,这个值是不会改变的。而磁区组成一个圆就成为磁轨(track), 如果是在多碟的硬盘上面,在所有磁碟盘上面的同一个磁轨可以组成一个磁柱(Cylinder), 磁柱也是一般我们分割硬盘时的最小单位了!
硬盘这部分鸟哥是这么说的:
整个磁碟盘上头好像有多个同心圆绘制出的圆形图,而由圆心以放射状的方式分割出磁碟的最小储存单位,那就是扇区(Sector), 在物理组成分面,每个磁区大小为512Bytes,这个值是不会改变的。而磁区组成一个圆就成为磁道(track), 如果是在多碟的硬盘上面,在所有磁碟盘上面的同一个磁道可以组成一个柱面(Cylinder), 磁柱也是一般我们分割硬盘时的最小单位了!
在计算整个硬盘的储存量时,简单的计算公式就是:『header数量 * 每个header负责的磁柱数量 * 每个磁柱所含有的磁区数量 * 磁区的容量』,单位换算为『header * cylinder/header * secter/cylinder * 512bytes/secter』,简单的写法如下: Head x Cylinder x Sector x 512 Bytes。 不过要注意的是,一般硬盘制造商在显示硬盘的容量时,大多是以十进位来编号,因此市售的500GB硬盘, 理论上仅会有460GBytes左右的容量喔
注释:Heads就是磁头数

接下来我们谈MBR分区:
早期的 Linux 系统为了相容于 Windows 的磁盘,因此使用的是支持 Windows 的
MBR(Master Boot Record, 主要开机纪录区) 的方式来处理开机管理程序与分区表!而开
机管理程序纪录区与分区表则通通放在磁盘的第一个扇区, 这个扇区通常是 512Bytes 的大
小 (旧的磁盘扇区都是 512Bytes 喔!),所以说,第一个扇区 512Bytes 会有这两个数据:
主要开机记录区(Master Boot Record, MBR):可以安装开机管理程序的地方,有446
Bytes

  • 分区表(partition table):记录整颗硬盘分区的状态,有64 Bytes
  • 由于分区表所在区块仅有64 Bytes容量,因此最多仅能有四组记录区,每组记录区记录了该区
    段的启始与结束的柱面号码。 若将硬盘以长条形来看,然后将柱面以直条图来看,那么那64
    Bytes的记录区段有点像下面的图示:


    Diskdivide.jpg

    由于分区表就只有64 Bytes而已,最多只能容纳四笔分区的记录, 这四个分区的记录被称为
    主要(Primary)或延伸(Extended)分区。 根据上面的图示与说明,我们可以得到几个重
    点信息:

  • 其实所谓的“分区”只是针对那个64 Bytes的分区表进行设置而已!
  • 硬盘默认的分区表仅能写入四组分区信息
  • 这四组分区信息我们称为主要(Primary)或延伸(Extended)分区
  • 分区的最小单位“通常”为柱面(cylinder)
  • 当系统要写入磁盘时,一定会参考磁盘分区表,才能针对某个分区进行数据的处理

MBR逻辑分区:
既然分区表只有记录四组数据的空间,那么是否代表我一颗硬盘最多只能分区出四个分区?
当然不是啦!有经验的朋友都知道, 你可以将一颗硬盘分区成十个以上的分区的!那又是如
何达到的呢?在Windows/Linux系统中, 我们是通过刚刚谈到的延伸分区(Extended)的方
式来处理的啦!延伸分区的想法是: 既然第一个扇区所在的分区表只能记录四笔数据, 那我
可否利用额外的扇区来记录更多的分区信息?实际上图示有点像下面这样:

logicDivision.jpg

Tips 实际上延伸分区并不是只占一个区块,而是会分佈在每个分区的最前面几个扇区来记载
分区信息的!只是为了方便读者记忆, 鸟哥在上图就将他简化了!有兴趣的读者可以到下面
的链接瞧一瞧实际延伸分区的纪录方式: http://en.wikipedia.org/wiki/Extended_boot_record
在上图当中,我们知道硬盘的四个分区记录区仅使用到两个,P1为主要分区,而P2则为延伸
分区。请注意, 延伸分区的目的是使用额外的扇区来记录分区信息,延伸分区本身并不能被
拿来格式化。 然后我们可以通过延伸分区所指向的那个区块继续作分区的记录。
如上图右下方那个区块有继续分区出五个分区, 这五个由延伸分区继续切出来的分区,就被
称为逻辑分区(logical partition)。 同时注意一下,由于逻辑分区是由延伸分区继续分区出
来的,所以他可以使用的柱面范围就是延伸分区所设置的范围喔! 也就是图中的101~400
啦!
MBR 主要分区、延伸分区与逻辑分区的特性我们作个简单的定义啰:

  • 主要分区与延伸分区最多可以有四笔(硬盘的限制)
  • 延伸分区最多只能有一个(操作系统的限制)
  • 逻辑分区是由延伸分区持续切割出来的分区;
  • 能够被格式化后,作为数据存取的分区为主要分区与逻辑分区。延伸分区无法格式化;
  • 逻辑分区的数量依操作系统而不同,在Linux系统中SATA硬盘已经可以突破63个以上的
    分区限制;

GPT分区:
因为过去一个扇区大小就是 512Bytes 而已,不过目前已经有 4K 的扇区设计出现!为了相容
于所有的磁盘,因此在扇区的定义上面, 大多会使用所谓的逻辑区块位址(Logical Block
Address, LBA)来处理。GPT 将磁盘所有区块以此 LBA(默认为 512Bytes 喔!) 来规划,
而第一个 LBA 称为 LBA0 (从 0 开始编号)。
与 MBR 仅使用第一个 512Bytes 区块来纪录不同, GPT 使用了 34 个 LBA 区块来纪录分区
信息!同时与过去 MBR 仅有一的区块,被干掉就死光光的情况不同, GPT 除了前面 34 个
LBA 之外,整个磁盘的最后 33 个 LBA 也拿来作为另一个备份!这样或许会比较安全些吧!
详细的结构有点像下面的模样:


GPTdivision.png
  • LBA0 (MBR 相容区块)
    与 MBR 模式相似的,这个相容区块也分为两个部份,一个就是跟之前 446 Bytes 相似的
    区块,储存了第一阶段的开机管理程序! 而在原本的分区表的纪录区内,这个相容模式
    仅放入一个特殊标志的分区,用来表示此磁盘为 GPT 格式之意。而不懂 GPT 分区表的
    磁盘管理程序, 就不会认识这颗磁盘,除非用户有特别要求要处理这颗磁盘,否则该管
    理软件不能修改此分区信息,进一步保护了此磁盘喔!
  • LBA1 (GPT 表头纪录)
    这个部份纪录了分区表本身的位置与大小,同时纪录了备份用的 GPT 分区 (就是前面谈
    到的在最后 34 个 LBA 区块) 放置的位置, 同时放置了分区表的检验机制码
    (CRC32),操作系统可以根据这个检验码来判断 GPT 是否正确。若有错误,还可以通
    过这个纪录区来取得备份的 GPT(磁盘最后的那个备份区块) 来恢复 GPT 的正常运
    行!
  • LBA2-33 (实际纪录分区信息处)
    从 LBA2 区块开始,每个 LBA 都可以纪录 4 笔分区纪录,所以在默认的情况下,总共可
    以有 432 = 128 笔分区纪录喔!因为每个 LBA 有 512Bytes,因此每笔纪录用到 128
    Bytes 的空间,除了每笔纪录所需要的识别码与相关的纪录之外,GPT 在每笔纪录中分
    别提供了 64bits 来记载开始/结束的扇区号码,因此,GPT 分区表对於单一分区来说,
    他的最大容量限制就会在“ 264 512Bytes = 263 1KBytes = 233TB = 8 ZB ”,要注意 1ZB=230TB
    啦! 你说有没有够大了?
    现在 GPT 分区默认可以提供多达 128 笔纪录,而在 Linux 本身的核心设备纪录中,针对单一
    磁盘来说,虽然过去最多只能到达 15 个分区,不过由于 Linux kernel 通过 udev 等方式的处
    理,现在 Linux 也已经没有这个限制在了! 此外,GPT 分区已经没有所谓的主、延伸、逻辑
    分区的概念,既然每笔纪录都可以独立存在, 当然每个都可以视为是主分区!每一个分区都
    可以拿来格式化使用喔!

BIOS+MBR/GPT搭配启动情况
在计算机概论里面我们有谈到那个可爱的BIOS与CMOS两个东西, CMOS是记录各项硬件参
数且嵌入在主板上面的储存器,BIOS则是一个写入到主板上的一个固件(再次说明, 固件就
是写入到硬件上的一个软件程序)。这个BIOS就是在开机的时候,计算机系统会主动执行的
第一个程序了!
接下来BIOS会去分析计算机里面有哪些储存设备,我们以硬盘为例,BIOS会依据使用者的设
置去取得能够开机的硬盘, 并且到该硬盘里面去读取第一个扇区的MBR位置。 MBR这个仅
有446 Bytes的硬盘容量里面会放置最基本的开机管理程序, 此时BIOS就功成圆满,而接下
来就是MBR内的开机管理程序的工作了。
这个开机管理程序的目的是在载入(load)核心文件, 由于开机管理程序是操作系统在安装
的时候所提供的,所以他会认识硬盘内的文件系统格式,因此就能够读取核心文件, 然后接
下来就是核心文件的工作,开机管理程序与 BIOS 也功成圆满,将之后的工作就交给大家所
知道的操作系统啦!
简单的说,整个开机流程到操作系统之前的动作应该是这样的:

  1. BIOS:开机主动执行的固件,会认识第一个可开机的设备;
  2. MBR:第一个可开机设备的第一个扇区内的主要开机记录区块,内含开机管理程序;
  3. 开机管理程序(boot loader):一支可读取核心文件来执行的软件;
  4. 核心文件:开始操作系统的功能...
    第二点要注意,如果你的分区表为 GPT 格式的话,那么 BIOS 也能够从 LBA0 的 MBR 相容
    区块读取第一阶段的开机管理程序码, 如果你的开机管理程序能够认识 GPT 的话,那么使用
    BIOS 同样可以读取到正确的操作系统核心喔!换句话说, 如果开机管理程序不懂 GPT ,例
    如 Windows XP 的环境,那自然就无法读取核心文件,开机就失败了!
    第二点要注意,如果你的分区表为 GPT 格式的话,那么 BIOS 也能够从 LBA0 的 MBR 相容
    区块读取第一阶段的开机管理程序码, 如果你的开机管理程序能够认识 GPT 的话,那么使用
    BIOS 同样可以读取到正确的操作系统核心喔!换句话说, 如果开机管理程序不懂 GPT ,例
    如 Windows XP 的环境,那自然就无法读取核心文件,开机就失败了!

UEFI+GPT搭配启动情况:
我们现在知道 GPT 可以提供到 64bit 的寻址,然后也能够使用较大的区块来处理开机管理程
序。但是 BIOS 其实不懂 GPT 耶!还得要通过 GPT 提供相容模式才能够读写这个磁盘设备
~而且 BIOS 仅为 16 位的程序,在与现阶段新的操作系统接轨方面有点弱掉了! 为了解决这
个问题,因此就有了 UEFI (Unified Extensible Firmware Interface) 这个统一可延伸固件界
面的产生。
UEFI 主要是想要取代 BIOS 这个固件界面,因此我们也称 UEFI 为 UEFI BIOS 就是了。
UEFI 使用 C 程序语言,比起使用组合语言的传统 BIOS 要更容易开发!也因为使用 C 语言
来撰写,因此如果开发者够厉害,甚至可以在 UEFI 开机阶段就让该系统了解 TCP/IP 而直接
上网! 根本不需要进入操作系统耶!这让小型系统的开发充满各式各样的可能性!
另外,与 BIOS 模式相比,虽然 UEFI 可以直接取得 GPT 的分区表,不过最好依旧拥有
BIOS boot 的分区支持, 同时,为了与 windows 相容,并且提供其他第三方厂商所使用的
UEFI 应用程序储存的空间,你必须要格式化一个 vfat 的文件系统, 大约提供 512MB 到 1G左右的容量,以让其他 UEFI 执行较为方便。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,560评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,104评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,297评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,869评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,275评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,563评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,833评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,543评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,245评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,512评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,011评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,359评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,006评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,062评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,825评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,590评论 2 273
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,501评论 2 268

推荐阅读更多精彩内容