BISO
默认启动项(Boot Loader)数据:引导代码中存储EFI文件路径
无NVRAM,启动代码和分区表存储于磁盘0柱面0扇区(512字节)
UEFI
默认启动项(Boot Loader)数据:NVRAM中存储EFI文件路径
有NVRAM,启动代码存于NVRAM
分区表存储于磁盘最开始位置到1MB空间
启动项编辑工具efibootmgr
efibootmgr可用来修改NVRAM中的数据
执行此命令会打印出在BIOS设置的启动项:
123456789$ efibootmgr BootCurrent: 0000Timeout: 1 secondsBootOrder: 0000,0001,0002,0003,0004Boot0000* Arch Linux HD(1,GPT,c8f79300-07ea-4a02-8bc6-7cb19803be54,0x800,0xfa000)/\EFI\ARCHLINUX\GRUBX64.EFIBoot0001* Mac OS HD(1,GPT,c8f79300-07ea-4a02-8bc6-7cb19803be54,0x800,0xfa000)/\EFI\BOOT\BOOTX64.EFIBoot0002* UEFI:CD/DVD Drive BBS(129,,0x0)Boot0003* UEFI:Removable Device BBS(130,,0x0)Boot0004* UEFI:Network Device BBS(131,,0x0)
删除删除了以上引导项Mac OS(操作要非常小心,不然会导致无法引导系统启动)
1efibootmgr -b 1 -B
Bootice
刚开始接触Bootice是从WePE系统上自带的,有图形化界面,支持Windows系统,功能还是相当强大的,不只启动编辑
UEFI系统
UEFI总会被人们称为BIOS,这两个其实不是同一个时代的产物,只是习惯。
UEFI一般位于Boot的选项卡中可以进行启动项编辑,但有些厂商的UEFI固件开发的让人难以琢磨,比如联想的M73主板的UEFI编辑启动顺序后总是会往启动项中添加一大堆启动项,可能是个BUG。
Boot Loader
引导加载程序(Boot Loader),一般是以.efi结尾的文件,位于ESP分区,启动时会被UEFI启动项引导启动。
常见
GRUB
Clover
Systemd-boot
Windows Boot Manager
ESP分区
EFI系统分区(ESP),一般位于/boot,建议大小500MB-1GB
EFI文件
由BIOS/UEFI加载启动EFI文件,EFI文件是Boot Loader程序的启动入口(相当于Main函数)
路径一般情况下存储于:
esp/EFI/BOOT/BOOTX64.EFI(64设备)
esp/EFI/BOOT/BOOTIA32.EFI(32位设备)
UEFI会默认加载这些路径,像live版的系统装在U盘,可能按F12/F1/F2/F7/F9/F10/Enter/Del/Esc等键即可选择启动
不同的Boot Loader也会有不同的EFI存放路径但都会放置在esp/EFI/
GRUB
参考:
ArchWiKi:GRUB
安装
grub 引导加载程序
efibootmgr 自动添加引导UEFI菜单
os-prober 自动配置检测其他操作系统
生成Boot Loader生成引导Boot Loader到/boot目录,EFI文件生成至/boot/EFI/ArchLinux/grubx64.efi,调用efibootmgr添加引导项至UEFI启动菜单,生成/boot/grub引导程序
1grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=ArchLinux
配置
参考:
ArchWiKi:GRUB/Tips and tricks
执行配置命令将根据/etc/default/grub等配置文件生成/boot/grub/grub.cfg文件(grub启动序列等配置)
1grub-mkconfig -o /boot/grub/grub.cfg
安装os-prober将自动检测其他操作系统,比如Windows/其他Linux发行版,可使用命令开启/关闭检测,编辑文件/etc/default/grub
12# false开启true关闭GRUB_DISABLE_OS_PROBER=false