OS boot and partition

硬盘逻辑划分

分区可以说是对硬盘的一种格式化。创建分区设置好硬盘的各项物理参数,指定了硬盘主引导记录(即Master Boot Record,一般简称为MBR)和引导记录备份的存放位置。而对于文件系统以及其他操作系统管理硬盘所需要的信息则是通过以后的高级格式化,即 Format命令来实现。面、磁道和扇区硬盘分区后,将会被划分为面(Side)、磁道(Track)和扇区(Sector)。需要注意的是,这些只是个 虚拟的概念,并不是真正在硬盘上划轨道。

面,磁头,柱面 硬盘一般是由一片或几片圆形薄片叠加而成的。每个圆形薄片都有两个“面”,这两个面都可以用来存储数据的。按照面的顺序,依次称为0 面,1面,…,每个面都都有一个读写磁头,也常用0头,1头,…,按照硬盘容量和规格的不同,硬盘面数(或头数)也各有差异。每个硬盘上所有硬盘面数磁道号相同的磁道叠起来,称为一个柱面(Cylinder)。

磁道,扇区 由于磁盘通过旋转磁头读取或者写入数据,磁头旋转的时候就形成了一个圆周。这样的圆周就称为一个磁道。如果磁头沿着面的半径移动,就到了另外一个磁道。根据硬盘的不同,磁道数可以从几百到数千不等;一个磁道上可以容纳数KB 的数据,而主机读写时往往并不需要一次读写那么多,于是,磁道又被划分成若干段,每段称为一个扇区。一个扇区一般存放512字节的数据。对同一磁道中的扇区进行编号:1扇区,2扇区,…
计算机对硬盘的读写,出于效率的考虑,以扇区为基本单位。即计算机如果只需要硬盘上存储的某个字节,也必须一次把这个字节所在的扇区中的512字节全部 读入内存,再使用所需的那个字节。为了区分每个山区,在每个扇区存取的数据前、后两端,都有一些特定的数据,这些数据构成了扇区的界限标志,标志中含有扇区的编号和其他信息。计算机凭借着这些标志来识别扇区。

硬盘分区

硬盘的数据按照特点和作用可以分为$5$部分,引导区,DBR区,FAT区,DIR区和DATA区。
引导区常见的有MBR和GPT。
DBR是操作系统引导记录区
FAT区存放的是文件簇信息。常见的有FAT16和FAT32
DIR是根目录区
DATA区存放数据

BIOS,UEFI和MBR,GPT

BIOS和UEFI是常见的引导,MBR和GPT是分区表类型。
BIOS(Basic Input Output System)
UEFI(Unifed Extensible Firmware Interface)
MBR(Master Boot Record)
GPT(GUID Partion Table)

MBR

传统的MBR,位于整个硬盘的$0$磁道$0$柱面$1$扇区,也叫主引导扇区,总计$512$个字节。MBR只占用了$446$个字节,剩下的$64$个字节用来保存硬盘的分区表(Disk Partion Talbe, DPT),最多只有四个表项,也就是我们常遇到的最多只能设置四个主分区(或者$3$个主分区,$1$个扩展分区和无限制个数的逻辑驱动器),每个表项只有$16$个字节,每一个分区使用$4$个字节存储总扇区数,每个分区不能大于$2TB(2^{32}\times 512 bytes$),就是$2^{32}$个扇区,每个扇区按$512$字节来算,其他$12$个字节用来存储分区的其他信息。如图所示:
mbr

GPT

GPT分区需要需要操作系统更支持,可以有任何个数个主分区,每个分区都可以大于$2$T,它是基于UEFI使用的磁盘分区架构。

UEFI

UEFI是用来取代BIOS的,UEFI启动系统引导的方法是查找硬盘分区中第一个FAT分区内的引导文件进行系统分区,不具体指定分区表区。
FAT分区内可以存放MBR分区表,也可以存放GPT分区表。

从GPT硬盘启动

从GPT分区硬盘启动需要满足三个条件:

  • 操作系统支持,windows只有64为操作系统支持
  • 硬盘使用GPT分区
  • 主板使用UEFI模式

引导和分区类型匹配

BIOS + MBR

所有系统都支持,不支持大于$2$T的硬盘。

BIOS + GPT

BIOS可以使用GPT分布表,将GPT硬盘作为资料盘,但是不能用来引导系统,而且必须使用$64$位系统。

UEFI(legacy) + MBR

可以将UEFI设置为legacy(传统模式),支持MBR启动,和BIOS+MBR一样,也可以建立FAT分区,放置UEFI启动文件。

UEFI + GPT

可以把大于$2$T的硬盘当做系统盘,必须使用$64$位系统。

双系统

安装双系统直接进windows,使用EasyUEFI/Easybcd(工具)添加linux启动项,或者使用windows命令,bcdedit进行编辑(文档参见msdn,推荐使用这种方法)。
双系统直接进ubuntu,使用grub引导,执行update-grub自动修改/boot/grub/grub.cfg 文件。然后重启就会发现有了这个开机启动项,见参考文献[3]。

可以参考参考文献[3],或者参考文献[4]。

参考文献

1.https://blog.csdn.net/hyy5801965/article/details/51136395
2.https://www.cnblogs.com/zhangming-blog/articles/5392115.html
3.https://askubuntu.com/a/945988
4.https://askubuntu.com/a/217970
5.http://lanlingzi.cn/post/notes/2016/0313_grub_win10/