
因此,我在使用 Grub 定制器時犯了一個錯誤,然後在嘗試按照 中的說明恢復先前的配置時又犯了另一個錯誤/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
如果配置完全混亂或被刪除,可能會有所幫助。
另一種可能性是,有額外的配置目錄中的檔案已損壞您的配置。同樣, apt purge 不會刪除這些內容,也不會修復任何問題。找到這些額外的文件需要透過消除過程來完成,但這並非不可能。
答案2
問題在於權限,不是檔案遺失/損壞或語法錯誤,而是權限錯誤。 Grub 自訂器所建立的備份檔案/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 子系統,這是不好的。
吐槽完畢,感謝所有幫助的人。