本文分为两部分:

    * BIOS + MBR + GRUB* BIOS + GPT + GRUB

这两种模式下有所区别,下面会一层层的解释这两种方式。通常GPT与UEFI一起使用,因为UEFI只能使用GPT分区表,GPT是UEFI的一部分,但是本文本文讨论的是GPT + BIOS的方式,目前并不涉及UEFI相关的内容。

# 启动原理简述

GRUB由几个镜像文件组成,其中最重要的是:

    # boot.img,此图像是GRUB的第一部分。 由于大小限制,它不了解文件系统。它的唯一功能是从本地磁盘加载core.img文件。要使BIOS读取它,此镜像将写入MBR中或分区的引导扇区。
    # core.img,它包含足够的模块来访问/boot/grub目录,并在运行时从文件系统加载其他所有内容(包括菜单处理,加载目标操作系统的能力等)。此镜像可以安装在磁盘上的不同区域,具体取决于是使用MBR分区表还是GPT分区表。

所以,就引导来说,这两种模式的主要区别还是在与core.img的位置。

# BIOS + MBR + GRUB

有两个位置用来安装core.img镜像:

# 在MBR后的“空隙”中:“空隙”是MBR和第一个分区之间的区域。由于MBR是512字节,并且第一个分区通常以1MiB(2048个扇区)偏移对齐,因此为core.img留下了足够的空间。

# 在文件系统中,在这种情况下,包含core.img的块列表可以存储在该分区的第一扇区中。需要注意的是,这些块可能会被文件系统移动。 因此,不建议在此处放置core.img镜像。

# BIOS + GPT + GRUB

可以在GPT磁盘上为GRUB保留整个分区,称为「BIOS引导分区」。然后,可以将GRUB嵌入到该分区中,而不会被其他软件覆盖,也不会被包含在可能移动其块的文件系统中。

BIOS引导分区的大小至少应为31KiB。在扇区大小为512字节的GPT磁盘上,第一个可用扇区通常为34。因为:

   LBA 0: Protective MBR.LBA 1: GPT header.LBA 2-33: Partition Entry Array.

并且第一个分区通常以1MiB(2048个扇区)偏移对齐。这留下了类似于MBR磁盘上的间隙,可以将它作为「BIOS引导分区」使用。 但是,也可以在磁盘上的不同偏移处创建「BIOS引导分区」。

「BIOS引导分区」还必须具有正确的分区类型,即在gdisk中设置为EF02,或者在parted中设置bios_grub标志。这也是下面错误的原因:

# grub-install /dev/sdd
Installing for i386-pc platform.
grub-install: warning: this GPT partition label contains no BIOS Boot Partition; embedding won't be possible.
grub-install: error: embedding is not possible, but this is required for RAID and LVM install.

你需要创建一个「BIOS引导分区」,专门用于保存core.img镜像。

# 创建BIOS引导分区

下面是在parted中操作:

#!/bin/sh# 假设我们的硬盘是/dev/sdd# parted /dev/sdd
GNU Parted 3.2
Using /dev/sdd
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print
Model: Samsung SSD 860 QVO 2TB (scsi)
Disk /dev/sdd: 2000GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:Number  Start   End     Size    File system  Name              Flags1      1049kB  1075MB  1074MB  ext4         Linux filesystem  bios_grub2      1075MB  538GB   537GB                Linux LVM         lvm(parted) set 1 bios_grub on
(parted) q
Information: You may need to update /etc/fstab.# 关键命令是「set 1 bios_grub on」,其中参数「1」是分区编号。
# 另外,「BISO引导分区」不用这么大。我是因为一开始并不懂,所以才分配了这么大。同样1MiB足够了。

!!!「BIOS引导分区」是一个单独的分区,用于存放core.img镜像,不能格式化,不能用作其他的用途。

# 安装GRUB引导

接下来的任务就是安装GRUB引导:

#!/bin/shgrub install /dev/sdaupdate-grub

# 验证

有个Shell脚本,「Boot Info Script」,用于查看系统的引导信息。执行该命令后,他会输出boot.imgcore.img镜像的位置。

相关文章

「GRUB」- 安装
「Grub」- 手动引导启动

参考文献

Grub failing to install on Debian/Ubuntu with GPT partitions
GRUB on a BIOS System
gpt/bios grub2 boot problem, diagnostic and tools
Booting from GPT
Legacy BIOS Issues with GPT

