Come rieseguire il boot loader?


150

Running ha sudo apt-get -f installdetto che The link /vmlinuz.old is a damaged linke:

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

Ecco l'output completo:

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

Come rieseguire il boot loader?


2
Ottengo lo stesso problema quando lo uso apt-get autoremove, ma come dice Eliah Kagan nella sua risposta grub sembra funzionare bene al riavvio.
— Mark Mikofski il

Risposte:


189

Secondo la risposta di Womble ai collegamenti simbolici danneggiati / vmlinuz e /initrd.img dopo la disinstallazione del kernel (su Server Fault ), non è necessario fare nulla in questa situazione quando il proprio caricatore di avvio è GRUB / GRUB2, che è qui.

Per alcuni altri bootloader (almeno LILO ), a volte è / era apparentemente necessario eseguire manualmente la configurazione del boot loader.

Se fosse necessario dire a GRUB di controllare i kernel esistenti e aggiornarne la configurazione, l'esecuzione sudo update-grublo farebbe. E non c'è nulla di male nel gestirlo. Ma non dovrebbe essere necessario in questo caso.


ok li ho gestiti tu
— TevinYoungz

3
@TevinYoungz Va bene. sudo update-grubnon dovrebbe fare alcun male.
— Eliah Kagan,

5
La parola "a volte" è un eufemismo.
— Simon Richter,

9
Pensa che questa coppia di errori e la risoluzione potrebbero ricevere un premio per gli errori di progettazione più stupidi: avere un comando grub al update-grubposto del grub-updatequale è logico e non è possibile specificare la correzione (comando) che funziona nel 99,99% dei casi.
— sorin,

@sorin Mi chiedo qualunque cosa ci sia da segnalare da qualche parte.
— Mateusz Konieczny,

31

L'errore è un po 'strano in caso di grub.

Quando apt installa una nuova versione del kernel, sposta / vmlinuz e /initrd.img in /vmlinuz.old e /initrd.img.old (che quindi puntano ancora al kernel attualmente attivo. Ancora una volta, notate l'estensione .old, che è diverso dalla storia collegata in "Collegamenti danneggiati dopo la disinstallazione del kernel") e crea due nuovi file / vmlinuz /initrd.img.

Quando esegui apt-get autoremove(i messaggi non sono stati generati da apt-get -f install) rimuove quel kernel precedentemente attivo (hai riavviato dopo quell'installazione, prima di eseguire autoremove, giusto?), Il che rende i collegamenti non validi.

Al termine della rimozione del kernel stesso, lo stesso autoremove invoca update-grub:

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

Quindi:

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

Quindi, autoremove fa:

  1. rimuove il vecchio kernel
  2. eseguire update-grub
  3. update-grub rimuove i file .old collegati ai file rimossi.

Nulla di cui preoccuparsi :-)

Saluti.


2
E se non avessi riavviato dopo l'ultimo dist-upgrade? E allora? Non riavvio mai. Questo è per i principianti.
— Evan Carroll,

2
Non è possibile salvare in memoria il nuovo kernel se non si riavvia.
— simpleuser

Nota anche se hai /vmlinuz&& /initrd.imgcollegato all'area del kernel (di solito / boot) prima di riavviare. Come note di risposta - il "link danneggiato" dei file ".old" non è nulla di cui preoccuparsi. Votato ^
— bshea il

12

$ sudo update-grub

E se vuoi eliminare / eliminare i vecchi pacchetti puoi farlo anche

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


Se hai solo immagini 3.X, elimini tutto, ho ragione?
— Harkály Gergő,

Tecnicamente, il tuo primo comando risponde alla domanda. Nessun motivo per aggiungere altro sulla manutenzione dei pkg.
— bshea,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.