运行sudo apt-get -f install表示The link /vmlinuz.old is a damaged link和:

you may need to re-run your boot loader[grub]


这里是完整的输出:

user@chrubuntu:~$ sudo apt-get -f install
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  linux-headers-3.13.0-32 linux-headers-3.13.0-32-generic
  linux-image-3.13.0-32-generic linux-image-extra-3.13.0-32-generic
Use 'apt-get autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
user@chrubuntu:~$ sudo apt-get autoremove
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages will be REMOVED:
  linux-headers-3.13.0-32 linux-headers-3.13.0-32-generic
  linux-image-3.13.0-32-generic linux-image-extra-3.13.0-32-generic
0 upgraded, 0 newly installed, 4 to remove and 0 not upgraded.
After this operation, 270 MB disk space will be freed.
Do you want to continue? [Y/n] y
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = "en
en",
    LC_ALL = (unset),
    LC_TIME = "en",
    LC_MONETARY = "en",
    LC_ADDRESS = "en",
    LC_TELEPHONE = "en",
    LC_NAME = "en",
    LC_MEASUREMENT = "en",
    LC_IDENTIFICATION = "en",
    LC_NUMERIC = "en",
    LC_PAPER = "en",
    LANG = (unset)
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
locale: Cannot set LC_ALL to default locale: No such file or directory
(Reading database ... 232120 files and directories currently installed.)
Removing linux-headers-3.13.0-32-generic (3.13.0-32.57) ...
Removing linux-headers-3.13.0-32 (3.13.0-32.57) ...
Removing linux-image-extra-3.13.0-32-generic (3.13.0-32.57) ...
Examining /etc/kernel/postrm.d .
run-parts: executing /etc/kernel/postrm.d/initramfs-tools 3.13.0-32-generic /boot/vmlinuz-3.13.0-32-generic
update-initramfs: Deleting /boot/initrd.img-3.13.0-32-generic
run-parts: executing /etc/kernel/postrm.d/zz-update-grub 3.13.0-32-generic /boot/vmlinuz-3.13.0-32-generic
The link /initrd.img.old is a damaged link
Removing symbolic link initrd.img.old 
 you may need to re-run your boot loader[grub]
Removing linux-image-3.13.0-32-generic (3.13.0-32.57) ...
Examining /etc/kernel/postrm.d .
run-parts: executing /etc/kernel/postrm.d/initramfs-tools 3.13.0-32-generic /boot/vmlinuz-3.13.0-32-generic
update-initramfs: Deleting /boot/initrd.img-3.13.0-32-generic
run-parts: executing /etc/kernel/postrm.d/zz-update-grub 3.13.0-32-generic /boot/vmlinuz-3.13.0-32-generic
The link /vmlinuz.old is a damaged link
Removing symbolic link vmlinuz.old 
 you may need to re-run your boot loader[grub]
user@chrubuntu:~$


如何重新-运行引导加载程序?

评论

使用apt-get autoremove时会遇到相同的问题,但是正如Eliah Kagan在他的回答中所说,grub在重新启动后似乎可以正常工作。

#1 楼

根据womble对内核卸载后(在Server Fault上)的损坏的/ vmlinuz和/initrd.img符号链接的回答,在这种情况下,当引导加载程序为GRUB / GRUB2时,您无需执行任何操作。

对于某些其他引导加载程序(至少是LILO),显然有时有时需要手动运行引导加载程序的配置。

如果确实需要告知GRUB,检查现有内核并更新其配置,运行sudo update-grub会这样做。运行该命令没有任何危害。但这在这种情况下不是必须的。

评论


好吧我跑了你

– TevinYoungz
2014年9月2日,下午2:57

@TevinYoungz很好。 sudo update-grub应该不会造成任何伤害。

– Eliah Kagan
2014年9月2日3:00,

“有时”一词是轻描淡写的。

–西蒙·里希特(Simon Richter)
2014年9月2日,下午4:35

认为这对错误和解决方案可能会因最愚蠢的设计错误而获奖:拥有一个名为update-grub的grub命令,而不是合乎逻辑的grub-update,并且未指定有效的修复程序(命令)在99.99%的情况下。

–索林
15年7月7日在13:22

@sorin我想知道在某个地方有什么错误报告。

–减少活动
17年5月24日在9:02

#2 楼

对于grub,该错误有些奇怪。

当apt安装新的内核版本时,它将/ vmlinuz和/initrd.img移​​至/vmlinuz.old和/initrd.img.old(再次,请注意.old扩展名,它与“内核卸载后损坏的链接”中链接的内容不同),并创建了两个新文件/ vmlinuz/initrd.img。

当您运行apt-get autoremove(消息不是apt-get -f install生成的)时,它会删除先前处于活动状态的内核(您在安装后重新启动,然后再运行autoremove,对吗?),这会使链接无效。
完成内核本身的删除后,自动删除本身将调用update-grub:

run-parts: executing /etc/kernel/postrm.d/zz-update-grub 3.13.0-32-generic /boot/vmlinuz-3.13.0-32-generic


因此:

The link /vmlinuz.old is a damaged link
Removing symbolic link vmlinuz.old 
 you may need to re-run your boot loader[grub]


因此,autoremove会执行以下操作:


删除旧内核
运行update-grub
update-grub删除链接到已删除的.old文件文件。

不必担心:-)

注意事项。

评论


如果上次dist升级后没有重新启动怎么办?那呢我从不重启。那是给新手的。

–埃文·卡洛尔(Evan Carroll)
15年12月23日在21:14

除非重新启动,否则无法将新内核放入内存。

–简单用户
16 Mar 1 '16 at 14:37

同样明智的是,在重新引导之前,是否将/ vmlinuz && /initrd.img链接到内核区域(通常是/ boot)。作为答案,“。old”文件的“损坏的链接”没什么好担心的。投票^

– bshea
16 Dec 16 '16:37



#3 楼

$ sudo update-grub

如果要删除/清除旧软件包,也可以

$ dpkg --list |grep "^rc" | cut -d " " -f 3 | xargs sudo dpkg --purge

评论


如果只有3.X图像,则删除所有内容,对吗?

–HarkályGergő
16年9月1日在22:12

从技术上讲,您的第一个命令将回答问题。没有理由添加更多有关pkg维护的信息。

– bshea
16 Dec 16'在16:41