看看我的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.

posted @ 2025-12-03 10:46  abbess  阅读(19)  评论(0)    收藏  举报