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