Comment relancer le chargeur de démarrage?

150

Courir sudo apt-get -f installdit cela The link /vmlinuz.old is a damaged linket:

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

Voici la sortie complète:

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:~$

Comment puis-je réexécuter le chargeur de démarrage?

TevinYoungz
la source
2
J'obtiens le même problème lorsque je l'utilise apt-get autoremove, mais comme le dit Eliah Kagan dans sa réponse, il semble bien fonctionner au redémarrage.
Mark Mikofski

Réponses:

189

Selon la réponse de Womble aux liens symboliques Damaged / vmlinuz et /initrd.img après la désinstallation du noyau (sur défaut du serveur ), vous n'avez rien à faire dans cette situation lorsque votre chargeur de démarrage est GRUB / GRUB2, comme c'est le cas ici.

Pour certains autres chargeurs de démarrage (au moins LILO ), il est apparemment nécessaire parfois de lancer manuellement la configuration du chargeur de démarrage.

Si vous avez besoin de dire Grub pour vérifier les noyaux existants et mettre à jour sa configuration, fonctionnement le sudo update-grubferait. Et il n'y a pas de mal à courir ça. Mais cela ne devrait pas être nécessaire dans ce cas.

Eliah Kagan
la source
ok je les ai courus tu
TevinYoungz
3
@TevinYoungz C'est bien. sudo update-grubne devrait pas faire de mal.
Eliah Kagan
5
Le mot "parfois" est un euphémisme.
Simon Richter
9
En pensant que cette paire d'erreur et la résolution pourraient recevoir un prix pour les erreurs de conception les plus stupides: avoir une commande grub nommée à la update-grubplace de grub-updatece qui est logique et ne pas spécifier le correctif (commande) qui fonctionne dans 99,99% des cas.
sorin
@sorin Je me demande s'il existe un rapport de bogue pour cela quelque part.
Mateusz Konieczny
31

L'erreur est un peu étrange dans le cas de grub.

Quand apt installe une nouvelle version du noyau, il déplace / vmlinuz et /initrd.img vers /vmlinuz.old et /initrd.img.old (qui pointent toujours sur le noyau actuellement actif. Notez à nouveau l’extension .old, qui est différent de l'histoire liée dans "Liens endommagés après la désinstallation du noyau") et crée deux nouveaux fichiers / vmlinuz /initrd.img.

Lorsque vous exécutez apt-get autoremove(les messages n'ont pas été générés par apt-get -f install), il supprime le noyau précédemment actif (vous avez redémarré après cette installation, avant d'exécuter autoremove, n'est-ce pas?), Ce qui rend les liens non valides.

Lorsque la suppression du noyau elle-même est terminée, l'autoretvention même appelle update-grub:

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

Par conséquent:

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

Donc, autoremove fait:

  1. enlever l'ancien noyau
  2. lancer update-grub
  3. update-grub supprime les fichiers .old liés aux fichiers supprimés.

Rien à craindre :-)

Cordialement.

Anakin
la source
2
Que faire si vous n'avez pas redémarré après la dernière mise à niveau? Alors quoi? Je ne redémarre jamais. C'est pour newbs.
Evan Carroll
2
Il n’est pas possible d’obtenir le nouveau noyau en mémoire à moins de redémarrer.
simpleuser
Notez également que si /vmlinuz&& est /initrd.imglié à la zone du noyau (généralement / boot) avant de redémarrer. En tant que réponse, le lien endommagé des fichiers "anciens" n’a rien à craindre. Voté ^
bshea
12

$ sudo update-grub

Et si vous voulez supprimer / purger les anciens paquets, vous pouvez aussi le faire

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

pa75
la source
Si vous n'avez que des images 3.X, vous supprimez tout, n'est-ce pas?
Harkály Gergő
Techniquement, votre première commande répond à la question. Aucune raison d'ajouter plus sur la maintenance de pkg.
bshea