如何修复 Grub 中的语法错误?

如何修复 Grub 中的语法错误?

我想更新我的 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
#

相关内容