Bagaimana saya menjalankan kembali bootloader?

150

Running sudo apt-get -f installmengatakan itu The link /vmlinuz.old is a damaged linkdan:

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

Inilah hasil lengkapnya:

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

Bagaimana saya menjalankan kembali bootloader?

TevinYoungz
sumber
2
Saya mendapatkan masalah yang sama ketika saya gunakan apt-get autoremove, tetapi seperti yang dikatakan Eliah Kagan dalam jawabannya, grub tampaknya berfungsi dengan baik pada saat reboot.
Mark Mikofski

Jawaban:

189

Menurut jawaban womble ini untuk Rusak / vmlinuz dan /initrd.img simbolik link setelah Kernel uninstall (pada Server kesalahan ), Anda tidak perlu melakukan apa-apa dalam situasi ini ketika boot loader Anda adalah GRUB / GRUB2-yang itu, di sini.

Untuk beberapa bootloader lain (setidaknya LILO ), kadang-kadang diperlukan untuk menjalankan konfigurasi bootloader secara manual.

Jika Anda tidak perlu memberitahu GRUB untuk memeriksa kernel yang ada dan memperbarui konfigurasi, berjalan sudo update-grubakan melakukannya. Dan tidak ada salahnya menjalankan itu. Tetapi seharusnya tidak perlu dalam kasus ini.

Eliah Kagan
sumber
ok saya menjalankannya
TevinYoungz
3
@TevinYoungz Tidak apa-apa. sudo update-grubseharusnya tidak membahayakan.
Eliah Kagan
5
Kata "kadang-kadang" adalah pernyataan yang meremehkan.
Simon Richter
9
Berpikir bahwa pasangan kesalahan dan resolusi ini dapat menerima hadiah untuk kesalahan desain paling bodoh: memiliki perintah grub yang dinamai update-grubbukan grub-updateyang logis dan gagal menentukan perbaikan (perintah) yang bekerja di 99,99% kasus.
sorin
@ Atau aku bertanya-tanya apa pun yang ada laporan bug untuk suatu tempat.
Mateusz Konieczny
31

Kesalahannya agak aneh dalam kasus grub.

Ketika menginstal versi kernel baru, ia bergerak / vmlinuz dan /initrd.img ke /vmlinuz.old dan /initrd.img.old (Yang kemudian masih menunjuk ke kernel yang sedang aktif. Sekali lagi, perhatikan ekstensi .old, yang berbeda dari cerita yang ditautkan dalam "Tautan rusak setelah penghapusan kernel") dan membuat dua file baru / vmlinuz /initrd.img.

Ketika Anda menjalankan apt-get autoremove(pesan tidak dihasilkan oleh apt-get -f install) itu menghapus kernel yang sebelumnya aktif (Anda reboot setelah instalasi itu, sebelum menjalankan autoremove, kan?), Yang membuat tautan tidak valid.

Ketika penghapusan kernel itu sendiri dilakukan, autoremove itu sendiri memanggil pembaruan-grub:

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

Karenanya:

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

Jadi, autoremove tidak:

  1. hapus kernel lama
  2. jalankan pembaruan-grub
  3. update-grub menghapus file .old yang terhubung dengan file yang dihapus.

Tidak perlu khawatir :-)

Salam.

Anakin
sumber
2
Bagaimana jika Anda tidak me-reboot setelah dist-upgrade terakhir? Lalu apa? Saya tidak pernah reboot. Itu untuk pemula.
Evan Carroll
2
Tidak ada cara untuk memasukkan kernel baru ke dalam memori kecuali Anda reboot.
simpleuser
Juga bijaksana untuk dicatat jika Anda /vmlinuz&& /initrd.imgditautkan ke area kernel (biasanya / boot) sebelum Anda reboot. Sebagai catatan jawaban - ".old" file 'tautan rusak' tidak perlu dikhawatirkan. Memilih ^
bshea
12

$ sudo update-grub

Dan jika Anda ingin menghapus / membersihkan paket lama yang dapat Anda lakukan juga

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

pa75
sumber
Jika Anda hanya memiliki 3.X gambar, Anda menghapus semuanya, apakah saya benar?
Harkály Gergő
Secara teknis, perintah pertama Anda menjawab pertanyaan itu. Tidak ada alasan untuk menambahkan lebih banyak tentang perawatan pkg.
bshea