Как мне перезапустить загрузчик?


150

Бег 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:~$

Как мне перезапустить загрузчик?


2
При использовании я получаю ту же проблему apt-get autoremove, но, как говорит Элиа Каган в своем ответе, grub, похоже, отлично работает при перезагрузке.
Марк Микофски

Ответы:


189

Согласно ответу Уомбл в к Поврежденные / vmlinuz и /initrd.img символические ссылки после Kernel деинсталляции (на сервере Fault ), вам не нужно ничего делать в этой ситуации , когда ваш загрузчик GRUB / GRUB2-которой, здесь.

Для некоторых других загрузчиков (по крайней мере, LILO ) иногда / было необходимо иногда запускать конфигурацию загрузчика вручную.

Если же нужно сказать GRUB для проверки существующих ядер и обновить свою конфигурацию, бег sudo update-grubбудет делать это. И нет никакого вреда в управлении этим. Но это не должно быть необходимо в этом случае.


хорошо, я запустил их ты
TevinYoungz

3
@TevinYoungz Это хорошо. sudo update-grubне должно причинять вреда.
Элия ​​Каган

5
Слово «иногда» является преуменьшением.
Саймон Рихтер

9
Предположим, что эта пара ошибок и разрешение могут получить приз за самые глупые ошибки проектирования: наличие команды grub, которая названа update-grubвместо grub-updateлогической, и не в состоянии указать исправление (команду), которое работает в 99,99% случаев.
сорин

@ Сорин Интересно, где-нибудь есть сообщения об ошибках.
Матеуш Конечны

31

Ошибка немного странная в случае grub.

Когда apt устанавливает новую версию ядра, он перемещает / vmlinuz и /initrd.img в /vmlinuz.old и /initrd.img.old (которые затем все еще указывают на текущее активное ядро. Опять же, обратите внимание на расширение .old, который отличается от истории, указанной в «Поврежденные ссылки после удаления ядра») и создает два новых файла / vmlinuz /initrd.img.

Когда вы запускаете apt-get autoremove(сообщения не были сгенерированы apt-get -f install), он удаляет это ранее активное ядро ​​(вы перезагружались после этой установки, прежде чем запускать автоматическое удаление, верно?), Что делает ссылки недействительными.

Когда удаление самого ядра выполнено, само удаление удаляет 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]

Итак, автоудаление делает:

  1. удалить старое ядро
  2. запустить update-grub
  3. update-grub удаляет файлы .old, которые связаны с удаленными файлами.

Не о чем беспокоиться :-)

С уважением.


2
Что если вы не перезагрузились после последнего dist-upgrade? Тогда что? Я никогда не перезагружаюсь. Это для новичков.
Эван Кэрролл

2
Невозможно загрузить новое ядро ​​в память, пока вы не перезагрузите компьютер.
simpleuser

Также стоит отметить, если у вас есть /vmlinuz&& /initrd.imgссылка на область ядра (обычно / boot) перед перезагрузкой. Как отмечается в ответе, «поврежденной ссылке» на файлы «.old» не о чем беспокоиться. Проголосовал ^
bshea

12

$ sudo update-grub

И если вы хотите удалить / очистить старые пакеты, вы можете сделать также

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


Если у вас есть только изображения 3.X, вы удаляете все, я прав?
Harkály Gergő

Технически ваша первая команда отвечает на вопрос. Нет причин добавлять больше о поддержке pkg.
bshea 16.12.16
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.