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-tools与有冲突initramfs-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。)

相关内容