Ubuntu 23.04升级到23.10后GRUB配置损坏,恢复默认GRUB时导致/etc/grub.d为空求助
别慌,咱们一步步把GRUB恢复到正常工作状态,以下是针对你情况的具体操作步骤:
1. 恢复GRUB核心组件与默认脚本
你之前误删了/etc/grub.d目录,单纯重装grub-common可能没把所有必要的默认启动脚本恢复完全。咱们重新安装完整的GRUB EFI组件:
sudo apt update sudo apt install --reinstall grub-efi-amd64 grub-common grub2-common os-prober
注:
os-prober是专门用来扫描双系统中其他操作系统的组件,确保Windows启动项能被正常识别
执行完上述命令后,你可以用ls /etc/grub.d检查目录,此时应该能看到00_header、10_linux、30_os-prober等默认的GRUB脚本文件了。
2. 重新生成GRUB配置文件
现在让GRUB重新扫描所有已安装的系统,生成全新的启动配置:
sudo update-grub
执行这个命令时,你应该能看到类似Found Ubuntu 23.10和Found Windows Boot Manager的提示,这说明两个系统都被正确识别了。
3. 确保GRUB被正确安装到EFI引导分区
从你的lsblk输出能看出系统是UEFI模式启动(/boot/efi挂载在nvme0n1p1),需要把GRUB引导程序正确写入磁盘的EFI区域:
sudo grub-install /dev/nvme0n1
注意:这里要指定磁盘设备
/dev/nvme0n1,而不是单个分区(比如nvme0n1p1),GRUB会自动处理EFI分区的引导项注册。
4. (可选)检查并修复EFI引导项
如果重启后还是看不到GRUB菜单,可能是EFI引导项丢失了。可以先查看当前的EFI引导列表:
sudo efibootmgr -v
如果列表里没有名为Ubuntu的引导项,手动创建一个:
sudo efibootmgr -c -d /dev/nvme0n1 -p 1 -L "Ubuntu" -l "\EFI\ubuntu\shimx64.efi"
这里-p 1对应你的EFI分区nvme0n1p1,shimx64.efi是Ubuntu在EFI分区的核心引导文件。
最后一步:重启系统
完成所有操作后,输入sudo reboot重启电脑,你应该就能看到包含Ubuntu 23.10和Windows的完整GRUB启动菜单了。
备注:内容来源于stack exchange,提问作者Roberto Iglesias

