如何将启动分区的挂载点设置为 /boot/efi?

如何将启动分区的挂载点设置为 /boot/efi?

我的系统中安装了两个 ubuntu,一个在 SSD(nvme0n1p1)上,一个在硬盘(sda1)上。

升级到 17.10 后,SSD 上的 ubuntu 无法启动,无法找到文件“/boot/vmlinuz-4.13.0-041300-generic”,尽管文件在那里。(参见错误:未找到文件‘/boot/vmlinuz-4.13.0-041300-generic’,如何创建?

我现在在 gparted 上看到,包含这些文件的分区未正确安装,因此 grub 无法看到这些文件。

在此处输入图片描述

对于安装在硬盘上的其他操作系统,其运行良好,gparted 显示:

在此处输入图片描述

启动时,grub 还会抱怨未找到“22ac8da-d6...”分区。这显然是 SSD 分区的安装方式。

我想我应该更改挂载设置,因此 nvme0n1p1 以 /boot/efi/ 作为挂载点,并将 nvme0n1p2 放在 / 上,换句话说,就是硬盘上的分区设置方式(sda1、sda2)。

关于如何做到这一点有什么帮助吗?

/etc/fstab 的内容显示 /boot/efi/ 之前位于 nvme0n1p1 上

# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/nvme0n1p2 during installation
UUID=22ac8da3-d60a-46db-811d-a09ce5538215 /               ext4    errors=remount-ro 0       1
# /boot/efi was on /dev/nvme0n1p1 during installation
UUID=C1DE-5B29  /boot/efi       vfat    umask=0077      0       1
/swapfile                                 none            swap    sw              0       0

blkid 的输出如下:

/dev/nvme0n1: PTUUID="eb5c38b1-7f71-4b49-a4e9-9e6ab2c9b6a4" PTTYPE="gpt"
/dev/nvme0n1p1: UUID="C1DE-5B29" TYPE="vfat" PARTLABEL="EFI System Partition" PARTUUID="5b57c19c-750b-457a-89f1-87130509735e"
/dev/nvme0n1p2: UUID="22ac8da3-d60a-46db-811d-a09ce5538215" TYPE="ext4" PARTUUID="2e1b8924-98f4-4821-8f48-8452620182b8"
/dev/sda1: UUID="DF5C-3936" TYPE="vfat" PARTLABEL="EFI System Partition" PARTUUID="2798e3ca-54f4-4528-8753-0b516c1a749c"
/dev/sda2: UUID="d37fc604-163d-4e04-83de-88993c28e419" TYPE="ext4" PARTUUID="a1331af1-a3e0-4f4e-846c-2ae70d53cb26"

lsblk -f 的输出与 gparted 的显示一致:

NAME        FSTYPE LABEL UUID                                 MOUNTPOINT
sda                                                           
├─sda1      vfat         DF5C-3936                            /boot/efi
└─sda2      ext4         d37fc604-163d-4e04-83de-88993c28e419 /
sr0                                                           
nvme0n1                                                       
├─nvme0n1p1 vfat         C1DE-5B29                            
└─nvme0n1p2 ext4         22ac8da3-d60a-46db-811d-a09ce5538215 /media/lukas/22ac8da3-d60a-46db-811d-a09ce5538215

摘要:如何将 /dev/nvme0n1p1 的挂载点设置为 /boot/efi/ ?

在 nvme0n1p1 中的 17.10 上启动时出现的错误消息是:

error: failure reading sector 0x3b9e12a0 from 'hd2'
error: failure reading sector 0x3b9e1200 from 'hd2'
error: failure reading sector 0x0 from 'hd2'
error: failure reading sector 0x3b9e12a0 from 'hd2'
error: failure reading sector 0x3b9e1200 from 'hd2'
error: failure reading sector 0x0 from 'hd2'
error: no such device: 22ac8da3-d60a-46db-811d-a09ce5538215 
error: file '/boot/vmlinuz-4.13.0-041300-generic' not found
error: you need to load the kernel first

efibootmgr -v 的输出

BootCurrent: 0000
Timeout: 1 seconds
BootOrder: 0000,0001,0002,0008,0009
Boot0000* ubuntu    HD(1,GPT,2798e3ca-54f4-4528-8753-0b516c1a749c,0x800,0x100000)/File(\EFI\ubuntu\shimx64.efi)
Boot0001* grub  HD(1,GPT,2798e3ca-54f4-4528-8753-0b516c1a749c,0x800,0x100000)/File(\EFI\ubuntu\grubx64.efi)
Boot0002* boot  HD(1,GPT,2798e3ca-54f4-4528-8753-0b516c1a749c,0x800,0x100000)/File(\EFI\Boot\bootx64.efi)
Boot0008  Onboard NIC (IPV4)    PciRoot(0x0)/Pci(0x1c,0x3)/Pci(0x0,0x0)/MAC(14b31f18c7f5,0)/IPv4(0.0.0.0:0<->0.0.0.0:0,0,0)..BO
Boot0009  Onboard NIC (IPV6)    PciRoot(0x0)/Pci(0x1c,0x3)/Pci(0x0,0x0)/MAC(14b31f18c7f5,0)/IPv6([::]:<->[::]:,0,0)..BO

启动信息摘要:

http://paste.ubuntu.com/p/bG54zn47VZ/

SSD 和 HD 上的 boot/efi/EFI/ubuntu/grub.cfg 相同:

search.fs_uuid d37fc604-163d-4e04-83de-88993c28e419 root hd0,gpt2 
set prefix=($root)'/boot/grub'
configfile $prefix/grub.cfg

根据 Oldfred 的建议进行更新:

efibootmgr -v 的当前输出

BootOrder: 0003,0000,0001,0002,0008,0009
Boot0000* ubuntu    HD(1,GPT,2798e3ca-54f4-4528-8753-0b516c1a749c,0x800,0x100000)/File(\EFI\ubuntu\shimx64.efi)
Boot0001* grub  HD(1,GPT,2798e3ca-54f4-4528-8753-0b516c1a749c,0x800,0x100000)/File(\EFI\ubuntu\grubx64.efi)
Boot0002* boot  HD(1,GPT,2798e3ca-54f4-4528-8753-0b516c1a749c,0x800,0x100000)/File(\EFI\Boot\bootx64.efi)
Boot0003* Ubuntu-NVMe   HD(1,GPT,5b57c19c-750b-457a-89f1-87130509735e,0x800,0x100000)/File(\EFI\ubuntu\shimx64.efi)
Boot0008  Onboard NIC (IPV4)    PciRoot(0x0)/Pci(0x1c,0x3)/Pci(0x0,0x0)/MAC(14b31f18c7f5,0)/IPv4(0.0.0.0:0<->0.0.0.0:0,0,0)..BO
Boot0009  Onboard NIC (IPV6)    PciRoot(0x0)/Pci(0x1c,0x3)/Pci(0x0,0x0)/MAC(14b31f18c7f5,0)/IPv6([::]:<->[::]:,0,0)..BO

NVMe 上的 /boot/efi/EFI/ubuntu/grub.cfg:

search.fs_uuid 22ac8da3-d60a-46db-811d-a09ce5538215 root hd0,gpt2 
set prefix=($root)'/boot/grub'
configfile $prefix/grub.cfg

硬盘上的 /boot/efi/EFI/ubuntu/grub.cfg:

search.fs_uuid d37fc604-163d-4e04-83de-88993c28e419 root hd0,gpt2 
set prefix=($root)'/boot/grub'
configfile $prefix/grub.cfg

答案1

看看这是否会在 UEFI 中添加一个条目以从 NVMe 驱动器启动。有关参数的详细信息,请参阅 man efibootmgr。

sudo efibootmgr -c -L "Ubuntu-NVMe" -l "\EFI\ubuntu\shimx64.efi" -d /dev/nvme0n1 -p 1

但是每当我使用不同于 Ubuntu 的 -L 标签时,它仍然从 /EFI/ubuntu/grub.cfg 启动,因此请确保您也有这个并且它是正确的。以前在其他标签中甚至没有 3 行 grub.cfg,现在有了,但内部仍然编码为仅使用 /EFI/ubuntu/grub.cfg。

脚本尚未更新以完全显示 NVMe 驱动器。其中的 grub.cfg 应该是:

search.fs_uuid 22ac8da3-d60a-46db-811d-a09ce5538215 root hd0,gpt2 
set prefix=($root)'/boot/grub'
configfile $prefix/grub.cfg

而 sda 中的那个应该具有安装在 sda 中的 UUID,但 hd1、gpt2 的 UUID 可能应该覆盖设备设置。不确定 UEFI 和 grub 如何查看驱动器。我插入外部 SSD,它变成了 hd0,尽管 Ubuntu 中的 sdc 也是如此。然后 grub/UEFI 将我所有其他驱动器的数字增加一个。如果我还插入了闪存驱动器,我必须将 hd0 更改为 hd2 才能在 sda 中找到安装。

相关内容