arch linux 安装 之 ---GPT--引导篇
新入一二手X240 ,直接格式化,装archLinux。
一、引导程序安装---------------
1、首先搞清楚什么是UEFI
Under UEFI下的引导顺序
- System switched on. The Power On Self Test (POST) is executed.
- UEFI firmware is loaded. Firmware initializes the hardware required for booting.
- Firmware reads the boot entries in the firmware's boot manager to determine which UEFI application to be launched and from where (i.e. from which disk and partition).
- Firmware launches the UEFI application.
- This could be the Arch kernel itself (since EFISTUB is enabled by default).
- It could be some other application such as a shell or a graphical boot manager.
- Or the boot entry could simply be a disk. In this case the firmware looks for an EFI System Partition on that disk and tries to run the fallback UEFI application
\EFI\BOOT\BOOTX64.EFI
(BOOTIA32.EFI
on 32-bit systems). This is how UEFI bootable thumb drives work.
If Secure Boot is enabled, the boot process will verify authenticity of the EFI binary by signature.
EFI System Partition
- 必须是物理分区(不支持lvm、软raid等)
- esp分区与操作系统无关,EFI firmware会直接读取该分区内的bootloader和启动程序。
- 推荐设置512M大小。
- 安装grub和efibootmgr,grub后续安装脚本利用efibootmgr创建.efi可执行引导程序。
- EFI启动不并不需要bootloader,可以通过efibootmgr或者efi shell直接将boot entry写入efi启动项。
#备注内容(以下内容摘自archwiki)
The EFI System Partition (also called ESP or EFISYS) is a FAT32 formatted physical partition (in the main partition table of the disk, not under LVM or software RAID etc.) from where the UEFI firmware launches the UEFI bootloader and application. It is an OS independent partition that acts as the storage place for the EFI bootloaders and applications to be launched by the EFI firmware. It is recommended to keep ESP size at MiB although smaller/larger sizes are fine. Install the packages grub and efibootmgr. GRUB is the bootloader, efibootmgr creates bootable .efi stub entries used by the GRUB installation script. The following steps , install its modules to /boot/grub/x86_64-efi, and place the bootable grubx64.efi stub inesp/EFI/grub. First, tell GRUB to use UEFI, set the boot directory and set the bootloader ID.
2、安装grub引导程序和efibootmgr
#pacman -S grub efibootmgr
#grub-install --target=x86_64-efi --efi-directory=esp --bootloader-id=grub
#利用efibootmgr的功能,创建efi的引导启动文件 grubx64.efi
#上面一条命令,指定x86_64-efi和grubx64.efi的路径;这样当efi firmware访问esp分区,加载bootloader,运行grubx64.efi,读取grub.cfg
#--efi-directory
and--bootloader-id
are specific to GRUB UEFI.--efi-directory
specifies the mountpoint of the ESP
3、配置grub.cfg
grub-mkconfig -o /boot/grub/grub.cfg
grub的详细内容,查看 https://wiki.archlinux.org/index.php/GRUB#Generate_the_main_configuration_file
https://wiki.archlinux.org/index.php/EFISTUB
https://wiki.archlinux.org/index.php/Arch_boot_process
-- 补充 ,当我们给硬盘第一次分区的时候,会发现是从第34扇区开始的 ,原理如下,摘自其他地方----
保护MBR
保护MBR包含一个DOS分区表(LBA0),只包含一个类型值为0xEE的分区项,在小于2TB的磁盘上,大小为整个磁盘;在更大的磁盘上,它的大小固定为2TB。它的作用是阻止不能识别GPT分区的磁盘工具试图对其进行格式化等操作,所以该扇区被称为“保护MBR”。实际上,EFI根本不使用这个分区表。
EFI部分
EFI部分又可以分为4个区域:EFI信息区(GPT头)、分区表、GPT分区、备份区域。
- EFI信息区(GPT头)
- 起始于磁盘的LBA1,通常也只占用这个单一扇区。其作用是定义分区表的位置和大小。GPT头还包含头和分区表的校验和,这样就可以及时发现错误。
- 分区表
- 分区表区域包含分区表项。这个区域由GPT头定义,一般占用磁盘LBA2~LBA33扇区。分区表中的每个分区项由起始地址、结束地址、类型值、名字、属性标志、GUID值组成。分区表建立后,128位的GUID对系统来说是唯一的。
- GPT分区
- 最大的区域,由分配给分区的扇区组成。这个区域的起始和结束地址由GPT头定义。
- 备份区
- 备份区域位于磁盘的尾部,包含GPT头和分区表的备份。它占用GPT结束扇区和EFI结束扇区之间的33个扇区。其中最后一个扇区用来备份1号扇区的EFI信息,其余的32个扇区用来备份LBA2~LBA33扇区的分区表。
EFI信息区数据结构
EFI信息区位于磁盘的1号扇区(LBA1),也称为GPT头。其具体结构如下表所示
相对字节偏移量 (十六进制) |
字节数 | 说明[整数皆以little endian方式表示] |
---|---|---|
00~07 | 8 | GPT头签名“45 46 49 20 50 41 52 54”(ASCII码为“EFI PART”) |
08~0B | 4 | 版本号,目前是1.0版,其值是“00 00 01 00” |
0C~0F | 4 | GPT头的大小(字节数),通常为“5C 00 00 00”(0x5C),也就是92字节。 |
10~13 | 4 | GPT头CRC校验和(计算时把这个字段本身看做零值) |
14~17 | 4 | 保留,必须为“00 00 00 00” |
18~1F | 8 | EFI信息区(GPT头)的起始扇区号,通常为“01 00 00 00 00 00 00 00”,也就是LBA1。 |
20~27 | 8 | EFI信息区(GPT头)备份位置的扇区号,也就是EFI区域结束扇区号。通常是整个磁盘最末一个扇区。 |
28~2F | 8 | GPT分区区域的起始扇区号,通常为“22 00 00 00 00 00 00 00”(0x22),也即是LBA34。 |
30~37 | 8 | GPT分区区域的结束扇区号,通常是倒数第34扇区。 |
38~47 | 16 | 磁盘GUID(全球唯一标识符,与UUID是同义词) |
48~4F | 8 | 分区表起始扇区号,通常为“02 00 00 00 00 00 00 00”(0x02),也就是LBA2。 |
50~53 | 4 | 分区表总项数,通常限定为“80 00 00 00”(0x80),也就是128个。 |
54~57 | 4 | 每个分区表项占用字节数,通常限定为“80 00 00 00”(0x80),也就是128字节。 |
58~5B | 4 | 分区表CRC校验和 |
5C~* | * | 保留,通常是全零填充 |
分区项
相对字节偏移量 (十六进制) |
字节数 | 说明[整数皆以little endian方式表示] |
---|---|---|
00~0F | 16 | 用GUID表示的分区类型 |
10~1F | 16 | 用GUID表示的分区唯一标示符 |
20~27 | 8 | 该分区的起始扇区,用LBA值表示。 |
28~2F | 8 | 该分区的结束扇区(包含),用LBA值表示,通常是奇数。 |
30~37 | 8 | 该分区的属性标志 |
38~7F | 72 | UTF-16LE编码的人类可读的分区名称,最大32个字符。 |
注意,扇区尺寸不能假定为512字节,也就是说,一个扇区内可能存放4个以上的分区项,也可能只存放一个分区项的一部分。也就是说,除了头两个扇区(LBA 0 和 LBA 1)之外,GPT规范仅定义了数据结构的尺寸,而不关心使用多少个扇区进行存储。
相关操作系统 | GUID[little endian] | 含义 |
---|---|---|
None | 00000000-0000-0000-0000-000000000000 | 未使用 |
None | 024DEE41-33E7-11D3-9D69-0008C781F39F | MBR分区表 |
None | C12A7328-F81F-11D2-BA4B-00A0C93EC93B | EFI系统分区[EFI System partition (ESP)] |
None | 21686148-6449-6E6F-744E-656564454649 | BIOS引导分区,其对应的ASCII字符串是"Hah!IdontNeedEFI"。 |
None | D3BFE2DE-3DAF-11DF-BA40-E3A556D89593 | Intel Fast Flash (iFFS) partition (for Intel Rapid Start technology) |
Windows | E3C9E316-0B5C-4DB8-817D-F92DF00215AE | 微软保留分区 |
Windows | EBD0A0A2-B9E5-4433-87C0-68B6B72699C7 | 基本数据分区 |
Windows | DE94BBA4-06D1-4D40-A16A-BFD50179D6AC | Windows恢复环境 |
Linux | 0FC63DAF-8483-4772-8E79-3D69D8477DE4 | 数据分区。Linux曾经使用和Windows基本数据分区相同的GUID。 这个新的GUID是由 GPT fdisk 和 GNU Parted 开发者根据Linux传统的"8300"分区代码发明的。 |
Linux | A19D880F-05FC-4D3B-A006-743F0F84911E | RAID分区 |
Linux | 0657FD6D-A4AB-43C4-84E5-0933C84B4F4F | 交换分区 |
Linux | E6D6D379-F507-44C2-A23C-238F2A3DF928 | 逻辑卷管理器(LVM)分区 |
Linux | 8DA63339-0007-60C0-C436-083AC8230908 | 保留 |
Microsoft还进一步对分区的属性进行了细分:低位4字节表示与分区类型无关的属性,高位4字节表示与分区类型有关的属性。Microsoft目前使用了下列属性:
Bit | 解释 |
---|---|
0 | 系统分区(磁盘分区工具必须将此分区保持原样,不得做任何修改) |
1 | EFI隐藏分区(EFI不可见分区) |
2 | 传统的BIOS的可引导分区标志 |
60 | 只读 |
62 | 隐藏 |
63 | 不自动挂载,也就是不自动分配盘符 |
arch linux 安装 之 ---GPT--引导篇的更多相关文章
- Arch Linux 安装简明流程
Arch Linux 安装简明流程 这是一篇为 GPT/EFI 引导 的电脑安装 Arch Linux(双系统)的中文简明流程,尽可能省略了可以省略的流程与文字以使得篇幅尽量短小,基本上基于 Arch ...
- 自己瞎捣腾的Win7下Linux安装之路-----理论篇
接着上回说道,我把双系统做好啦,开心.... 之后我就在想几个问题: 1.在Ubuntu装好后,重启电脑却还是win7,等我用EasyBCD之后,才可选择使用装好的Ubuntu呢? 2.在用EasyB ...
- Arch Linux 安装记录
Arch Linux 安装记录 基本上参考wiki上的新手指南,使用arch 2014.6.1 iso安装 设置网络 有线网络 Arch Linux 默认开启DHCP. 静态ip 首先关闭DHCP:s ...
- Arch LInux安装dde(Deepin Desktop Environment 深度桌面环境)
我一直比较推荐一些Linux新手使用Deepin Linux,因为我认为这种尽量的follow Windows的系统至少对于新手来说是比较的友好的,而且预装了QQ 火狐浏览器中文版,甚至还移植了像36 ...
- Arch Linux 安装rust
Arch Linux 安装rust 0. 参考 Rust Toolchain 反向代理使用帮助 1. 安装 安装rustup和toolchain yaourt -S rustup rustup ins ...
- Arch Linux 安装、配置、美化和优化
国庆假期玩了下Arch Linux,发现这货跟Ubuntu之流相差甚远,甚难调教,而且安裝过程全命令行,会有各种问题,各种知识... --- 安装引导器--- -------------------- ...
- Arch linux安装
安装archlinux可参考: http://blog.sina.com.cn/s/blog_69e5d8400101bqlj.html http://www.cnblogs.com/mad/p/32 ...
- Arch Linux 安装过程
在VM中装了Arch,由于过程较为曲折,现写博客一篇聊以慰藉. 1.新建虚拟机,将下载好的archlinux-2016.03.01-dual.iso挂到虚拟机设置的CD/DVD 2.进入Arch安装界 ...
- 把Arch Linux安装到U盘上的具体教程
Arch Linux简介 Arch Linux(或称Arch)是一种以轻量简洁为设计理念的Linux发行版.其开发团队秉承简洁.优雅.正确和代码最小化的设计宗旨.Arch Linux 项目受 CRUX ...
随机推荐
- html显示时间
<html> <head> <script type="text/javascript"> function time() { var time ...
- WPS for Linux(ubuntu)字体缺失解决办法(转)
原文:http://www.cnblogs.com/liangml/p/5969404.html 启动WPS for Linux后,出现提示"系统缺失字体" . 出现提示的原因是因 ...
- bootstrap dialog 使用模态对话框
bootstrap3-dialog 使用模态对话框 <div class="modal fade"> <div class="modal-dialog& ...
- React Native 实现页面动态切换
第一步. 初始化子View constructor(props){ super(props); this.state = { isChange : true, itemView : (<Text ...
- 拦截JQuery的ajax
(function() { var _ajax = $.ajax; $.ajax = function(opts) { //实现自己的逻辑 _ajax(opts); }; })();
- 提升linux下tcp服务器并发连接数限制
1.修改用户进程可打开文件数限制 在Linux平台上,无论编写客户端程序还是服务端程序,在进行高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制(这是因为系统 ...
- ORA-01033: ORACLE 正在初始化或关闭 进程 ID: 0 会话 ID: 0 序列号: 0
用了很长时间的数据库,一直都挺好,今天早上一来报这个错,开始追究原因. 1.用SYS用户登录: 2.将数据库修改为打开状态,alter database open,出现如下的错误提示: ORA-160 ...
- 使用Linux碎解三_CentOS7搭建Lamp环境安装zabbix遇到的问题
问题一: 执行不了 yum命令 解决方案:配置系统的DNS(详细参见碎解二) 问题二: make 命令的时候,出现错误 提示 和没有gcc大体相关 解决方案:yum install gcc (在网 ...
- 四元数quaternion
四元数的简单方法运用四元数在Unity3D中的作用就是拿来表示旋转. AngleAxis 创建一个旋转,绕着某个轴旋转,返回结果是一个四元数. 跟ToAngleAxis实现的是相反的功能. Angle ...
- 转 Microsoft's Objective-C tech started on BlackBerryOS, Tizen
今天看到了这个 Microsoft's Objective-C tech started on BlackBerryOS, Tizen 见原文 http://www.osnews.com/story ...