Linux 核心“半配置”

Linux 核心“半配置”

直到一周前,我已經運行 Debian Wheezy 一年多了,沒有出現任何問題。沒有明顯的原因,系統突然認為 Linux 核心僅配置了一半,而且我在網路上找到的所有修復都不起作用。結果,apt每次執行更新時都嘗試修復它,但失敗了。

細節

症狀

任何時候運行更新時,apt都會在某個時刻嘗試修復內核,失敗,更新過程將終止並顯示錯誤建議,然後顯示系統是最新的消息。

任何更新活動均以apt以下內容結束:

Examining /etc/kernel/postinst.d.
run-parts: executing /etc/kernel/postinst.d/dkms 3.2.0-4-amd64 /boot/vmlinuz-3.2.0-4-amd64
run-parts: executing /etc/kernel/postinst.d/initramfs-tools 3.2.0-4-amd64 /boot/vmlinuz-3.2.0-4-amd64
E: /usr/sbin/update-initramfs.orig.initramfs-tools - command not found
E: On Debian based systems, update-initramfs from initramfs-tools
E: can be installed with:
E:   apt-get install initramfs-tools
run-parts: /etc/kernel/postinst.d/initramfs-tools exited with return code 1
Failed to process /etc/kernel/postinst.d at /var/lib/dpkg/info/linux-image-3.2.0-4-amd64.postinst line 696.
dpkg: error processing linux-image-3.2.0-4-amd64 (--configure):
 subprocess installed post-installation script returned error exit status 1
Errors were encountered while processing:
 linux-image-3.2.0-4-amd64
E: Sub-process /usr/bin/dpkg returned an error code (1)

核心

幾乎相同的問題在關於 Ask Ubuntu 的問題。接受的答案指出dpkg狀態文件有問題。狀態條目為linux-image-3.2.0-4-amd64說已經配置一半了。

作為第一步,我嘗試了以下方法:

administrator@Kwheezy:~$ sudo dpkg-reconfigure linux-image-3.2.0-4-amd64
/usr/sbin/dpkg-reconfigure: linux-image-3.2.0-4-amd64 is broken or not fully installed

重新安裝沒有幫助,因此表示已損壞。

Ask Ubuntu 的解決方案是從dpkg狀態檔案中刪除該條目,然後重新安裝。就我而言,這也不起作用。該過程完成後,dpkg狀態檔案已將該條目替換為另一個仍表示已配置一半的條目,且系統行為是相同的。

適當的輸出

重點關注輸出中的錯誤訊息apt。錯誤總是以以下內容開頭:

/usr/sbin/update-initramfs.orig.initramfs-tools - command not found

果然,該文件不存在。有用的消息建議可以透過安裝來安裝它initramfs-tools。已經安裝了,但我重新安裝了它。事實證明它apt已經自己做到了這一點。按照安裝指南出現的所有錯誤訊息initramfs-tools由該安裝嘗試生成,這永遠不會導致/usr/sbin/update-initramfs.orig.initramfs-tools正在安裝。

概括

  • 我從 Wheezy 儲存庫中獲得了最新的可用 Linux 核心。這是一個很好的副本,滿足所有依賴關係,並且沒有其他使用者遇到問題的報告。
  • 系統報告它未完全配置。我沒有找到任何方法來配置它或讓系統停止認為它不是。

答案1

解決

sudo apt-get remove live-tools
sudo apt-get install --reinstall initramfs-tools
sudo apt-get install -f

解釋

在更了解 Fixer1234 的系統之後在聊天中,我確定安裝的包live-toolsinitramfs-tools.

live-tools安裝後,它會覆蓋/usr/sbin/update-initramfs自己的腳本並將原始腳本放入/usr/sbin/update-initramfs.orig.initramfs-tools.

live-tools有一些健全性檢查來檢測它是否在即時系統上。如果它不在即時系統上而是在已安裝的系統上,它會嘗試執行/usr/sbin/update-initramfs.orig.initramfs-tools,這是更新 initramfs 的正確腳本。

在fixer1234的系統中,/usr/sbin/update-initramfs.orig.initramfs-tools已被刪除。

由於該系統是已安裝的系統,live-tools可能是不必要的,這就是為什麼我建議將其刪除。

以下是上面“解決方案”部分中提出的每個步驟的工作原理:

sudo apt-get remove live-tools

刪除live-tools將嘗試恢復/usr/sbin/update-initramfs.orig.initramfs-tools/usr/sbin/update-initramfs,但由於/usr/sbin/update-initramfs.orig.initramfs-tools不存在,因此會發生錯誤。

live-tools還是會被刪除,這才是重要的。

我們仍然失蹤/usr/sbin/update-initramfs

sudo apt-get install --reinstall initramfs-tools

要恢復/usr/sbin/update-initramfs,我們重新安裝提供該檔案的軟體包。即,initramfs-tools.

sudo apt-get install -f

由於 和 的錯誤,您的核心安裝不完整live-toolsinitramfs-tools因此要完成安裝並解決所有軟體包問題,需要執行最後一步。

現在,您應該擁有一個功能齊全的 Debian 系統。

(順便說一句,這些步驟理論上適用於 Debian 8、Ubuntu 12.04、Ubuntu 14.04、Ubuntu 15.10、Ubuntu 16.04 和 Ubuntu 16.10。)

相關內容