页次: 1
我想在装有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)
离线
会不会是windows的bootmgr把非windows 的efi bootloader给干掉了,你看看efi分区在引导win11前后的区别
离线
bios设置里的boot启动顺序顺序选项你按回车键了吗,按完回车键会显示windowsbootmanager,usb介质,grub三个选项,然后调整顺序,保存设置。
离线
bios设置里的boot启动顺序顺序选项你按回车键了吗,按完回车键会显示windowsbootmanager,usb介质,grub三个选项,然后调整顺序,保存设置。
BIOS的boot启动顺序我按回车键了,除了GRUB,其他都显示出来了,包括USB介质,Windows boot manager等。
会不会是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没有关系吧。
离线
已经解决了,是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。。。
离线
页次: 1