Как восстановить исходную конфигурацию grub после удаления Grub Customizer в Ubuntu 22.04?

Как восстановить исходную конфигурацию grub после удаления Grub Customizer в Ubuntu 22.04?

Итак, я совершил ошибку, используя 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.

Конец тирады, спасибо всем, кто помог.

Связанный контент