前几天晚上,我收到提示,建议我从 12.10 升级到 13.04。我想了想为什么不呢,然后接受了升级。我几乎没有任何互动,只是点击了接受按钮,然后在一个小时左右后就回到了升级后的机器。
initramfs 现在在旧的 linux 头文件上失败了,我不认为我的系统上存在这个头文件,而且我无法更新系统上依赖于它的任何内容(几乎所有内容,包括图形驱动程序、系统更新等)。我已经尝试解决这个问题近一个月了,在这个过程中学到了很多关于 Ubuntu/Linux 的知识,尽管我仍然不确定我必须做些什么才能解决以下错误。
每当我运行以下命令时:
sudo apt-get install (with -f or not)
sudo apt-get upgrade
sudo apt-get dist-upgrade
sudo apt-get remove
sudo apt-get autoremove
sudo update-initramfs -u
我将收到以下消息/错误,并且无法继续该过程:
Setting up initramfs-tools (0.103ubuntu0.7) ...
update-initramfs: deferring update (trigger activated)
Processing triggers for initramfs-tools ...
update-initramfs: Generating /boot/initrd.img-3.8.0-31-generic
Fatal: open /boot/vmlinuz-3.5.0-21-generic: No such file or directory
run-parts: /etc/initramfs/post-update.d//runlilo exited with return code 1
dpkg: error processing initramfs-tools (--configure):
subprocess installed post-installation script returned error exit status 1
Errors were encountered while processing:
initramfs-tools
E: Sub-process /usr/bin/dpkg returned an error code (1)
sudo apt-get clean
和似乎都sudo apt-get autoclean
没有效果。使用sudo apt-get update
似乎按预期运行,但就使用后续命令收到上述错误而言没有任何变化。
跑步sudo dpkg-reconfigure -a
并没有什么不同。
我了解到我的系统上可能存在“3.5.0-21-generic”的残留。我已尽力找到它们并将它们移到我家的临时目录中。我检查了/etc/apt/sources.list
这些标题的任何引用,但一无所获。
我查看了一下内容/var/lib/dpkg/info/linux-image-generic.list
如下:
/.
/usr
/usr/share
/usr/share/doc
/usr/share/doc/linux-image-generic
/usr/share/doc/linux-image-generic/copyright
/usr/share/doc/linux-image-generic/changelog.gz
我检查了所有这些位置的内容,没有发现任何带有 的引用,事实上,搜索了我的整个系统,现在名称中带有该字符串的唯一文件存在于我将所有内容移入的新 tmp 目录中。我还将 中的和的3.5.0-21
引用移入了我的新 tmp 目录中。linux-image-3.5.0-21-generic.*
linux-image-extra-3.5.0-22-generic.*
/var/lib/dpkg/info
在我看来,我的系统上没有任何地方vmlinuz-3.5.0-21-generic
可以包含 。我搜索所有文件以查找包含 的内容时找不到任何内容3.5.0-21
。我仍然无法使用 initramfs,这意味着我无法更新/升级我的系统,安装新软件包或修复升级到 13.04 时出现的其他一些问题。
以下是我的部分输出:
$ sudo update-initramfs -u -v
Available versions: 3.8.0-31-generic 3.5.0-41-generic
Keeping /boot/initrd.img-3.8.0-31-generic.dpkg-bak
update-initramfs: Generating /boot/initrd.img-3.8.0-31-generic
Adding module /lib/modules/3.8.0-31-generic/kernel/drivers/hid/hid.ko
... (mostly adding/calling happening here, hundreds of lines of output, seems successful)
Calling hook busybox
Adding binary /usr/lib/initramfs-tools/bin/busybox
Calling hook dmsetup
Adding binary /sbin/dmsetup
Adding library /lib/i386-linux-gnu/libdevmapper.so.1.02.1
rm -f ./etc/ld.so.conf.d/nvidia_settings.conf
rm -f ./lib/firmware/cxgb4/t4fw.bin
Building cpio /boot/initrd.img-3.8.0-31-generic.new initramfs
Fatal: open /boot/vmlinuz-3.5.0-21-generic: No such file or directory
run-parts: /etc/initramfs/post-update.d//runlilo exited with return code 1
有人能帮我理解这个问题吗?我该如何缓解它?我该怎么做才能解决这个问题?我真的不想完全重新安装我的系统,还有其他方法可以解决这个问题吗?
答案1
我修复了这个问题,现在可以正常更新我的系统了。但是,我仍然不明白这个问题是怎么发生的。
无论如何,我继续安装了第一个列出的缺失内核 3.5.0-21。此后,我已将问题的这一方面删除,但在安装 3.5.0-21 后,initramfs 开始抱怨 3.5.0-17。因此,我决定处理这个问题,并允许它耗费我太多的时间,并备份了所有数据,做好最坏的准备,但希望得到最好的结果。
我通过在 packages.ubuntu.com 上搜索来了解如何下载旧的/弃用的 Linux 内核/头文件。然后,我编辑了我的 /etc/apt/sources.list 文件,以允许下载与这两个 Linux 映像相关的候选版本。然后,我运行“sudo apt-get update”来更新源。然后,我能够运行“sudo apt-get download linux-image3.5.0-##-generic”并成功安装了这两个软件包。
在此之后,我的所有 apt-get 命令继续运行,我设法安装了最新更新至 13.04,并且更新了我所有的其他用户软件。
然后,重启后,我的鼠标和键盘不再响应!我的 grub 菜单消失了!我无法启动 tty 终端,或者实际上什么都做不了。从我的 Windows 计算机,我下载了一个 13.10 映像,创建了一个 usb 闪存 ubuntu 启动盘,并在从此闪存卷启动后拯救了 grub。拯救 grub 后,我能够启动到恢复模式,并修复任何坏包或发生的任何情况。重新启动我的机器后,我可以使用鼠标和键盘登录。现在我的系统看起来很稳定,哇,我很惊讶这一切是多么好的学习经历。