Grub 出现奇怪的错误

Grub 出现奇怪的错误

我最近安装了 Arch Linux,但启动时却无法启动。然后我切换到传统模式,它确实启动了,但屏幕上只显示 GRUB 并带有闪烁的下划线,无论我做什么都不会执行任何其他操作。

可能是因为grub-install使用默认设置无法正确安装,所以我安装了它,--target=i386-pc但我尝试使用启动 CD 下载 64 位版本,但它不允许我重新安装启动驱动器。

我不想重新格式化驱动器,但如果必须的话,我就会这样做。

答案1

我注意到一些 EFI bios 在尝试传统启动时会遇到问题,您可能必须明确打开或关闭它,安全启动也是如此。

除非目标机器较旧,否则您的目标机器上可能有一个基于 EFI 的引导加载程序。这意味着您将希望将其安装为 EFI 而不是 MBR,而后者是 i386 目标将尝试的,也是过去几十年来使用的。EFI 是近年来广泛使用的一种新事物,它是一种更高级的引导加载程序,主要用于 x86_64 机器。简而言之,您有一个 VFAT 或 EXT2 分区作为 EFI 分区,其中将包含引导加载程序的 .efi 文件,这些文件经过编程以执行正确的引导加载。您可以从 bios 中选择使用哪一个,尽管您也可以让一个链式加载另一个。该命令lsblk将列出块设备,并让您知道它是哪一个。您可能有另一个任何给定文件系统格式的引导分区,grub 可以理解它通常安装在哪个分区上,/boot或者它可能是您的主根分区。.efi加载程序可能会使用该分区来保存您的内核和initrd映像等。

您可能想要启动 arch linux,然后 chroot 到您的主 Linux 根分区:

例子:

lsblk
mkdir /mnt/arch
mount /dev/sda2 /mnt/arch
mount -t proc none /mnt/arch/proc
mount --rbind /sys /mnt/arch/sys
mount --make-rslave /mnt/arch/sys 
mount --rbind /dev /mnt/arch/dev
mount --make-rslave /mnt/arch/dev
mount /dev/sda3 /mnt/arch/boot
mount /dev/sda1 /mnt/arch/boot/efi
chroot /mnt/arch

其中 dev 设备节点与您在lsblk输出中找到的内容相对应。

这是 Linux 中从启动媒体 chroot 到主要安装的典型chroot前言。chroot 之后,除非您还有其他需要安装的东西,否则您应该会得到一个像您启动到它一样可用的发行版。

有了这些信息,您应该能够访问以下两个链接:

尽管典型的 EFI grub 安装通常很简单:

grub-mkconfig -o /boot/grub/grub.cfg
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader id=grub

请注意,有时命令可能grub2-mkconfig取决于grub2-installLinux 版本。

相关内容