![如何修复 Grub 中的语法错误?](https://linux22.com/image/184172/%E5%A6%82%E4%BD%95%E4%BF%AE%E5%A4%8D%20Grub%20%E4%B8%AD%E7%9A%84%E8%AF%AD%E6%B3%95%E9%94%99%E8%AF%AF%EF%BC%9F.png)
我想更新我的 grub 设置。
我收到以下消息
# grub-mkconfig -o /boot/grub/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-linux
Found initrd image: /boot/initramfs-linux.img
Found fallback initrd image(s) in /boot: initramfs-linux-fallback.img
Found Windows 10 on /dev/sda1
error: syntax error.
error: Incorrect command.
error: syntax error.
Syntax error at line 178
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.
这是过去的bin/boot/grub/grub.cfg.new
我试图查看其中的文件,/etc/grub.d/*
但调试失败。
答案1
为了帮助您将来进行调试,我记录了您对我所犯错误的搜索。
问题出在第178行。
### BEGIN /etc/grub.d/40_custom ###
# This file provides an easy way to add custom menu entries. Simply type the
# menu entries you want to add after this comment. Be careful not to change
# the 'exec tail' line above.
if [ "${grub_platform}" == "pc" ]; then
fi #<------that is line 178
### END /etc/grub.d/40_custom ###
所以,问题显然出在40_custom
。
关于这些文件,据说:
除非您是 GRUB 专家并且了解更改的作用,否则不应修改这些文件。即使这样,您也应该始终保留原始的工作 grub.cfg 文件的备份副本。特定文件 40_custom 和 41_custom 旨在用于生成对 GRUB 配置的用户修改。您仍然应该了解对这些文件所做的任何更改的后果,并维护原始 grub.cfg 文件的备份。
所以这可能是您对此文件所做的添加。
经验丰富的 shell 脚本编写者可能已经发现了这一点
if [ "${grub_platform}" == "pc" ]; then
:
fi
将解决您的语法错误。我明确指出“语法”错误,因为我不知道你的意图是什么。
/etc/grub.d/40_custom
您将在(您可能编辑的文件)而不是在中更改此设置grub.cfg
,但从该文件中的注释中应该可以清楚地看出这一点:
#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by grub-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#