Làm cách nào để xóa các phiên bản kernel cũ trong CentOS 7 một cách an toàn?


15

Tôi có thể gặp phải các triệu chứng kỳ lạ do các hạt nhân cạnh tranh trong CentOS 7. Vậy làm cách nào để xóa các hạt nhân cũ một cách an toàn? Và làm thế nào để tôi biết kernel nào là mới nhất?

Dưới đây là đầu ra thiết bị đầu cuối tôi nhận được tại thời điểm này khi nghiên cứu điều này trên máy chủ được đề cập. Lưu ý rằng tôi đã thử dọn dẹp gói nhưng nó để lại 2 hạt giống nhau:

Các hướng dẫn trong hướng dẫn này nói rằng đầu ra của hai lệnh sau phải khớp, nhưng bạn có thể thấy rằng chúng không khớp, ngay cả sau khi khởi động lại:

[root@localhost ~]# rpm -qa kernel |sort -V |tail -n 1
kernel-3.10.0-229.el7.x86_64
[root@localhost ~]# uname -r
3.10.0-229.14.1.el7.x86_64

Các lệnh còn lại xác nhận rằng có hai hạt nhân và minh họa các nỗ lực xóa cái cũ.

[root@localhost ~]# cd /usr/src/kernels
[root@localhost kernels]# ls -al
total 16
drwxr-xr-x.  4 root root 4096 Oct  2 12:55 .
drwxr-xr-x.  4 root root 4096 Oct  2 13:15 ..
drwxr-xr-x. 22 root root 4096 Oct  2 12:55 3.10.0-229.14.1.el7.x86_64
drwxr-xr-x. 22 root root 4096 Oct  2 12:35 3.10.0-229.el7.x86_64
[root@localhost kernels]# rpm -q kernel
kernel-3.10.0-229.el7.x86_64
kernel-3.10.0-229.14.1.el7.x86_64
[root@localhost kernels]# package-cleanup --oldkernels=1
Loaded plugins: fastestmirror
Usage: 
    package-cleanup: helps find problems in the rpmdb of system and correct them

    usage: package-cleanup --problems or --leaves or --orphans or --oldkernels
Command line error: --oldkernels option does not take a value
[root@localhost kernels]# package-cleanup --oldkernels
Loaded plugins: fastestmirror
No old kernels to remove
[root@localhost kernels]# rpm -q kernel
kernel-3.10.0-229.el7.x86_64
kernel-3.10.0-229.14.1.el7.x86_64
[root@localhost kernels]# 

Tôi cũng đã mở /etc/yum.confvà thiết lập installonly_limit=1, nhưng điều này dẫn đến một lỗi từ yum updatelệnh tiếp theo nói rằng 1 nằm ngoài phạm vi giá trị chấp nhận được installonly_limit.

Tôi cho rằng đó 3.10.0-229.14.1.el7.x86_64là mới nhất, nhưng làm thế nào tôi có thể biết điều này? Ngoài ra, các tùy chọn khởi động dường như cung cấp nhiều hạt nhân để lựa chọn. Và cơ hội cho sự nhầm lẫn trở nên tồi tệ hơn khi hệ thống tự động khởi động từ hạt nhân đầu tiên trong danh sách các tùy chọn.

Ai đó có thể vui lòng giải thích làm thế nào điều này hoạt động, và cụ thể, làm thế nào để xóa hạt nhân cũ một cách an toàn để phiên bản kernel có thể được loại bỏ như là một nguyên nhân có thể gây ra các triệu chứng kỳ lạ? Tôi muốn chắc chắn rằng kernel gần đây nhất là kernel duy nhất có thể chạy, bất kể hệ thống được khởi động lại như thế nào.


Bước ra khỏi cửa để tôi không thể viết một câu trả lời đầy đủ ngay bây giờ. Sẽ cố gắng kiểm tra lại sau. yum-utils được sử dụng để làm điều này (không chắc là nó vẫn còn). if-not-true-then-false.com/2012/ Mạnh
0xSheepdog

@ 0xSheepdog Có, tôi đang sử dụng các lệnh đó từ một hướng dẫn tương tự, nhưng máy chủ CentOS 7 sẽ không cho phép installonly_limit=1. Tôi nhận được các triệu chứng buồn cười có thể xuất phát từ hai phiên bản kernel, vì vậy tôi chỉ muốn có một phiên bản, nếu có thể hoặc ít nhất là có một lời giải thích dứt khoát về lý do tại sao không thể có ít hơn 2 phiên bản, nếu trong thực tế là không thể
CodeMed

2
Tôi sẽ đề nghị thay đổi tiêu chí "giữ" của bạn thành "kernel đã khởi động" chứ không phải đơn giản là mới nhất - vì nhiều lý do, bạn có thể không khởi động được kernel mới nhất.
Jeff Schaller

Câu trả lời:


23

package-cleanup --oldkernels --count=1 xóa tất cả các hạt nhân ngoại trừ mới nhất.


1
Cảm ơn Fractal Rùa đã trả lời ngắn gọn. Tôi cũng muốn bạn giữ an toàn ít nhất hai kernel mới nhất. package-cleanup --oldkernels --count=2
rangsiman

1
Tôi chạy package-cleanup --oldkernels --count=1. Sau khi khởi động lại, tôi vẫn nhận được hai hạt nhân: CentOS Linux (4.4.6-1.el7.elrepo.x86_64) 7 (Core)CentOS Linux (3.10.0-514.2.2.el7.x86_64) 7 (Core), bạn có biết làm thế nào để giữ một hạt nhân không?
Ron

Ai đó có thể trả lời câu hỏi của @Ron không?
Alireza Mohamadi

1
fyi, dọn dẹp gói là một phần của:yum install yum-utils
TiloBunt

8

Lệnh package-cleanuploại bỏ kernel cũ hơn. Sử dụng --count=1để giữ mới nhất. Chương trình sẽ không bao giờ xóa kernel hiện đang được sử dụng ("Không xóa kernel 3.10.0-327.el7 vì đó là kernel đang chạy"), vì vậy bạn có thể kết thúc với hai kernel trong / boot ... cho đến khi bạn khởi động lại và tái -chuyển lệnh.

Vì vậy, lệnh là

package-cleanup --oldkernels --count=1 

Tài liệu manpage ba tùy chọn:

--oldkernels
          Remove old kernel and kernel-devel packages.
--count <COUNT>
          Number of duplicate/kernel packages to keep on the system (default 2)
--keepdevel
          Do not remove kernel-devel packages when removing kernels

2

Sử dụng yum upgradethay vìyum update

Sau đó, nó sẽ chỉ giữ ba hạt nhân. Nếu bạn sử dụng updatethì nó sẽ lấp đầy/boot


-1

theo điều này :

chạy rpm -q kernelđể hiển thị kernel đã cài đặt

sau đó chạy yum remove kernel <shown kernel from output above>để loại bỏ kernel

khởi động lại máy tính của bạn

chỉnh sửa: công việc thực tế này cho vấn đề của @ Ron, nhưng đảm bảo hạt nhân elrepo đang chạy chính xác


Làm thế nào để bạn tránh loại bỏ hạt nhân hiện tại của bạn?
Jeff Schaller

Tôi đoán lệnh cụ thể của IDK cho điều đó @JeffSchaller Tôi đoán, để chắc chắn rằng bạn không xóa kernel hiện tại, bạn hãy kiểm tra nó trước bằng cách sử dụng uname -rsau đó xóa kernel không sử dụng nhưng được hiển thị từ lệnh đó,
Surya Stefanus
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.