ブートローダーを再実行するにはどうすればよいですか?


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が、Eliah Kaganが答えで言っているように grubは再起動時に正常に動作するようです。
マークミコフスキー

回答:


189

Server Faultでカーネルのアンインストール後破損した/ vmlinuzおよび/initrd.imgシンボリックリンクに対するwombleの回答によれば、ブートローダーがGRUB / GRUB2である場合、この状況では何もする必要はありません。

他のいくつかのブートローダー(少なくともLILO)では、明らかにブートローダーの設定を手動で実行する必要がある場合があります。

GRUBに既存のカーネルをチェックして構成を更新するように指示する必要がある場合、実行sudo update-grubしてください。そして、それを実行しても害はありません。ただし、この場合は必要ではありません。


[OK]を私は汝それらを走った
TevinYoungz

3
@TevinYoungzそれは結構です。sudo update-grub害を及ぼすべきではありません。
エリアケイガン14

5
「時々」という言葉は控えめです。
サイモンリヒター14

9
このペアのエラーと解決策は、最も愚かな設計ミスに対して賞を受け取ることができると考えてください:update-grub代わりに名前が付けられたgrubコマンドgrub-updateが論理的であり、99.99%のケースで機能する修正(コマンド)を指定できません
ソリン

@sorinバグレポートがどこかにあるのだろうか。
マテウスコニエツニー

31

grubの場合、エラーは少し奇妙です。

aptが新しいカーネルバージョンをインストールすると、/ vmlinuzおよび/initrd.imgが/vmlinuz.oldおよび/initrd.img.oldに移動します(この時点で、現在アクティブなカーネルを指していることになります。再び、.old拡張子に注目してください。 「カーネルのアンインストール後の破損したリンク」でリンクされているストーリーとは異なります)、2つの新しいファイル/ 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

したがって:

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」ファイルの「破損したリンク」は心配する必要はありません。投票^
bshe

12

$ sudo update-grub

また、古いパッケージを削除/パージしたい場合もできます

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


3.Xイメージしかない場合、すべてを削除しますか?
HarkályGergő

技術的には、最初のコマンドが質問に答えます。pkgのメンテナンスについて追加する理由はありません。
bshea
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.