我在笔记本电脑上安装了 Antergos,然后安装了 Ubuntu。 Ubuntu 检测到我安装了另一个 Linux,因此它将 Antergos 添加到其 grub 菜单中。每次启动时,grub 都会从 Ubuntu 分区加载。如何将另一个 grub 文件设置为默认文件?
我的分区是:
- Antergos 启动分区(想要从这里加载 grub.cfg) - /dev/sda1
- Antergos 根分区 - /dev/sda2
- Ubuntu 分区(grub 从此处加载)- /dev/sda6
答案1
在传统 BIOS 系统中,BIOS 会查找其设置为引导的磁盘的主引导记录 (MBR)。这是磁盘的前 512 字节,包含引导加载程序过程的第一阶段,在您的情况下这将是 grub。此阶段的唯一工作是在包含 /boot 的驱动器上正常定位并加载第二阶段。 MBR 将这些路径硬编码到其中,为了更改它们,您必须从您希望其指向的系统(或系统的 chroot)重新安装 MBR grub-install
。如果您可以启动系统,那么这很简单,但如果不能,则必须使用 livecd 并 chroot 进入您的系统;请参阅说明这里关于如何做到这一点。
但是,在您的情况下,antergos grub 配置中不会包含 ubuntu 发行版,因此您将无法启动它,直到您添加它。如果这是您的预期目标,您还可以将 ubuntu grub 配置配置为默认启动 antergos。任何一种方法都是可以接受的,并且取决于您想要实现的目标。
答案2
用于grub-install
将 grub 安装到(/dev/sda
指向grub
/dev/sda1
正如@SHW所描述的) 并使用或设置boot
标志。/dev/sda1
fdisk
parted
您可能需要删除boot
标记/dev/sda6
(再次使用fdisk
或parted
)。
答案3
在 UEFI 系统中(我不知道旧版 BIOS):
使用以下命令找到您的 efi 分区
sudo lsblk -f
并记下其 UUID(它应该是一个vfat
几百 Mb 的分区)。我们将此分区视为本例中的/dev/mmcblkx
UUID 。XXXX-XXXX
使用命令创建
/boot/efi/
文件夹并挂载EFI分区/boot/efi
sudo mount /dev/mmcblkx /boot/efi
验证我们是否安装了正确的 EFI 分区,并检查它是否有一个
/boot/efi/EFI
文件夹以及该 EFI 文件夹内是否包含您系统中安装的操作系统。我的 /boot/efi/EFI 看起来像这样:
user@user-mypc:~> sudo ls /boot/efi/EFI/ BOOT GRUB linux opensuse ubuntu
添加 EFI 分区条目以挂载
/boot/efi
在/etc/fstab
.UUID=XXXX-XXXX /boot/efi vfat utf8 0 2
通过以下方式安装 GRUB
sudo grub2-install --target=i386-efi --efi-directory=/boot/efi/ --bootloader-id=GRUB
sudo update-bootloader --refresh
。sudo grub2-mkconfig -o /boot/grub/grub.cfg
重启