Windows更新后GRUB被覆盖导致Linux无法启动,需用Manjaro Live USB重建引导:确认UEFI模式→挂载根与EFI分区→chroot→grub-install→grub-mkconfig;或Windows下用diskpart+ bcdedit手动注册GRUB入口;紧急时可用GRUB命令行临时启动。

Windows 11与Linux双系统共存时,若Windows更新或重装后启动菜单只剩Windows选项,Linux分区仍在但无法进入,说明GRUB引导已被覆盖——这不是Linux系统损坏,而是Windows把EFI启动项写死了,把Manjaro、Ubuntu等发行版的启动入口从UEFI固件中抹掉了。
用Manjaro Live USB进入系统并重建GRUB
这一步必须用Manjaro官方镜像启动,不能用Minimal版(它进不去Live桌面),得选带完整内核的版本,比如manjaro-kde-21.2.6-220416-linux515.iso。
① 下载正确镜像后,用Ventoy制作可启动U盘;插入电脑,开机按F12(或其他启动菜单键)选择U盘启动;
② 进入Live桌面后,打开终端,执行sudo -i获取root权限;
③ 运行lsblk -f列出所有分区,找到标有ext4且挂载点为空、LABEL含MANJARO或ROOT的分区(通常是/dev/nvme0n1p4或/dev/sda3);
④ 执行mount /dev/xxx /mnt(xxx替换成你查到的Linux根分区,如/dev/nvme0n1p4);
⑤ 若/boot/efi存在且已挂载(通常在/dev/nvme0n1p1),跳过此步;否则需手动挂载EFI分区:mkdir -p /mnt/boot/efi && mount /dev/nvme0n1p1 /mnt/boot/efi;
⑥ 执行arch-chroot /mnt进入原系统环境;
⑦ 运行grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=Manjaro --recheck;
⑧ 紧接着运行grub-mkconfig -o /boot/grub/grub.cfg重新生成配置文件;
⑨ 输入exit退出chroot,再执行reboot重启;
【关键前提】必须确认当前是UEFI模式启动Live USB,否则grub-install会失败——可在Live环境中运行ls /sys/firmware/efi/efivars,有输出才代表UEFI已激活。
不用U盘:从Windows直接修复GRUB(仅限UEFI+GPT)
如果你不想折腾U盘,且确定硬盘是GPT分区、主板启用UEFI启动,可以靠Windows内置工具间接恢复GRUB入口。
方法一:用diskpart定位EFI分区并手动注册
以管理员身份运行PowerShell,依次执行:
diskpart → list volume → select volume X(X是EFI分区编号,通常容量100–500MB,文件系统FAT32)→ assign letter=Z: → exit;
然后执行:bcdedit /create {bootmgr} /d "Manjaro" → 记下返回的GUID(形如{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx});
再执行:bcdedit /set {GUID} device partition=Z: → bcdedit /set {GUID} path \EFI\manjaro\grubx64.efi → bcdedit /displayorder {GUID} /addlast;
最后重启,BIOS启动菜单里会出现“Manjaro”选项;
方法二:用EasyBCD(第三方工具,仅适用于旧版Windows Boot Manager)
下载EasyBCD 2.4(非最新版,新版不支持GRUB添加),安装后打开→“Add New Entry”→Linux标签页→Type选GRUB2→Drive选Linux根分区所在磁盘→勾选“Skip the boot menu”→点击“Add Entry”;
【注意】EasyBCD在Windows 11 22H2之后兼容性差,若添加后仍不显示,请改用方法一。
进不了Live也不懂命令?用GRUB命令行临时启动Manjaro
当U盘Live进不去、又没准备其他介质时,可尝试从Windows启动失败后的GRUB救援界面硬启原系统。
开机看到grub>提示符时,不要慌,这是唯一能救系统的窗口:
第一步:输入ls,你会看到类似(hd0,gpt1) (hd0,gpt2) (hd0,gpt3) (hd0,gpt4)的输出;
第二步:逐个探测哪个分区含/boot/vmlinuz-文件,例如输入ls (hd0,gpt4)/boot/,若返回一堆文件(含vmlinuz、initramfs),说明gpt4就是你的Linux根分区;
第三步:设根和内核路径:set root=(hd0,gpt4) → linux /boot/vmlinuz-$(ls /boot/ | grep vmlinuz | tail -1) root=UUID=$(blkid | grep $(echo /dev/nvme0n1p4 | sed 's|/dev/||') | awk '{print $2}' | sed 's|"||g') ro;
第四步:加载initrd:initrd /boot/initramfs-$(ls /boot/ | grep initramfs | tail -1);
第五步:输入boot直接启动;
进系统后立刻执行sudo update-grub && sudo grub-install /dev/nvme0n1(设备名替换成你的真实磁盘,如/dev/sda);
【致命坑】UUID必须准确,错一位就kernel panic——建议先在Live环境用blkid查好再复制,别手敲。

















