AutoXBC 写了:没有说 UEFI 用了经典引导器,是说 UEFI 本身作为引导器是不可编程的(作为运行环境可编程),使得用户在有弹性引导需求时,必须添加经典引导器和其 EFI 接口文件。这样用 UEFI 替代经典引导器的目的根本实现不了,最终除了额外引入三个层级并未简化流程。
1.BIOS => CMOS(引导设备选择配置) => MBR(负责寻找活动分区) => PBR (分区引导记录!吐血) => 经典引导器(NTLDR或BOOTMGR)=> 经典引导器配置 => 操作系统
NTLDR(BOOTMGR) 是专用引导器,而我们讨论的是通用引导器。专用引导器的设计缺陷不是 MBR 引导流程的缺陷。
BIOS 是纯固件,对用户透明;
CMOS 选引导设备,绝大多数情况非必需,就算有多个磁盘,一般都用主设备盲引;
MBR 活动分区是非必需的,MBR 及其后的空闲空间可以直接包含引导器,并由其透明自举
PBR 非必需的,绝大多数通用引导器忽略 PBR
最后就剩下
经典引导器 => 引导器配置 => 操作系统
一个层级如果不需要用户参与配置修改,那么就是透明的。从这个标准看,经典的 MBR 引导方式只有三个非透明层级:1.用户安装经典引导器,2.配置引导器,3.安装操作系统。而 UEFI 引入了额外三个层级,UEFI(引导器) => NVRAM(引导器配置) => EFI 文件(接口文件),UEFI 本身需要配置(UEFI only,BIOS,Both),NVRAM 需要配置(盲引怎么知道进入哪个系统?),EFI 接口文件需要配置(虽然是操作系统自动添加的,但是磁盘专用分区 + EFI文件的方式就隐含了被破坏的可能,需要单独维护)。
那这三个层级是必要的么?显然不是,经典引导根本不需要。
2.NVRAM 没有操作系统局限性?未必吧,搜索一下各种 NVRAM 被破坏的例子,搜索一下各种教大家清空重置 NVRAM 的教程,这东西作为主板的芯片,要用操作系统内的用户空间程序读写,隐含了巨大的不确定性。
3.玩双系统的总是说先装什么系统,后装什么系统。一旦装反了,还要各种修复引导
玩多系统的都知道,自己安装一个通用引导器,后面任何其他引导器都不用写 MBR 和 PBR,等着被链式引导就行了,先安装哪个有什么关系?
4.MBR 磁盘结构的缺陷,不是 MBR 引导方式的缺陷。一个重写的支持 GPT 的 BIOS(也就是理想中的UEFI)大可以不必深度介入引导过程。
5.安全引导被夸大了,一个可以写 MBR 的病毒,可以在 UEFI 的 GPT 磁盘里写任何它想写的区域。"真正的问题是聪明的黑客将绕过整个认证问题,签名是一个很有用的工具,但是它并不能解决所有的安全问题,而且我认为一些人有点太在意它了。--Linus Torvalds"
总结一下:
BIOS 有大量缺陷,而以 MBR 为起点的经典链式引导没有问题,没问题就不要修改;
UEFI 有大量革新,包括 GPT 等明显可见的改良,但是引导器耦合的结构被过度设计了;
很多人因为没有接触到设计优良的通用引导器,把引导流程神秘化了,并因此产生了偏见;
BOOTICE 是非常棒的软件,对 UEFI 引导流程的批评不涉及 BOOTICE 对 UEFI 的支持;
推荐两个通用引导器 GRUB4DOS 和 WEE,这是大多数 PE 维护盘和 U 盘量产工具的基础。
多数PC机仍是运行 Windows ,Windows 就是这样的启动流程。况且通用引导器(例如GRUB)也就仅仅少了 PBR 这一个过程。
MBR 后和第一个分区前确实有可用空间,某些第3方通用引导器还使用它们,问题是硬盘顶头存储结构就变成了“MBR可执行代码+分区表+55AA标记+MBR可执行代码”后面再就是第一个分区。而且第一个分区前面空多少保留空间还具有不确定性。
我只想说,这样的结构一塌糊涂~!
而且MBR和第一分区前面的区域并没有文件系统结构,需要直接读写硬盘“块”来操作!一些坑爹的程序员编写的软件因为配置MBR而顺道写坏分区表和第一个分区的情况也不少~!
其实 UEFI 引导过程比 BIOS 要精练。(只看执行代码部分。咱们说的NVRAM、CMOS、引导器配置只是他们的数据而已。)
UEFI 引导过程无非就是 UEFI =》 引导器(ESP分区) =》 操作系统内核。
而 BIOS 则是 BIOS =》 MBR =》 PBR (仅Windows)=》 引导器 =》 操作系统内核。
也就是说 UEFI 认识 ESP 分区的文件系统,直接读取里面的引导器文件(根据设置校验引导器文件是否有数字签名,是否被攥改)。
而 BIOS 只知道读取硬盘第一个块,运行上面的 MBR 可执行代码,然后控制权就交给MBR了,靠 MBR 可执行代码来完成接下来的加载步骤。至于分区、文件系统什么 BIOS 统统不认识。
这点来说,UEFI 要比 BIOS 先进的多。
1、真正的 UEFI 并不需要配置(UEFI only,BIOS,Both)。由于现在是处于 BIOS 到 UEFI 的过度阶段,才保留下这个 BIOS 兼容项目。
只有主板 CSM 禁用了才是真正的纯 UEFI 模式。此时你会发现主板 BIOS 和 Both 灰掉不可选。
(有些老显卡也未升级到 UEFI 固件,禁用CSM后会导致显卡无法显示,所以过度期间主板不得不保留 BIOS 兼容功能。预装正版Win8/10的品牌机硬件都是完全支持UEFI,出厂时CSM也都是禁用的)。
NVRAM 破坏依然可以引导,就我的主板来说,NVRAM 配置了无效的项目,或者清空NVRAM,开机时 UEFI 会自动搜索 ESP 分区里面的引导器并添加到引导菜单。不至于出现 NVRAM 破坏就不能引导。
(当然不排除早期 UEFI 的主板不会自动搜索ESP分区里面的引导器等。另外,有些主板默认启用CSM来兼容BIOS模式,也可能不自动搜索ESP分区里面的其它引导器。禁用CSM后使用纯UEFI模式则没问题)。
至于盲引肯定支持(例如U盘光盘等移动设备进行 UEFI 引导),默认是从 \EFI\Boot\bootx64.efi 引导,也不需要预先对NVRAM配置他们,UEFI会自动处理。
2、NVRAM 读写并不受限制于哪种类型操作系统,也就是说不管是 Win 还是 Linux 都可以正常配置它。即使配置错了,上面提到主板也可以自行搜索到引导器,或者从默认盲引。
即使用户空间可以读写NVRAM,但他存储只是配置数据,并无可执行代码,并不具备很大危险性。相反 MBR 是可引导代码,一旦被覆盖破坏,直接影响系统引导。
3、有多少人是把双引导搞坏了才知道要用第3方引导器。第3方引导要是搞坏了,该如何修复?
每个版本的 Windows 安装程序都是强制写 MBR 的,第3方引导器的 MBR 想长生永不被盖很难。也就 Linux 这类系统可以自己选不写 MBR 。
(当然你要是不用 Windows 安装程序,非要手工展开文件或者 Ghost 折腾那也无话可说,这么强的动手能力啥都不是问题!)
另外,你不在装系统的时候让安装程序自动配置引导器,你就得会手动配置(当然可以用第3方软件)。让安装程序自动配置就得接受后安装的引导器强制替换前一个引导器。
要想成功双引导要看后安装的引导器是否可以引导前一个引导器,或者使用第3方引导器。不同的引导器 MBR 还不相同,没有统一规范。
就算是同一个通用引导器(例如 GRUB2),其 MBR 代码还根据第二部分所在分区的 UUID 不同而不同。调整一下分区就导致GRUB2不工作的情况大有人在吧!
可以说 MBR 引导不确定性非常多,由于所用引导器不同,修复方式也大不相同!
4、BIOS只读取硬盘第一个扇区(512字节),也就是 MBR ,其中还有64字节的分区表和两字节的55AA有效标记。分区表地址空间狭小注定最大地址无法超过2TB。
重写GPT的BIOS?这样的思路是有问题的,因为BIOS并不认识硬盘分区表,或者说不是BIOS不支持大硬盘,而是受制于硬盘MBR分区表架构。
目前有个解决方法,就是在GPT分区表前面添加MBR分区表,让MBR分区表和GPT分区表中的分区重叠,这样的东西叫做混合分区表(我搞过)!
不过,这类破坏规范(不考虑向后兼容)来解决问题的做法还不如升级到 UEFI 去!
5、“一个可以写 MBR 的病毒,可以在 UEFI 的 GPT 磁盘里写任何它想写的区域。”
你说的没错,问题是写到 MBR 的区域是可执行代码,那么他将会是硬盘上最先被执行的实模式代码。而在 UEFI 中就算可写,也无法成为被 UEFI 执行的代码(安全引导启用的情况下)。所以 UEFI 引导器部分是可以保证安全的。
我单位就查到过 MBR 病毒。况且 MBR 代码是16位实模式代码,访问硬件的权限大着呢。不校验这些代码就运行确实是一个很危险的事情。
不过现在这个时代不像DOS时代,并不是引导型病毒泛滥的时代。所以说可以不用太在意。
MBR 可执行空间狭小,导致引导器只是第一部分在 MBR 中,主要部分仍在普通分区中,其文件更容易遭到破坏。(好好的一个引导器被拆成两部分)而且可能出现好几个分区都有引导器的部分文件残留。
而UEFI则是将引导器按文件夹区别统一放在ESP专用分区中,并对该分区有一定的保护措施。(例如即使是FAT32,但也只有root/Administrator才能访问,Windows还不主动挂载呈现ESP分区)
在安装系统时,每个系统都试图用自己的MBR去替换硬盘现有的MBR(上面提到的第一部分),及容易被坏。而且MBR是重要引导代码,被破坏直接影响系统引导。
在 MBR 的部分并不以文件形式呈现,而是直接对硬盘进行块操作,导致配置,备份,还原都要使用专用程序,而不能通过更加安全简单的操作文件方式来完成。
上面也说了,坑爹的软件写坏MBR及分区表的情况也比较常见。
而 UEFI 引导器代码只有一部分,存放在 ESP 分区中,并且全部以文件形式呈现。
对于已经正常使用的机器,保持 BIOS + MBR 并无问题。(目前好像也只有 Intel x86 架构使用这种方式引导。)
但 UEFI+ GPT 是未来的趋势。可扩展性,支持不同架构是其最大优点。
WEE 没用过,但 GRUB4DOS 并不支持 UEFI 引导。而 GRUB2 可同时支持 BIOS 和 UEFI 引导,更为通用。
GRUB4DOS 相比 GRUB2 的最大好处恐怕就是只有一个文件就能搞定(仅支持x86架构),不像 GRUB2 有一大堆功能模块和支持其它架构的模块。