
Also machte ich den Fehler, Grub Customizer zu verwenden, und dann einen weiteren, als ich versuchte, die vorherige Konfiguration wiederherzustellen, indem ich den Anweisungen in folgte /etc/grub.d/backup/RESTORE_INSTRUCTIONS
, was zur Beschädigung meiner Grub-Konfigurationsdateien führte.
Wenn ich jetzt versuche zu rennen, sudo update-grup
bekomme ich
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.
Das Ergebnis grub.cfg.new
ist leer (es enthält nur den anfänglichen Kommentar zu seiner Generierung).
Ich habe versucht, Grub neu zu installieren, gemäßdiese Antwortvon
sudo apt-get purge grub-pc grub-common
aber es funktioniert nicht mehr. Zuerst apt
beschwerte er sich über nicht erfüllte Abhängigkeiten und als ich sie grub2-common grub-pc-bin
zur Liste der zu entfernenden Abhängigkeiten hinzufügte, wurde mir gesagt, dass diese stattdessen installiert werden müssen.
... grub-common:i386 grub-efi-amd64 grub2-common:i386 ...
Nach einigem Zögern habe ich es akzeptiert und die Pakete installieren lassen, mit der Absicht, sie danach wieder zu ersetzen, aber während der Installation bin ich wieder auf dieses Problem gestoßen
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
Offensichtlich update-group
ist dies jetzt Teil des Post-Installationsskripts, und wenn es fehlschlägt, schlägt die Installation des Pakets fehl. Jetzt bin ich also in einem Zustand, in dem die Abhängigkeiten in beide Richtungen unterbrochen sind und keine der Grub-Versionen richtig installiert ist und nicht repariert werden kann.
Die Konfigurationsdateien von Grub ( /etc/default/grub
und /etc/grub.d/*
) wurden beim Bereinigen nie entfernt und überschrieben. Und wenn ich sie manuell lösche, werden sie nie wieder installiert.
Kann ich jetzt irgendetwas tun, um meine Betriebssysteminstallation zu retten?
Antwort1
apt purge
ist für diese Art von Situation fast immer die falsche Lösung. Auf diese Weise werden wahrscheinlich wichtige Dinge entfernt, und wenn Sie genug Dinge entfernen, geraten Sie in eine Situation, die eine Neuinstallation erfordert. Das Entfernen von Paketen hilft nur dann, wenn sie andere Pakete ersetzt haben, die Sie neu installieren möchten.
Stattdessen empfehle ich, dpkg -V
beschädigte Dateien und Berechtigungen zu finden und apt install --reinstall
beschädigte Pakete erneut zu installieren. Dadurch werden beschädigte Kerndateien ersetzt, Konfigurationsdateien bleiben jedoch möglicherweise beschädigt. Aber es ist ein Anfang.
Wenn Sie beschädigte Konfigurationsdateien finden, können Sie versuchen, sie zu reparieren oder umzubenennen und dpkg --reconfigure
mit dem entsprechenden Paket zu versuchen, die Konfigurationsdateien neu zu erstellen. dpkg --configure
Dies kann hilfreich sein, wenn die Konfigurationen völlig durcheinander geraten oder gelöscht sind.
Eine andere Möglichkeit ist, dass esextraDateien in den Konfigurationsverzeichnissen, die Ihre Konfiguration beschädigt haben. Auch hier wird apt purge diese nicht entfernen und nichts beheben. Das Auffinden dieser zusätzlichen Dateien muss durch Ausschlussverfahren erfolgen, ist aber nicht unmöglich.
Antwort2
Das Problem waren die Berechtigungen, nicht fehlende/beschädigte Dateien oder eine falsche Syntax, sondern falsche Berechtigungen. Die von Grub Customizer erstellten Sicherungsdateien /etc/grub.d/backup/etc_grub_d
haben kein Ausführungsflag. Deshalb wurde eine leere grub.cfg generiert. Und ich konnte sie nicht sehen, weil die Fehlermeldung update-grub
irreführend ist.
Es reicht also nicht aus, einfach nachzufolgen RESTORE_INSTRUCTIONS
und /etc/grub.d/backup/
nach zurückzukopieren /etc/grub.d/backup/etc_grub_d
. /etc/grub.d
Sie müssen auch
sudo chmod +x 0* 1* 2* 3* 4*
Ich denke aber auch, dass dies den Paketbetreuern als Problem gemeldet werden sollte. Es ist nicht in Ordnung, dass für die erfolgreiche Installation eines Pakets die Ausführung eines Skripts erforderlich ist, das von einer zerstörbaren Benutzerkonfiguration abhängt. Und es ist nicht in Ordnung, dass der Versuch, dieses Paket vorübergehend zu deinstallieren und neu zu installieren, zur Installation eines i386-Subsystems führt.
Ende der Tirade, Danke an alle, die geholfen haben.