如何让 GRUB2 在 UEFI 下正确启动?

如何让 GRUB2 在 UEFI 下正确启动?

我已经在我的 Arch Linux 安装上安装了 GRUB /dev/sdb1/dev/sdb是我安装了 Arch Linux 的第二个内置硬盘,/dev/sda也是我的第一个内置硬盘,上面安装了 Windows 10。/dev/sda2是我的 UEFI 的 EFS 分区。然后我跑了(这是我基于建筑维基百科关于 GRUB 的文章UEFI小节

mount /dev/sda2 /boot
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=grub

来自我在该分区上安装 Arch Linux 时生成的 arch-chroot。然后我重新启动,当我从 UEFI 启动菜单进入 GRUB 时,我只有 GRUB 最小界面(即,写着“支持最小 BASH 式行编辑...”的界面),但我不知道是什么去做。我已经能够在运行 BIOS 的旧电脑上毫无问题地安装和启动 Arch Linux,所以我感到相当困惑。这是输出parted /dev/sda print

Model: ATA WDC WD10JPVX-60J (scsi)
Disk /dev/sda: 1000GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name                          Flags
 1      1049kB  420MB   419MB   ntfs         Basic data partition          hidden, diag
 2      420MB   693MB   273MB   fat32        EFI system partition          boot, esp
 3      693MB   827MB   134MB                Microsoft reserved partition  msftres
 4      827MB   974GB   974GB   ntfs         Basic data partition          msftdata
 5      974GB   975GB   955MB   ntfs                                       hidden, diag
 6      975GB   1000GB  24.8GB  ntfs         Basic data partition          hidden, msftdata

答案1

我找到了一个解决方法。我使用了systemd-boot而不是 GRUB2。如果您有实际的解决方案,我很乐意接受,因为我更喜欢使用 GRUB2 而不是systemd-boot。但是,在那之前,我将使用此解决方法。但这不是自动修复,我必须努力工作。我分享它,以防处于类似情况的人发现此解决方法有用。我所做的是将我的/dev/sda2分区安装在 上/boot/efi,并将vmlinuz-linuxinitramfs*.img从复制/boot/boot/efi。然后我运行了bootctl建筑维基百科。总而言之,我跑了:

mount /dev/sda2 /boot/efi
cp /boot/initramfs*.img /boot/efi
cp /boot/vmlinuz-linux /boot/efi
bootctl --path=/boot/efi install

然后我创建了必要的/boot/efi/loader/loader.conf文件:

#timeout 3
default arch
timeout 4
editor  0

然后我创建了以下/boot/efi/loader/entries/arch.conf文件:

title    Arch Linux
linux    /vmlinuz-linux
initrd   /initramfs-linux.img
options  root=UUID=d26c3e60-0cfb-4118-9dec-1f1819439790 rw

其中d26c3e60-0cfb-4118-9dec-1f1819439790是 的 UUID(通过运行确定ls -ld /dev/disk/by-uuid/*/dev/sdb1

答案2

你生成了 fstab 吗?拱门维基#fstab

像这样

# genfstab -U /mnt >> /mnt/etc/fstab

相关内容