Як повторно запустити завантажувач?


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% випадків.
sorin

@sorin Цікаво, що там десь є повідомлення про помилку.
Матеуш Конічний

31

Помилка є трохи дивним у випадку зриву.

Коли 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]

Отже, autoremove робить:

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

Не про що хвилюватися :-)

З повагою


2
Що робити, якщо ви не перезавантажилися після останнього дистрибутиву? Тоді що? Я ніколи не перезавантажуюсь. Це для новонароджених.
Еван Керролл

2
Немає можливості отримати нове ядро ​​в пам'ять, якщо ви не перезавантажитесь.
simpleuser

Також доцільно зауважити, якщо ви /vmlinuz&& /initrd.imgпов'язані з областю ядра (зазвичай / завантаження) перед перезавантаженням. Як зазначає відповідь - ".old" файли "пошкоджене посилання" не хвилюються. Проголосували ^
bshea

12

$ sudo update-grub

І якщо ви хочете видалити / очистити старі пакунки, ви можете також зробити

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


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

Технічно ваша перша команда відповідає на питання. Немає підстав додати більше про обслуговування кг.
bshea
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.