此错误最初发生在 apt 升级期间,但我设法使用以下方法重现了它update grub
sudo update-grub
[sudo] password for me:
Sourcing file `/etc/default/grub'
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-4.15.0-72-generic
Found initrd image: /boot/initrd.img-4.15.0-72-generic
Found linux image: /boot/vmlinuz-4.15.0-60-generic
Found initrd image: /boot/initrd.img-4.15.0-60-generic
Found linux image: /boot/vmlinuz-4.15.0-20-generic
Found initrd image: /boot/initrd.img-4.15.0-20-generic
Found memtest86+ image: /boot/memtest86+.elf
Found memtest86+ image: /boot/memtest86+.bin
error: syntax error.
error: Incorrect command.
error: syntax error.
Syntax error at line 145
Syntax errors are detected in generated GRUB config file.
Ensure that there are no errors in /etc/default/grub
and /etc/grub.d/* files or please file a bug report with
/boot/grub/grub.cfg.new file attached.
我仔细检查了/etc/default/grub
/etc/grub.d/* 文件,没有发现任何明显的错误。
在搜索信息的过程中我发现https://unix.stackexchange.com/questions/209152/syntax-error-in-grub-cfg-on-update-grub-grub-2-memtest86但那里出色的故障排除步骤并没有为我带来解决方案。遗憾的是,我在解决问题之前没有备份 /boot/grub/grub.cfg.new,因此无法提供副本,我只记得错误报告在第 145 行,而我在该行区域的 if - fi 代码块中没有看到任何问题。
答案1
尽管出现了错误,我还是能够访问系统,因此我无需 chroot 进入系统,如果您无法启动系统,则 chroot 是必需的。我所做的就是清除并重新安装 grub,这样就成功了。
我使用的步骤如下:
- 我确认我已连接到互联网
sudo apt-get update # ***
- 我清除了 grub-pc 和 grub-common
sudo apt-get purge grub-pc grub-common
- 我阅读了有关删除引导加载程序的警告,点击TAB突出显示“OK”并按下ENTER。
- 我发出了命令
apt-get install grub-common grub-pc
,当出现提示时,我点击TAB突出显示“”,然后按下ENTER 当出现设备选项时,我使用 UP/DN 键来选择正确的驱动器(sdX)而不是分区。
我确保安装驱动器[] /dev/sdX 旁边有一个星号(在我的情况下:[] /dev/sda )。如果没有,请突出显示它并按空格键选择它。然后我点击突出TAB显示“确定”,然后按ENTER
我通过发出命令测试了安装是否完成并且正常工作
sudo update-grub
,并且一切都按预期进行,没有错误。