首页 > 编程知识 正文

linux系统中的硬盘分区在哪里,linux分区类型mbr和gpt有什么区别

时间:2023-05-06 03:35:43 阅读:261416 作者:772

MBR:主引导记录(Master

Boot

Record),位于磁盘LBA0,每个LBA表示一个磁盘逻辑扇区即512B。MBR由三部分组成,分别是446B的引导代码;64B的分区表(DPT);2B的结束代码。简单跟踪一下操作系统的启动过程吧:打开机器电源——BIOS自检——BIOS根据COMS里的设置选择启动磁盘——BIOS复制启动磁盘MBR到内存——MBR的引导代码指向DPT中标记为活动的分区里的分区引导记录PBR——PBR在分区中找到操作系统的引导程序——系统被引导。由于MBR的分区表只有64B,所以能记录的主分区只有4个,每个分区用16B去记录分区类型,起始扇区,总扇区数,其中里面有4B是记录分区使用的总扇区数,对于使用512B作扇区的硬盘,4B就能记录4,294,967,296个扇区,即2TB左右。

分区表:

DPT即分区表。这个表记录着每个分区的位置和大小。很多人都有个错误概念,就是把一个分区的硬盘说成是没有分区。分区变成了复数分区的代名词。硬盘是先要有分区,再有文件系统才能读写数据的。

MBR里的分区表只能记录4个主分区。但是win有一种叫做扩展分区的玩意。在win的磁盘里只能有一个扩展分区或者没有。这个扩展分区的作用就能保存一个指向下一个逻辑分区的分区表。而逻辑分区又可以保存指向下一个逻辑分区的分区表。但这种分区非常不稳定,不宜保存重要数据。

分区:

每个硬盘都需要分区(动词),不分区是无法使用的。分区(名词)也叫做卷,为了避免这里把分区二字作动词或名词理解,我这里把分区(动词)保持不变,用卷来表示它的名词。在win里我们的习惯思维是C盘,D盘,E盘什么盘的,这个盘也就是卷了。在OS

X里的卷是没有盘符的,只有一个绝对的名字和卷名字。OS

X里的分区的绝对名字是disk0s1,disk0s2,disk0s3等,其中disk0是指整个硬盘,而且是Mac的第一个硬盘。UNIX所有的设备都在/dev这个目录下面,也就是说第一个磁盘的位置是/dev/disk0。每个分区都需要挂载才能使用的,那么就需要一个位置去挂载分区了,这个位置是/volumes,而第一个磁盘第一个分区的位置是/volumes/disk0s1。卷名字就是用户自定义的名称了,根据卷的文件系统不同名字支持的字符也不同,例如FAT貌似只能用大写字母。

GUID分区表:

GUID分区表即是GPT(GUID Partition

Table),由于MBR里的DPT存在局限性,所以GPT应运而生。GPT磁盘的LBA0是保存着一个 Protect

MBR的,这个扇区只保存着一个特殊分区类型和结束代码。当操作系统检查到这个 Protect

MBR后是会直接忽略掉的。如果这个操作系统无法认出GPT磁盘,那么只会把整个磁盘标记为一个未知分区。

在LBA0之后的LBA1记录着GPT的头,GPT的头记录着自己和下面的分区表起始扇区和结束扇区,还有一份在LBA-1~LBA-34的GPT备份记录。

LBA2开始就是分区表了,这个分区表有足够的空间记录分区的总扇区,而且最大能创建超过128个主分区。

BIOS是没有办法引导装在GPT磁盘上的操作系统的,必须要是EFI才能引导。引导过程是这样的,开机EFI完成自检——启动boot

option menu启动菜单中第一个项目中的引导程序——引导操作系统。

大多数的操作系统都可以读写GPT磁盘的,但是与能用GPT引导是另一回事。

不同操作系统使用GPT的情况都是不同的,Mac在创建GPT磁盘时都会在LBA40扇区开始分209MB出来作为EFI系统分区。微软则会有一个LBA2048开始的100MB

EFI系统分区和128MB的MSR保留分区。

文件系统:

分区表是记录着硬盘分区的大小和位置的,每个分区都需要有一个文件系统,不然无法写入数据。文件系统就像是在分区里的目录,这个目录记录着文件的大小和位置。文件系统是根据单元来储存文件的,单元也叫做簇,每个单元由一组扇区组成的,例如NTFS可将单元设定为4KB即8个扇区大小。假设4KB一个单元的文件系统要储存一个5KB的文件,那么就要使用两个单元来存储这个文件了,而且第二个单元闲置的3KB无法使用。大的单元读写的速度较快但是占用空间较大,小的单元比较节省空间,但是读写慢。

删除文件其实只是把文件系统目录里相应的项目标记为空项,下次同一个位置写入文件的时候则直接复写或删写(机械磁盘是复写,固态硬盘是删除后再写)。对某个分区进行快速格式化也是一个道理,把文件系统删除,然后写入新的文件系统,这个新的文件系统将分区内所有扇区都标为空项,实际磁盘上的数据还是存在的,只是很难提取而已。

常见的文件系统有:Fat,NTFS,HFS

,exFAT。一般说某某格式的分区是其实就是说使用了某个文件系统的分区。

