Ubuntu开机报错:error:symbolgrub calloc‘not foundEntering rescue mode...
注意:以下解决思路由DeepSeek提供,我成功解决问题,分享给大家
报错如图:
解决方案:
问题核心是 GRUB核心文件损坏或路径配置错误,导致无法加载grub_calloc符号。以下是修复步骤:
1. 确认正确的GRUB分区
通过ls (hd0,msdos2)/boot/grub确认该分区包含GRUB文件(如i386-pc目录、grub.cfg等),但加载模块时仍报错。可能是以下原因:
文件损坏:GRUB核心文件(如i386-pc/normal.mod)可能损坏。
路径错误:prefix设置未指向正确路径。
2. 修复GRUB文件路径
在grub rescue>中重新设置root和prefix:
set root=(hd0,msdos2)
set prefix=(hd0,msdos2)/boot/grub
insmod normal # 若仍报错,直接尝试启动
normal
如果继续报错,说明GRUB文件损坏,需进入Live模式修复。
3. 使用Live USB修复GRUB
用Linux Live USB启动,进入试用系统。
挂载原系统分区(假设根分区在/dev/sda2,根据实际情况调整):
sudo mount /dev/sda2 /mnt # 挂载根分区
sudo mount /dev/sda1 /mnt/boot # 如果/boot是单独分区(如sda1)
sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
Chroot到原系统并修复GRUB:
sudo chroot /mnt
grub-install /dev/sda # 安装到主硬盘
update-grub # 重新生成配置文件
exit
reboot
4. 关键注意事项
分区编号:确保hd0,msdos2对应实际硬盘的/dev/sda2(根据ls命令结果调整)。
文件系统检查:若怀疑文件系统损坏,在Live模式下运行:
sudo fsck /dev/sda2 # 检查并修复分区
备份数据:操作前建议备份重要数据。
到该步骤我的问题已经解决
5. 替代方案(若仍失败)
如果问题依旧,可能是GRUB严重损坏,需彻底重装:
# 在Live模式下操作:
sudo apt-get install --reinstall grub-efi # 对于UEFI系统
# 或
sudo apt-get install --reinstall grub-pc # 对于传统BIOS系统
随后重复步骤3的grub-install和update-grub。
通过以上步骤,GRUB应能正常加载。如果仍有问题,可能是硬件问题(如硬盘损坏)或系统内核损坏,需进一步排查。