Làm cách nào để chạy lại bộ tải khởi động?


150

Chạy sudo apt-get -f installnói rằng The link /vmlinuz.old is a damaged linkvà:

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

Đây là đầu ra đầy đủ:

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

Làm cách nào để chạy lại bộ tải khởi động?


2
Tôi gặp vấn đề tương tự khi tôi sử dụng apt-get autoremove, nhưng như Eliah Kagan nói trong câu trả lời của anh ấy dường như hoạt động tốt khi khởi động lại.
Đánh dấu Mikofski

Câu trả lời:


189

Theo câu trả lời của womble đối với các liên kết tượng trưng của Damaged / vmlinuz và /initrd.img sau khi gỡ cài đặt Kernel (trên Server Fault ), bạn không phải làm gì trong tình huống này khi trình tải khởi động của bạn là GRUB / GRUB2.

Đối với một số bộ tải khởi động khác (ít nhất là LILO ), đôi khi rõ ràng là cần thiết để chạy thủ công cấu hình của bộ tải khởi động.

Nếu bạn đã cần phải nói cho GRUB để kiểm tra hạt nhân hiện có và cập nhật cấu hình của nó, chạy sudo update-grubsẽ làm như vậy. Và không có hại gì khi chạy nó. Nhưng nó không cần thiết trong trường hợp này.


ok tôi đã chạy chúng
TevinYoungz

3
@TevinYoungz Điều đó tốt. sudo update-grubkhông nên làm hại gì
Eliah Kagan

5
Từ "đôi khi" là một cách nói nhẹ nhàng.
Simon Richter

9
Nghĩ rằng cặp lỗi và độ phân giải này có thể nhận được giải thưởng cho những lỗi thiết kế ngu ngốc nhất: có một lệnh grub được đặt tên update-grubthay vì grub-updatelogic và không chỉ định sửa lỗi (lệnh) hoạt động trong 99,99% trường hợp.
sorin 7/07/2015

@sorin Tôi tự hỏi bất cứ điều gì có báo cáo lỗi cho điều đó ở đâu đó.
Mateusz Konieczny

31

Lỗi là một số lẻ trong trường hợp grub.

Khi apt cài đặt phiên bản kernel mới, nó sẽ di chuyển / vmlinuz và /initrd.img sang /vmlinuz.old và /initrd.img.old (Sau đó, vẫn đang trỏ đến kernel hiện đang hoạt động. Một lần nữa, hãy chú ý đến phần mở rộng .old, khác với câu chuyện được liên kết trong "Liên kết bị hỏng sau khi gỡ cài đặt kernel") và tạo hai tệp mới / vmlinuz /initrd.img.

Khi bạn chạy apt-get autoremove(các thông báo không được tạo bởi apt-get -f install), nó sẽ loại bỏ hạt nhân hoạt động trước đó (bạn đã khởi động lại sau khi cài đặt đó, trước khi chạy autoremove, phải không?), Khiến các liên kết không hợp lệ.

Khi việc loại bỏ kernel tự thực hiện, autoremove sẽ gọi update-grub:

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

Vì thế:

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

Vì vậy, autoremove hiện:

  1. loại bỏ nhân cũ
  2. chạy cập nhật-grub
  3. update-grub xóa các tệp .old liên kết đến các tệp đã xóa.

Không có gì phải lo lắng về :-)

Trân trọng.


2
Điều gì xảy ra nếu bạn không khởi động lại sau lần nâng cấp cuối cùng? Rồi sao? Tôi không bao giờ khởi động lại. Đó là cho newbs.
Evan Carroll

2
Không có cách nào để đưa kernel mới vào bộ nhớ trừ khi bạn khởi động lại.
đơn giản hóa

Cũng nên lưu ý nếu bạn có /vmlinuz&& /initrd.imgliên kết với vùng kernel (thường là / boot) trước khi bạn khởi động lại. Như câu trả lời ghi chú - các tập tin ".old" 'liên kết bị hỏng' không có gì đáng lo ngại. Bình chọn ^
bshea

12

$ sudo update-grub

Và nếu bạn muốn xóa / xóa các gói cũ, bạn cũng có thể làm

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


Nếu bạn chỉ có hình ảnh 3.X, bạn xóa mọi thứ, phải không?
Harkály Gergő

Về mặt kỹ thuật, lệnh đầu tiên của bạn trả lời câu hỏi. Không có lý do để thêm nhiều hơn về bảo trì pkg.
bshea
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.