龙空技术网

基本整明白EFI分区

沉着糯米Su 274

前言:

当前兄弟们对“启动文件efi在哪里”可能比较关注,姐妹们都需要剖析一些“启动文件efi在哪里”的相关知识。那么小编同时在网络上汇集了一些关于“启动文件efi在哪里””的相关知识,希望朋友们能喜欢,大家快快来了解一下吧!

修改MBR,在主引导扇区和第一分区之间找个地方放grub是老黄历了。

电脑有nvme和SATA盘各一块,UEFI启动。nvme盘装的是debian和grub,SATA盘装的是Windows10。它们各有一个EFI分区。

~# blkid/dev/nvme0n1p1: UUID="BDEB-5168" TYPE="vfat"  PARTUUID="85a71363-aa05-4ca2-ab37-b14e81559b25"/dev/sda1: UUID="485B-1474" TYPE="vfat" PARTLABEL="EFI system partition"  PARTUUID="30dfa707-6611-431f-ba2c-74247bde9167"

UUID和分区的UUID不同。BIOS看到485B-1474就基本上显示Windows Boot Manager。在操作过程中出现过Windows Boot Manager (debian)。

第一块nvme盘的名字是/dev/nvme0n1。

mount | grep boot

/dev/nvme0n1p1 on /boot/efi

即/boot/efi是EFI分区的根目录。mount /dev/sda1 /mnt后目录结构差一层,最好mount mount /dev/sda1 /mnt/efi,这样两者一致。

然后先备份再修改。建议用tar,我觉得它保存不同文件系统的文件属性比较保险。

# tree /boot/efi/boot/efi├── EFI│   ├── debian│   │   ├── BOOTX64.CSV│   │   ├── fbx64.efi│   │   ├── grub.cfg│   │   ├── grubx64.efi│   │   ├── mmx64.efi│   │   └── shimx64.efi# cat /boot/efi/EFI/debian/grub.cfgsearch.fs_uuid acc415d0-f703-4ab1-97e3-b0401ccf7c64 rootset prefix=($root)'/boot/grub'configfile $prefix/grub.cfg

/boot/grub/grub.cfg里:

insmod ext2search --no-floppy --fs-uuid --set=root acc415d0-f703-4ab1-97e3-b0401ccf7c64echo    'Loading Linux 6.1.0-18-amd64 ...'linux   /boot/vmlinuz-6.1.0-18-amd64 root=UUID=acc415d0-f703-4ab1-97e3-b0401ccf7c64 ro  quietecho    'Loading initial ramdisk ...'initrd  /boot/initrd.img-6.1.0-18-amd64

debian的/是/dev/nvme0n1p2: UUID="acc415d0-f703-4ab1-97e3-b0401ccf7c64" TYPE="ext4" PARTUUID="5bc7c066-2dca-4835-9828-073c2cd85ae0";/boot是/下的一个子目录;/boot/efi是/dev/nvme0n1p1。

Windows10的则在Microsoft目录下。Microsoft/下有Boot和Recovery两个目录。grub引导Windows时:chainloader /EFI/Microsoft/Boot/bootmgfw.efi。和Microsoft同级的还有个Boot/,下面有个bootx64.efi,删掉后仍然可以启动:BIOS (N100, AMI)和grub都直接加载bootmgfw.efi。

我把SATA上的Microsoft的copy到了nvme下(UUID要相应地修改),删掉SATA上的Microsoft后把nvme上的debian copy了过去,BIOS设成从SATA启动。即启动Windows时:BIOS-SATA-NVME-SATA。[微笑]

我不是吃饱了撑的:BIOS-NVME,grub老说找不到485B-1474。CPU和nvme太快了,SATA(虽然也是SSD)还没来得及加载,详情见链接

menuentry 'Windows Boot Manager (on /dev/sda1)'  --class windows --class os $menuentry_id_option  'osprober-efi-485B-1474' {insmod part_gptinsmod fatsearch --fs-uuid --set=root BDEB-5168chainloader /EFI/Microsoft/Boot/bootmgfw.efi}

把os prober找到的485B-1474换成了BDEB-5168。Windows能这么启动是好事,也是坏事。我曾用傲梅分区助手把Windows从SATA搬到了nvme,从nvme启动后它还是用SATA当C:因为当初是装在SATA上的,系统(注册表?)里某个地方写死了C:=第1块SATA盘的第2个分区。

标签: #启动文件efi在哪里