看看我的ESP
debian独占NVME,Windows独占SATA.
NVME启动速度太快了,以至于SATA接口的SSD还没来得及被BIOS认出来。SSD,不是机械硬盘啊。
blkid命令看到系统里的块设备,比如:
- /dev/nvme0n1p2
- /dev/mmcblk1p1
- /dev/sda3
显然p代表分区,/dev/nvme0n1, /dev/mmcblk1和/dev/sda是磁盘。
fdisk可以知道/dev/nvme0n1p1和/dev/sda1是EFI System.
在Linux下,它们都可以mount后进行读写。
在/dev/nvme0n1p1的EFI目录下,我有debian和Microsoft两个目录,其中Microsoft目录是从SATA盘上copy过来的。
在/dev/sda1的EFI目录下,我有debian一个目录,从NVME盘上copy过来的。
两个debian的grub.cfg一样。内容是:
search.fs_uuid acc415d0-f703-4ab1-97e3-b0401ccf7c64 root set prefix=($root)'/boot/grub' configfile $prefix/grub.cfg
在BIOS里,可以选从nvme debian或hard disk debian启动。前者速度快,进不了Windows(找不到盘),后者慢一点,可以进Windows.
在UEFI系统中,固件会扫描ESP的\EFI目录,查找各个系统厂商的子目录(如\EFI\debian、\EFI\Microsoft),并读取里面的引导程序(*.efi文件)。
但并不是自动把所有找到的*.efi文件都显示在启动菜单里,而是根据NVRAM中已经注册的启动项来显示。谁把Non-volatile RAM翻译成固件变量存储了?谁放着Persistent不用,要来个否定?
Persistent好像是差点意思:a) continuing without interruption; b) occurring frequently
# apt install efibootmgr; efibootmgr -v
BootCurrent: 0002 Timeout: 5 seconds BootOrder: 0002,0000,0001,0003 Boot0000 Windows Boot Manager HD(1,GPT,30dfa707-6611-431f-ba2c-74247bde9167,0x800,0x32000)/File(\EFI\Microsoft\Boot\bootmgfw.efi)WINDOWS Boot0001 Windows Boot Manager HD(1,GPT,85a71363-aa05-4ca2-ab37-b14e81559b25,0x800,0x100000)/File(\EFI\Microsoft\Boot\bootmgfw.efi) Boot0002* debian HD(1,GPT,85a71363-aa05-4ca2-ab37-b14e81559b25,0x800,0x100000)/File(\EFI\debian\shimx64.efi) Boot0003 debian HD(1,GPT,30dfa707-6611-431f-ba2c-74247bde9167,0x800,0x32000)/File(\EFI\debian\shimx64.efi)
我好像是因为Windows的EFI分区空间不够,所以把它复制到了Linux下。
这些引导系统用UUID而不是设备名来找分区,非常好。
EFI : Extensible Firmware Interface; ESP : EFI System Partition.
GUID : Globally Unique Identifier, 微软语境下的 UUID : Universally Unique Identifier.

浙公网安备 33010602011771号