如果把磁盘当成是一个图书馆的话,分区表就是记录每个书架的位置,分类,大小的目录;分区就是一个一个的书架;文件系统就是书架的目录,记录着书架上放了那些书,放在哪里,这本书有多少内容。EFI系统分区:

一般用OS

X的磁盘工具创建一个GUID分区表磁盘后,系统都会创建一个209MB的隐藏系统分区,这个分区是要来保存引导程序,一些驱动什么的。这个分区的位置是从LBA40开始到LBA409639结束。而在win里看到的GPT保护分区是从LBA1开始到LBA409639结束,如果把这个GPT保护分区删除了的话,那么OS

X将不能被引导。因为LBA1实际上是记录着GPT的头,LBA2往后到LBA39是记录着分区表。。EFI分区是使用Fat32文件系统的。

在win里看到EFI系统分区的话就证明这个磁盘是GPT的;如果看到的是GPT保护分区,那么这个磁盘是混合分区表的。EFI系统分区和GPT保护分区是存在区别的,前者的磁盘是纯GPT的,后者是混合分区表磁盘。

混合分区表:

GPT硬盘里的MBR扇区(LBA0)只记录着一个特殊的分区和结束代码。装在上面的系统是无法用BIOS引导的。OS

X能创建一种叫做混合分区表的磁盘,就是这个硬盘可以同时使用MBR分区表和GUID分区表。根据启动的方式来选择分区表。

当OS

X的磁盘工具在GPT磁盘上创建一个Fat32分区后,混合分区表会被创建,磁盘LBA1——LBA409639会被写入MBR分区表里作为第一个分区,标识为GPT保护分区,然后根据GUID分区表的项目分区别复制到MBR分区表,直到MBR分区表里的分区达到4个。当BootCamp模拟BIOS启动后就会加载这个MBR到内存。

win自带的磁盘工具是无法对混合分区进行管理的,所以别做任何无意义的尝试。

OS

X里有一个叫做gdisk的磁盘工具可以对GPT,混合分区表的磁盘进行管理,可以下载一个来学习一下使用,如备份分区表,恢复分区表之类的。

当win插入一个混合分区表的磁盘时(非系统盘),第一个分区会是“”GPT保护分区“,这个分区保护着GPT的头和分区表。而当win的安装程序遇到混合分区表磁盘时它会优先使用MBR分区表,即使你用的是EFI启动的win安装程序。

GPT保护分区:

很多人将EFI系统分区和GPT保护分区搞混了。最简单的理解方式是,EFI系统分区是GPT磁盘的标志,GPT保护分区是混合分区表磁盘的标志。GPT磁盘的LBA0即MBR扇区记录着一个未知分区格式让不能读写GPT磁盘的操作系统不能识别,从而起到保护作用,一般这个扇区也叫做MBR

protect。LBA1是GPT磁盘的头,LBA2开始是GPT磁盘的分区表。创建混合分区表实际上是为GPT磁盘创建MBR分区表,系统先将LBA1-LBA409639包含的扇区记录在MBR分区表的第一个位置上,这些扇区覆盖了GUID分区表和EFI系统分区。win是无法挂载这个GPT保护分区的,而且也无法对这个分区进行对写,从而起到保护作用。之所以叫做GPT保护分区,因为它保护着磁盘上的GUID分区表。

BootCamp:BootCamp这个工具的作用就是在EFI里写入相应的信息来模拟BIOS。这些信息是储存在NVRAM里的,这个NVRAM类似是BIOS使用的COMS,它记录着一些变量。

EFI本来是可以用兼容模式来启动MBR磁盘里的操作系统的,这就是为什么直接将win的安装U盘插上Mac都能引导的原因。但是本质上是与BootCamp模拟的BIOS有点区别,具体可能是在一些驱动上。例如13年Air在用BootCamp安装集成驱动的win7时是可以解决鼠标触摸板失灵的现象的,但是直接用EFI兼容模式引导的话就不行。我想现在苹果没有适合新Air的BootCamp工具,所以想双系统的不妨等等。

当在win里装好BootCamp工具包以后,使用这个工具包就能对主板的NVRAM进行修改了。这样就能从win重启到OS

X了。

值得注意的是安装了EFI启动的win8后是不能从OS

X重启到win的。原因我上面说了,因为BootCamp实际上是改写NVRAM让Mac始终以模拟BIOS方式启动,但是EFI启动的win8无法在模拟BIOS上引导,所以就这样了。

其实使用BootCamp助手和不使用BootCamp助手来装win最好都是一样的,区别大概只有安装过程。不用BootCamp助手安装的话大概一些设备会无法使用或有BUG什么的,由于没有经过BootCamp对NVRAM进修修改,所以每次重启都是默认EFI启动的,也就是每次都会重启到OS

X,必须要手动切换Boot Option

Menu。但是安装了BootCamp驱动以后,都一样了。

假设不同版本的BootCamp模拟的BIOS都有区别的话,那么启动win时或许会有区别,至于驱动应该影响不大,因为现在win应该都是直接绕过BIOS控制硬件的。如果OS

X下的BootCamp版本与win里的不同,那么分别使用各自的重启到win选项也许会有不同。这条有待验证。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。