我遇到了一件奇怪的事情,我刚刚从 12.10 升级到 13.04,一切都很好,只是它不能自动构建 initrd 映像,它失败并打印出 mkinitramfs 的用法输出。
我尝试调试“mkinitramfs”脚本,但似乎 $outfile 变量从未设置过。但是,我可以像下面这样手动生成 ramdisk:更新-initramfs -c -u 3.0.8-23-通用
我尝试了网络上看到的大多数方法:清除、重新安装,但都没有任何帮助,而且我无法使用 linux-image 被标记为“损坏”,但内核存在于/boot 中。
答案1
我可以修复它,但内核安装后脚本似乎与我的 mkinitramfs 版本不兼容(initramfs-tools 0.103ubuntu0.7)。
在linux-image postinstall脚本文件中,调用缺少一个参数:
在第837行:
my $ret = system("$ramdisk " . ($upgrading ? "-u" : "-c") . " -k " . $version . " >&2");
应该是(注意-o参数之前$版本多变的。)
my $ret = system("$ramdisk " . ($upgrading ? "-u" : "-c") . " -k " . " -o " . $version . " >&2");
而且它确实有效!我一直通过手动更新 initramfs 来绕过这个问题,但我不喜欢每次使用 apt-get 时,dpkg status 都会一直打印这个错误,幸运的是它没有阻塞,然后我今晚有空,决定把它们放在这个烦人的东西上,结果得到了回报!=)
不幸的是,它没有解释为什么我在使用官方存储库对我的 Ubuntu 服务器进行发行版升级后会出现这个问题。:/