「GRUB」- 在BIOS系统上的GRUB引导 @20210221相关推荐

  1. 「图文」教你微信上投票怎样刷票之如何快速微信拉票通过免费微信互投群万人群操作

    「图文」教你微信上投票怎样刷票之如何快速微信拉票通过免费微信互投群万人群操作,越来越多的人在平常生活中使用微信,以微信为载体的许多功能就被开发和使用了起来,比如--微信投票.于是乎,微信上兴起了各种投 ...

  2. 不同的「火」在舌頭上的表現也不一樣

    ★不同的「火」在舌頭上的表現也不一樣. 舌尖属心.肺,舌中属脾.胃,舌根属肾,舌边属肝.胆. 1.舌尖紅:心火 夏主心,因此夏天心火會旺! 如果舌尖紅,伴有煩躁.口干.口舌生瘡.睡眠不好做惡夢.手足心 ...

  3. 卖「概念」卖到资产上亿?

    上两期我们带大家简单地了解什么是区块链和区块链如何增值你的业务. 大家可能会很好奇这些「元宇宙」.「区块链」的概念在股市上还可创造怎样的价值,本期我们将会带大家了解「概念股」. 01 概念股中的「概念 ...

  4. 据我所知,这是第一个完整实现运动分割、动态目标追踪等的「开源」动态SLAM系统!...

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 今天给大家分享一篇最新文章,VDO-SLAM :一种动态目标感知的视觉SLAM系统,原文名称 VDO- ...

  5. 「OBS」关于Windows 系统下 OBS 黑屏问题的处理方法

    OBS 在 Windows 下的黑屏问题 系统环境 小米笔记本 Windows 10 Pro X-64 OBS V22.0.2 64-bit 黑屏原因 为什么会黑屏呢?电脑硬件的原因? OBS 软件的 ...

  6. mysql 查询每天 如果没有显示为0_「15」MySQL的系统信息函数

    这是我写MySQL函数系列的第五篇文章.之前的都是基于MySQL数据库的数据(数字.日期与时间.字符串)处理功能性函数,本篇则学习MySQL数据库管理相关的函数. [1]查看MySQL版本号 [结论] ...

  7. android wifi传图片,「教程」将Mac电脑上的照片无线传到安卓手机上

    还在寻找Mac苹果电脑与安卓手机如何无线互传照片的方法吗?今天就与小伙伴们分享一种最简单的方法,只需下载一款锤子开发的HandShaker免费软件即可. 1.首先我们需要先安装一款软件,目前比较好用的 ...

  8. 华为自研编程语言「仓颉」火上热搜,已正式开启内测,成员辟谣:不是中文编程...

    萧箫 发自 凹非寺 量子位 | 公众号 QbitAI 备受关注的华为自研编程语言「仓颉」,又火上热搜了. 这次是因为「仓颉」正式开启了内测,目前已经有部分开发者拿到源代码. 前不久,华为编程语言实验室 ...

  9. 体验「UOS」V20 专业版:能代替 Win10 了吗体验

    统信「UOS」基于 Linux 开发的一款自研桌面操作系统,由统信软件技术有限公司的团队研发的. 之前体验过「UOS」系统的小伙伴觉得这就是深度「Deepin」的"换皮改名"版,后 ...

最新文章

  1. 《计算机组成原理》实验报告——TEC-2实验系统——运算器实验
  2. web安全测试视频课程专题_有关有效企业测试的视频课程
  3. 有关Drools业务规则引擎的完整教程
  4. 开放下载!从RCNN到SSD,这应该是最全的一份目标检测算法盘点
  5. 力扣232. 用栈实现队列(JavaScript)
  6. android 关于提高第三方app的service优先级
  7. IDEA Maven 使用教程
  8. excel2007如何增加控件?
  9. 开发一个APP系统软件需要多少钱及需要多长开发周期
  10. ListView的增删改查(实战)
  11. 视打击微软 力挺国产红旗Linux
  12. 中国虚拟人哪家强?沙利文、IDC:小冰百度商汤位列第一梯队
  13. html的五角星怎么打出来,五角星符号怎么打出来?
  14. ai作文批改_作文批改功能,AI,你可以在批改记录中看到自己每次的进步
  15. 全!CTF靶场、渗透实战靶场总结 (适合收藏)
  16. Aspect Based Sentiment Analysis经典模型
  17. 使用原生JS封装一个Ajax
  18. 信息项目管理师计算机公式,(最新整理)信息系统项目管理师九个公式计算题
  19. iOS底层开发消息发送与转发流程
  20. 服务器显示屏出现白屏,前端性能优化之白屏时间

热门文章

  1. 安卓最新系统_诺基亚安卓手机均已升级为安卓9 谷歌“干儿子”果然名不虚传...
  2. 7-2 阶梯电价 (15 分)
  3. 科学家研究出环保的一次性电池 减轻生态环境的负担
  4. onmouseover和onmouseout事件小结
  5. python入门基础语法
  6. 光盘文件系统-ISO9660(CDFS)、UDF
  7. 2.【Linux虚拟机】新安装debian11后常用命令
  8. 简单物联网应用——基于老人居家声音监测系统(全!含完整源码、详细注释、测试结果、设计过程、视频详细教程)
  9. matlab可以节定积分方程,如何用matlab如何实现数值积分
  10. 关于jsp的心得(一)