欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

UEFI引导的简单恢复方法

程序员文章站 2022-05-27 22:14:31
装系统,尤其是双系统,总是无法绕过引导的坑。linux的grub是非常复杂的引导系统,学习它非常累。而windows又不能引导linux。你可能会想,怎么就没有一种简单的引导方式,就好像引导光盘,引导u盘那样,插上去就能用呢?因为传统的mbr引导设计得很小气,所以多个系统都拼命争夺那个小小的引导区域... ......

装系统,尤其是双系统,总是无法绕过引导的坑。

linux的grub是非常复杂的引导系统,学习它非常累。而windows又不能引导linux。你可能会想,怎么就没有一种简单的引导方式,就好像引导光盘,引导u盘那样,插上去就能用呢?

因为传统的mbr引导设计得很小气,所以多个系统都拼命争夺那个小小的引导区域,而自己却又不懂得引导对方,所以就相互伤害,相互覆盖引导。但是,uefi横空出世,比较好的解决了这个问题。

但是如果你不熟悉uefi的原理,那么你会觉得这个uefi更加坑爹。电脑的东西,一定要先熟悉其原理,而不是浑水摸鱼,随便瞎搞,这样是没结果的。

uefi引导有两个条件:

1.有个引导区,叫esp。

2.每个分区都是gpt分区格式的。这个分区格式是指用了新的分区表。

uefi可以兼容mbr传统格式,但没必要!旧的东西就是要被淘汰的。所以现在uefi的复杂性是因为兼容mbr,如果不去兼容,才能体现uefi的便利。

首先要在bios里面关闭兼容模式,csm 关了。安全启动也关了。然后能选的都选uefi。

设好之后,才是纯粹的uefi环境。

为什么uefi 引导会比较方便呢?因为以前是所有操作系统,都争夺一块小区域,现在uefi直接给你一个引导分区,每个系统只要把引导文件按照规定放在各自的文件夹,就ok了,大家相互可以不认识,也可以不知道对方是谁,也可以不知道怎么引导对方。这岂不是很完美?

esp就是这么一个地方,它实际上是一个普通的fat16格式(或fat32)分区(win98之前的默认格式),这种格式,几乎每个操作系统都认识,都能操作,所以就很便利。但是为了避免受到破坏,进入系统之后,系统会对其进行隐藏,所以要用特定的工具来访问它。

知道原理之后,就很容易设计引导方案了。

事实上,对windows来说,引导只需要两个文件,一个是引导程序,一个是配置文件。其中引导程序,只需要复制,而配置文件叫bcd,通过一个叫easybcd的工具可以配置。

当然,第一步你的硬盘必须先格式化为gpt格式的。但是如果你已经格式化了,也没关系,可以通过diskgenius的免费软件来转换成gpt格式,操作得当不会破坏数据。

esp分区新建如下目录结构:

efi/boot/

efi/microsoft/boot/

将windows系统里面的bootmgfw.efi 复制到第二个路径下,把配置好的bcd也复制过去。然后把bootmgfw.efi 复制一份,改名bootx64.efi复制到第一条路径下。

就这么简单,甚至第二步也不是必须的。bootx64.efi这里是计算机默认启动的路径,而microsoft下面的,是微软这个品牌的系统所使用的启动路径,如果bios足够聪明,它会直接在microsoft下面找引导程序.efi。

对于linux来说,同样的,它也可以建立一个linux的文件夹,或者随便什么名字的文件夹,把引导文件放进去就可以了。

特别的,bios 内部的存储区域还可以存储相关的引导路径信息(需要相关工具来设置这块区域),方便用户选择。所以为何有些系统的引导文件布局和以上有所不同。

除了esp分区,其他任何分区,都可以独立的被引导,甚至可以跨设备引导,因为gpt用一个很长的标记标识所有设备,可以认为是无冲突,独一无二的,因此理论上,不管引导文件存在那里,从那里开始引导,只要给出正确的设备号,都能找到对应的设备,从而进行正确的引导。因此,理论上当前设备esp有没有,也不是关键,只要在某个设备上有,这个引导程序可以引导所有连接到硬件系统的设备。这也是uefi 和gpt分区系统真正强大的地方,真正做到了随意引导,与位置无关。

比如我们可以把引导放在一个u盘里面,然后插上这个u盘才能使用电脑,这也是挺有趣的实践。不过我没试过。大家可以尝试一下。