gpt分区实例

Table of Contents

1 BIOS, MBR, EFI, UEFI, GPT是什么?

  1. BIOS(Basic Input/Output System): 基本输入输出系统;

  2. MBR(Master Boot Recorder): 主引导记录;

  3. EFI(Extensible Fireware Interface): 可扩展固件接口;

  4. UEFI(Universal EFI); 统一可扩展固件接口;

  5. GPT(GUID Partition Table): GUID分区表.

  6. GUID(Globally Unique Idenifier): 全局唯一标识符号;

  7. DPT(Disk Partition Table);

  8. GRUB(GRand Unified Bootloader):

  9. LILO(LInux LOader):

个人理解(基本上很多错误):

  • 电脑启动后, 需要一个基本的系统来引导启动磁盘上的操作系统.

  • 这个基本引导系统早期的标准是BIOS, 最新的标准是UEFI.

  • EFI是Intel提出的标准, 最后统一为一个国际标准UEFI;

  • BIOS和UEFI的实现都是以固件的形式存在的, 意味着不能轻易改动;

  • 新的电脑采用的都是UEFI+GPT的技术解决方案; 但GPT分区是可以在BIOS上运作的;

  • 对于MBR分区方案, 第0柱面, 0磁道, 1扇区(512bytes), 存放以下内容:

  1. 引导程序: 446bytes;

  2. 磁盘分区表 DPT(Disk Parition Table): 64bytes;

  3. MBR的结束位: 2bytes;

BIOS或UEFI要找寻到磁盘上的操作系统, 最重要的就是找到内核的位置, 所以首先要知道内核文件 数据在磁盘中的位置; 此过程由引导程序完成;Linux下的引导程序有: GRUB Legacy, GRUB 2, LILO;由于GRUB比较大, 446bytes的空间根本放不还, 于是常见的方式是将GRUB程序的地址写 入到引导程序位, 借此载入GRUB的引导程序;DPT记录用分区工具划分的分区信息:

  1. MBR分区表只能存储4个分区信息: 64byte = 4分区 * 16bytes;

  2. MBR分区共可编址扇区数量: 232*(512/1024)/230 KB = 4TB;

  3. GPT分区共可编址扇区数量: 264*(512/1024)/230 KB = 9.4 x 1021 bytes ~= 8 ZiB;

2 用parted操作GPT分区表

  • parted和fdisk都可以对GPT分区表进行操作, 但听说parted进行GPT操作更好;

  • 支持GPT分区表操作的软件/命令汇总:  parted, fdisk , cfdisk, sfdisk , gdisk, sgdisk ,cgdisk.

2.1 常用parted操作

  • 用法: parted [options] [device [command [options…]…]]

  • 所有的可用程序内的命令有:

    • select DEVICE: 选择要编辑的分区;

    • help [COMMAND]: 打印所有命令或命令的帮助;

    • unit UNIT: 设置默认的单位;

    • align-check: 对齐检查:

    • mklabel,mktable LABEL-TYPE: 创建磁盘卷标, 分区表标签;

    • print [devices|free|list,all|NUMBER]: 打印分区表, 可用设备, 空闲空间, 所有 找到的分区或某个分区

    • mkpart PART-TYPE [FS-TYPE] START END     make a partition

    • rm NUMBER: 删除分区;

    • name NUMBER NAME: 给分区NUMBER一个NAME;

    • diskset FLAG STATE: 更改已选择分区FLAG;

    • disktoggle [FLAG]: 开关已选择分区上的FLAG;

    • set NUMBER FLAG STATE: 更改分区NUMBER上的FLAG;

    • toggle [NUMBER [FLAG]]: 开关分区NUMBER上的FLAG;

    • rescue START END: 救援分区;

    • quit: 退出, 注意: parted是实时保存的, 操作后没有撤销的机会, 需要慎重;

    • version: 打印版本号

2.2 parted分区实例

  1. 给虚拟机添加一块硬盘; fdisk -l: 没有看到sdb – 不能直接识别, 需要重启 系统;

  2. 指定硬盘设备: parted -a optimal /dev/sda-a: 是指设置对齐方案, optimal为最优;

  3. 设置GPT label:mklabel gpt

unit mib #设定单位
mkpart primary 1 3 #第1个主分区, 从1M到3M的空间2M大小;
name 1 grub #命名为grub
set 1 bios_grub on #设置它的bios_grub flag为开启状态;

mkpart primary 3 131 #新建一个128M大小的boot分区;
name 2 boot
set 2 boot on

mkpart primary 131 643 #新建一个512M的swap分区;
name 3 swap

mkpart primary 643 -1 #新建一个从643M到磁盘结束的rootfs根分区;
name 4 rootfs

print #打印已创建分区信息

打印的最终效果如下:

Number  Start   End     Size    File system  Name    Flags
 1      1049kB  3146kB  2097kB               grub    boot
 2      3146kB  131MB   128MB                boot
 3      131MB   643MB   512MB                swap
 4      643MB   21.5GB  20.8GB               rootfs

Created: 2016-03-13 Sun 14:13

Emacs 24.5.1 (Org mode 8.2.10)

Validate