您尚未登录。

#1 2024-01-17 13:06:09

NonoVoltzman
会员
注册时间: 2024-01-17
帖子: 3

【已解决】GRUB安装失败

我想在装有win11的ThinkPad Neo 14上再装一个arch,双系统共用一块NVME的SSD。作为新手,安装过程主要参考arch 简明指南和官方的wiki。但遇到一个问题,生成完GRUB配置文件后,用efibootmgr能发现GRUB已经在BOOTORDER的首位,但只要重启,电脑自动引导win11,BIOS的BOOT选项里找不到GRUB。插上u盘后,再用efibootmgr查看发现GRUB消失了。有请问大家对这个问题有头绪吗?安装前已经把安全启动和快速启动关闭了。

下面是我的安装过程。

pacman -Syy

mount -t btrfs -o subvol=/@,compress=zstd /dev/nvme0n1p5 /mnt 
mkdir /mnt/home 
mount -t btrfs -o subvol=/@home,compress=zstd /dev/nvme0n1p5 /mnt/home
mkdir -p /mnt/efi
mount /dev/nvme0n1p1 /mnt/efi #nvme0n1p1 -- ESP (也是win11的引导分区)
swapon /dev/nvme0n1p4

pacstrap -K /mnt base base-devel linux linux-firmware btrfs-progs networkmanager vim sudo zsh zsh-completions
genfstab -U /mnt > /mnt/etc/fstab

arch-chroot /mnt
vim /etc/hostname #myarch
vim /etc/hosts
#127.0.0.1   localhost
#::1         localhost
#127.0.1.1   myarch.localdomain myarch
ln -sf /usr/share/zoneinfo/Ameirca/Chicago /etc/localtime
hwclock --systohc
vim /etc/locale.gen
locale-gen
echo 'LANG=en_US.UTF-8'  > /etc/locale.conf
passwd root

pacman -S amd-ucode
pacman -S grub efibootmgr os-prober
grub-install --target=x86_64-efi --efi-directory=/efi --bootloader-id=GRUB
vim /etc/default/grub #Uncomment GRUB_DISABLE_OS_PROBER=false
grub-mkconfig -o /boot/grub/grub.cfg

efibootmgr -u

exit
umount -R /mnt 
reboot 

最近编辑记录 NonoVoltzman (2024-01-20 12:03:46)

离线

#2 2024-01-17 19:02:32

matrikslee
会员
注册时间: 2017-04-21
帖子: 443
个人网站

Re: 【已解决】GRUB安装失败

会不会是windows的bootmgr把非windows 的efi bootloader给干掉了,你看看efi分区在引导win11前后的区别

离线

#3 2024-01-17 19:47:14

lliux
会员
注册时间: 2022-04-01
帖子: 31

Re: 【已解决】GRUB安装失败

bios设置里的boot启动顺序顺序选项你按回车键了吗,按完回车键会显示windowsbootmanager,usb介质,grub三个选项,然后调整顺序,保存设置。

在线

#4 2024-01-18 04:04:32

NonoVoltzman
会员
注册时间: 2024-01-17
帖子: 3

Re: 【已解决】GRUB安装失败

lliux 说:

bios设置里的boot启动顺序顺序选项你按回车键了吗,按完回车键会显示windowsbootmanager,usb介质,grub三个选项,然后调整顺序,保存设置。

BIOS的boot启动顺序我按回车键了,除了GRUB,其他都显示出来了,包括USB介质,Windows boot manager等。

matrikslee 说:

会不会是windows的bootmgr把非windows 的efi bootloader给干掉了,你看看efi分区在引导win11前后的区别

这个我检查了,EFI里的非Windows bootloader再引导win11前后没有变化。今天又试了几次,发现即使生成GRUB配置文件reboot后立马进入BIOS,BOOT启动项里还是没有GRUB。之后又试了三种方法。

1. 尝试用u盘进入UEFI Shell,找到GRUB并添加进BIOS的启动项里:

Shell> bcfg boot add 1 FS0:\EFI\GRUB\grubx64.efi "GRUB"

但退出UEFI Shell后进入UEFI Firmware Setting查看, BOOT启动项里依旧没有GRUB,明明上一步shell里显示成功了。

2. 按照wiki尝试把/EFI/GRUB/grubx64.efi复制到/EFI/BOOT里,更名以替换掉原来的BOOTX64.EFI。重启后依旧是引导win11 (Windows boot manager排在boot order最后)。

3. 这个安装后找不到GRUB启动项的现象,和某些微星主板导致的问题有点类似(虽然用的是ThinkPad),所以我也尝试从分区开始重装,在安装GRUB时加上 --removable (wiki),然而并没有用。

 grub-install --target=x86_64-efi --efi-directory=/efi --bootloader-id=GRUB --removable 

有点怪,难道是我的主板问题?另外,每次在Arch Installation Media里reboot后,滚动的那些代码里会有一行报错 [FAILED] Failed unmounting /run/archiso/copytoram,但它应该和BOOT里找不到GRUB没有关系吧。

离线

#5 2024-01-18 08:13:11

NonoVoltzman
会员
注册时间: 2024-01-17
帖子: 3

Re: 【已解决】GRUB安装失败

已经解决了,是BIOS里的Boot Order Lock被默认启用了!!!除了ThinkPad别的主板也有这个功能吗?

这个大聪明设定,会阻止对主板的NVRAM的更改。这个启用后,无论怎样将GRUB写入BOOTORDER,都无法保存更改后的BOOTORDER,所以reboot后GRUB不在BOOT启动项里。将Boot Order Lock更改为Disabled, 再执行grub-install和grub-mkconfig即可,reboot完直接引导进Arch Linux。

吐槽下,即使启用了Boot Order Lock, 仍可以在BIOS对已有的启动项更改启动顺序,感觉这个功能的名字应换成Boot List Lock。。。

离线

页脚