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

Tev*_*ngz 154 apt boot grub2 kernel bootloader

跑步sudo apt-get -f installThe link /vmlinuz.old is a damaged link和:

you may need to re-run your boot loader[grub]
Run Code Online (Sandbox Code Playgroud)

这是完整的输出:

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:~$
Run Code Online (Sandbox Code Playgroud)

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

Eli*_*gan 191

旺布尔的回答损坏/ vmlinuz和/initrd.img符号链接内核卸载后(在服务器故障),您不必在这种情况下做任何事情时,你的引导装载程序是GRUB / GRUB2,它是在这里。

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

如果您确实需要告诉 GRUB 检查现有内核并更新其配置,运行sudo update-grub会这样做。运行它没有坏处。但在这种情况下应该没有必要。

  • 认为这对错误和解决方案可能会因最愚蠢的设计错误而获得奖励:使用名为 `update-grub` 而不是 `grub-update` 的 grub 命令,这是合乎逻辑的并且未能指定修复(命令)在 99.99% 的情况下都有效。 (9认同)
  • “有时”这个词是轻描淡写的。 (5认同)
  • @TevinYoungz 没关系。`sudo update-grub` 不应该造成任何伤害。 (3认同)

Ana*_*kin 31

在 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
Run Code Online (Sandbox Code Playgroud)

因此:

The link /vmlinuz.old is a damaged link
Removing symbolic link vmlinuz.old 
 you may need to re-run your boot loader[grub]
Run Code Online (Sandbox Code Playgroud)

所以, autoremove 会:

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

没什么可担心的 :-)

问候。

  • 除非重新启动,否则无法将新内核放入内存。 (3认同)
  • 如果您在上次 dist 升级后没有重新启动怎么办?然后呢?我从不重启。那是给新手的。 (2认同)

小智 12

$ sudo update-grub

如果你想删除/清除旧包,你也可以这样做

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