Làm thế nào tôi có thể loại bỏ kernel đã biên dịch?


21

Tôi đã cài đặt 14.10 trên máy tính xách tay Lenovo E455.

Và biên dịch kernel 3.19 theo thứ tự sau

vì dường như 14.10 không muốn làm việc với tôi. (Tôi thấy những chuyển động chậm)

Đã tải xuống kernel hiện tại từ http://www.kernel.org/

make oldconfig
make
sudo make install

Cuối cùng, không thể khởi động với kernel mới.

Làm cách nào để xóa kernel đã biên dịch khỏi grub và được phục hồi?


Bạn đã cố gắng làm gì để loại bỏ nó và nó đã sai ở đâu? Trường hợp có bất kỳ thông báo cảnh báo hoặc lỗi?
David Foerster

Nhờ sự giúp đỡ của bạn. Đã phục hồi và chờ đợi Ubuntu 15.XX.
Ohmygirl

Câu trả lời:


33

Phương pháp dễ dàng:

Nếu được biên dịch thông qua phương thức debian, bạn có thể thấy kernel đã cài đặt với các mục sau:

dpkg --list | grep kernel-image

Và sau đó gỡ cài đặt gói kernel mong muốn với apt-get :

sudo apt-get remove kernel-image-your-kernel-image

Phương pháp khó:

Nếu được biên dịch và cài đặt qua make install, bạn sẽ cần xóa thủ công các mục sau:

/boot/vmlinuz*KERNEL-VERSION*
/boot/initrd*KERNEL-VERSION*
/boot/System-map*KERNEL-VERSION*
/boot/config-*KERNEL-VERSION*
/lib/modules/*KERNEL-VERSION*/
/var/lib/initramfs/*KERNEL-VERSION*/

Sau đó cập nhật cấu hình grub:

sudo update-grub2

1
Tôi không có thư mục / var / lib / initramfs /, nhưng có phải vì tôi không biên dịch hạt nhân trong hệ thống của mình?
jarno

1
/var/lib/initramfs-tools/*KERNEL-VERSION*trên Debian
Csaba Toth

1
Xem xét chỉnh sửa cho các hạt nhân mới hơn (năm 2018) có chứa: /boot/abi*KERNEL-VERSION*/boot/retpoline*KERNEL-VERSION*
WinEunuuchs2Unix

9

Nhờ câu hỏi của jarno ở đây, tôi đã tìm ra cách thực hiện câu trả lời của Mudit Kapil đòi hỏi phải gõ rất ít và bắt được bất kỳ bit thừa nào nằm xung quanh

Vì tất cả những gì cần thiết để loại bỏ kernel là xóa tất cả các tệp và thư mục của nó, và tất cả các tệp và thư mục đó sẽ có chuỗi phát hành kernel trong đường dẫn của chúng, chúng ta có thể sử dụng locateđể tìm tất cả các tệp có chuỗi phát hành kernel và xóa chúng để loại bỏ hạt nhân.

(Trước tiên hãy kiểm tra uname -rđể tìm tên của kernel hiện đang chạy & đảm bảo không xóa nó)

Nói rằng bạn muốn loại bỏ một hạt nhân được gọi là 4.4.6-my-kernel. Bạn có thể tìm thấy tất cả các tệp và thư mục hiện có của nó (không liệt kê các tệp trong tất cả các thư mục được đặt tên) với locate -b -e 4.4.6-my-kernel. Áp dụng rm -rcho điều này với xargscho phép bạn cũng xóa các tập tin. Tôi thêm -pđể tạo xargsmục tiêu hiển thị và yêu cầu xác nhận trước khi thực hiện

locate -b -e 4.4.6-my-kernel | xargs -p sudo rm -r

sau đó gõ yđể thực hiện rm -rtrên các mục tiêu được hiển thị. Nó sẽ phàn nàn rằng các tệp không phải là thư mục không tồn tại vì bạn đang cố xóa chúng một cách đệ quy ( -r) nhưng không sao, chúng vẫn sẽ bị xóa cùng với các thư mục và nội dung của chúng. Khi xong, chỉ cần chạy

sudo update-grub

et voila.


+1 vì điều này bắt được nhiều tệp hơn câu trả lời được chấp nhận. Ví dụ như tất cả các dkmscông cụ. Tôi sẽ chạy nó trước mà không có rmtùy chọn chỉ để xem mọi thứ sẽ bị xóa.
WinEunuuchs2Unix

Tại sao tôi không nên xóa kernel hiện đang chạy? Nếu đó là kernel tôi muốn xóa thì sao? Có thể xóa kernel hiện đang chạy mà không cần khởi động lại máy bằng kernel khác không?
Liran Funaro

1
@LiranFunaro thì có thể. Xem câu trả lời của tôi Làm cách nào để gỡ cài đặt kernel đang chạy bằng lệnh? điều này cũng giải thích tại sao nó có thể không phải là một ý tưởng tốt
Zanna
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.