在 Ubuntu 22.04 中卸载 Grub Customizer 后如何恢复原始 grub 配置?

在 Ubuntu 22.04 中卸载 Grub Customizer 后如何恢复原始 grub 配置?

因此,我在使用 Grub Customizer 时犯了一个错误,然后在尝试按照中的说明恢复以前的配置时又犯了一个错误/etc/grub.d/backup/RESTORE_INSTRUCTIONS,这导致我的 grub 配置文件损坏。

现在当我尝试运行时sudo update-grup我得到了

Sourcing file `/etc/default/grub'
Sourcing file `/etc/default/grub.d/init-select.cfg'
Generating grub configuration file ...
Script `/boot/grub/grub.cfg.new' contains no commands and will do nothing
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.

结果grub.cfg.new是空的(它仅包含关于它正在生成的初始注释)。

我尝试重新安装 grub这个答案经过

sudo apt-get purge grub-pc grub-common

但它不再起作用。首先,它apt抱怨未满足的依赖项,当我将其添加grub2-common grub-pc-bin到要删除的列表中时,它告诉我需要安装这些

... grub-common:i386 grub-efi-amd64 grub2-common:i386 ...

犹豫了一会儿之后,我接受了,并安装这些软件包,打算稍后再替换它们,但我在安装过程中再次遇到了这个问题

Script `/boot/grub/grub.cfg.new' contains no commands and will do nothing
...
dpkg: error processing package grub-pc (--configure):
 installed grub-pc package post-installation script subprocess returned error exit status 1

因此,显然update-group现在是安装后脚本的一部分,如果失败,则软件包安装失败。因此,现在我处于依赖关系在两个方面都被破坏的状态,并且两个 grub 版本都没有正确安装,无法修复。

清除期间,grub 的配置文件(/etc/default/grub和)从未被删除和覆盖。如果我手动删除它们,它们将永远不会再次安装。/etc/grub.d/*

我现在能做些什么来保存我的操作系统安装?

答案1

apt purge对于这种情况,几乎总是错误的解决方案。这种方法很可能会删除关键内容,如果你删除了足够多的内容,你就会陷入需要重新安装才能解决的困境。删除软件包唯一有帮助的情况是,如果它们替换了你试图重新安装的其他软件包。

相反,我建议使用dpkg -V查找损坏的文件和权限,并使用apt install --reinstall重新安装已损坏的软件包。这将替换核心损坏的文件,但可能会使配置文件损坏。但这是一个开始。

当您发现损坏的配置文件时,您可以尝试修复它们或重命名它们,并使用dpkg --reconfigure相关包尝试重建配置文件。 dpkg --configure如果配置完全混乱或被删除,这可能会有所帮助。

另一种可能性是额外的config 目录中损坏了配置的文件。同样,apt purge 不会删除这些文件,也不会修复任何问题。查找这些额外的文件需要通过排除法来完成,但并非不可能。

答案2

问题出在权限上,不是文件丢失/损坏或语法错误,而是权限错误。Grub Customizer 在 中创建的备份文件/etc/grub.d/backup/etc_grub_d没有执行标志。这就是生成空 grub.cfg 的原因。我看不到它,因为 的错误消息update-grub具有误导性。

RESTORE_INSTRUCTIONS因此,仅仅照搬/etc/grub.d/backup/并复制/etc/grub.d/backup/etc_grub_d是不够的/etc/grub.d。你还必须

sudo chmod +x 0* 1* 2* 3* 4*

但我也认为应该将此问题报告给软件包维护人员。成功安装软件包需要运行依赖于易破坏用户配置的脚本,这是不可以的。尝试临时卸载并重新安装该软件包会导致安装 i386 子系统,这也是不可以的。

吐槽完毕,感谢所有帮助过的人。

相关内容