/boot/efi/EFI/ubuntu 在 ubuntu 安装期间未创建,安装后重新启动时操作系统进入 Grub 救援模式

/boot/efi/EFI/ubuntu 在 ubuntu 安装期间未创建,安装后重新启动时操作系统进入 Grub 救援模式

我正在 efi 模式下使用以下 curtin 分区方案安装 Ubuntu 22;

storage:
      config:
        - grub_device: true
          id: sda
          path: /dev/nvme0n1
          ptable: gpt
          type: disk
          wipe: superblock-recursive
        - device: sda
          flag: bios_grub
          id: bios_boot_partition
          number: 1
          size: 1MB
          type: partition
        - device: sda
          flag: boot
          grub_device: true
          id: boot_efi_part
          number: 2
          path: /dev/nvme0n1p2
          preserve: false
          size: 6GB
          type: partition
          wipe: superblock-recursive
        - device: sda
          flag: boot
          id: rootvg_part
          number: 3
          path: /dev/nvme0n1p3
          size: 720GB
          type: partition
          wipe: superblock-recursive
        - fstype: ext3
          id: fs-root
          label: rootfs
          preserve: false
          type: format
          volume: rootvg_part
        - fstype: vfat
          id: boot_efi_fs
          preserve: false
          type: format
          volume: boot_efi_part
        - device: fs-root
          id: mount-root
          path: /
          type: mount
        - device: boot_efi_fs
          id: boot_efi_mount
          path: /boot/efi
          type: mount

我已在 Bios 中禁用安全启动。

当 Ubuntu22 安装完成后,操作系统在第一次启动时会遇到问题并进入 Grub 救援模式。经过大量研究,我能够在 grub 救援模式下使用以下命令加载操作系统;

grub> ls
(hd0) (hd0,gpt1) (hd0,gpt2) (hd0,gpt3)
grub> set root=(hd0,gpt3)
grub> linux /boot/vmlinuz-4.15.0-45-generic root=/dev/nvme0n1p3
grub> initrd /boot/initrd.img-3.13.0-29-generic
grub> boot

但是,在每次重新启动时,我都必须运行上述命令来加载操作系统。在我的进一步研究中,我确实看到了以下链接;

“EFI\boot\bootx64.efi”与“EFI\ubuntu\grubx64.efi”与“/boot/grub/x86_64-efi/grub.efi”与“C:\Windows\Boot\EFI\*”

Bootloader path for a permanently installed OS
----------------------------------------------
For Ubuntu, the pathname should be \EFI\Ubuntu\grubx64.efi if you don't need Secure Boot support, or \EFI\Ubuntu\shimx64.efi if the Secure Boot shim is used. The descriptive name is simply "ubuntu" and the optional data is not used.

但是,在我的安装中,路径“\EFI\Ubuntu”并未使用其中生成的文件创建。我不知道为什么?

后来,我尝试在相同的硬件上使用上述分区方案安装 Ubuntu 18,并成功安装了 ubuntu 18。并且我可以看到 /EFI/ubuntu 文件夹中创建了所需的启动文件;

$ ls -l /boot/efi/EFI/ubuntu/
total 4328
-rwxr-xr-x 1 root root     108 Apr 30 01:53 BOOTX64.CSV
-rwxr-xr-x 1 root root     117 Apr 30 01:53 grub.cfg
-rwxr-xr-x 1 root root 2594696 Apr 30 01:53 grubx64.efi
-rwxr-xr-x 1 root root  860824 Apr 30 01:53 mmx64.efi
-rwxr-xr-x 1 root root  960472 Apr 30 01:53 shimx64.efi

作为尝试,在使用 grub rescu 命令加载 22 操作系统后,我将 18 安装的 /EFI/ubuntu 下的文件复制到我的 Ubuntu 22 安装中。当我重新启动 ubuntu22 安装时,它正在加载操作系统,而不是进入 Grub 救援模式。

为什么我的 Ubuntu 22 安装中没有生成 /EFI/ubuntu 文件?

相关内容