我正在 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
但是,在每次重新启动时,我都必须运行上述命令来加载操作系统。在我的进一步研究中,我确实看到了以下链接;
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 文件?