下载原版系统镜像,推荐使用Rufus(https://rufus.ie/)烧写。选择镜像和u盘后,分区模式选择GPT,启动模式选择UEFI,然后烧写启动u盘。然后按流程安装。新硬盘的话直接点击空硬盘即可,不需要手动分区。
BIOS启动详解
BIOS的启动会按照你所设置的顺序依次尝试读取每个硬盘开始部分的一个特定区域。如果读取到boot loader就把相关代码载入内存,接下来就交给CPU开始处理和启动系统。如果没读到boot loader则按顺序读取下一个硬盘,若都没读到就是常见的:
因此BIOS的设计是过时的:boot loader空间有限无法实现更多功能;boot loader空间位置固定灵活性差;BIOS中无法读取启动系统信息,只能按硬盘启动,硬盘中多系统无法直接选择。
UEFI启动详解
EFI分区
相比BIOS固定的位置,UEFI启动会查找硬盘中的EFI分区。EFI分区一般为FAT32格式,被标记为ESP。不需要为第一个分区。例如下图中两块硬盘,第一块第一个分区为EFI分区,第二块硬盘第三个分区为EFI分区。
Windows默认设置的EFI分区为100M,单系统是足够的,但要多系统的话可能会出问题,见下面常见问题。多系统的话建议EFI分区设200-500M。(顺便一提,分区表和raid格式数据记得备份保存,最近刚因为分区表损坏丢了数据)
EFI分区中除了资源文件,最主要用于启动的是一些*.efi文件。如图。这些efi文件会由UEFI boot manager读取启动。
UEFI boot manager
UEFI启动会使用UEFI boot manager,是主板固件中的程序。可以通过EFI shell修改;如果系统是通过UEFI启动的,则也可以通过程序修改。UEFI boot manager会默认读取\EFI\Bottt\boot{架构}.efi,在64位系统上就是bootx64.efi,以下默认说bootx64.efi。
本来写完了4k字,不小心关了。垃圾b站写着已保存但没有自动保存就只剩到这了,前面的修订也没了。反正没人看剩下懒得仔细重写了,就随便写写了。
单Windows系统若未设置主板启动项,会引导bootx64然后引导\EFI\Microsoft\Boot\bootmgfw.efi,即Windows boot manager启动。
多Windows也只有一个bootmgfw.efi,然后由Windows boot manager统一管理,在windows里可由msconfig设置。
除了默认读取的bootx64.efi,如果安装盘的系统是UEFI启动的话,可以设置主板UEFI启动项,即将多个系统的.efi文件路径设置进主板boot manager中,如下图。
多其他系统就如上图,每个系统一个efi,这个是系统安装时加入主板设置的,如果安装过程正确会加入到UEFI启动项中,就可以在启动项中直接看到每个系统,而不是BIOS一样只能看到硬盘。
不过如果安装盘的系统是传统BIOS启动的话,则无法修改主板EFI启动项。
另外进入主板的EFI shell也是可以手动加启动项的。
这个启动项也不是很智能,像图上的Ubuntu已经不存在了,但因为这个启动项还在主板设置中,所以还是能看到这个启动项,但当然是没法正常启动的。
BIOS设置与CSM兼容模式
主板设置中的CSM兼容模式是UEFI用于兼容传统BIOS启动等功能用的。
CSM关闭时仅能看到存在EFI分区的硬盘和设置的EFI启动项。如果(硬盘不存在EFI分区)或者(不存在bootx64.efi 且 未设置启动项)就不显示。
CSM开启时显示所有硬盘和EFI启动项,但由于各家主板厂商实现问题可能会有很多坑(尤其是老主板),如果仅用EFI启动的话最好关闭。见常见问题。
常见问题
Windows更新提示无法更新系统保留的分区
EFI分区不够大,中文解决方法教程写的都是垃圾。见https://www.thewindowsclub.com/we-couldnt-update-system-reserved-partition,懒得重写翻译了。
无法启动UEFI系统
有的主板在存在BIOS启动的硬盘时,可能会降级到传统BIOS启动。拔掉MBR的硬盘,关闭CSM再测试。
有的系统安装方式是只添加自己路径下的.efi文件,然后添加主板启动项来启动,而不会添加bootx64.efi。这样的话将硬盘放到其他电脑上则会因为既没有默认efi文件也没有启动项而导致看不到启动项,无法启动。
如果手动启动了启动项又回到主板设置界面,可能efi文件不存在或该efi引导的系统不存在。检查默认路径bootx64.efi和\EFI\Microsoft\Boot\bootmgfw.efi(如果是Win,不是的话自行检查路径)是否正确存在。
部分主板可能只默认载入windows的boot manager路径而不是bootx64,非Windows系统可能需要手动添加。