Bagaimana saya menghapus versi kernel lama di CentOS 7 dengan aman?

15

Saya mungkin menghadapi gejala aneh yang dihasilkan dari bersaing kernel di CentOS 7. Jadi bagaimana cara aman menghapus kernel lama? Dan bagaimana saya tahu kernel mana yang paling baru?

Di bawah ini adalah keluaran terminal yang saya dapatkan saat ini ketika meneliti ini di server yang bersangkutan. Perhatikan bahwa saya mencoba paket-cleanup tetapi ia meninggalkan 2 kernel yang sama:

Petunjuk dalam tutorial ini mengatakan bahwa output dari dua perintah berikut harus cocok, tetapi Anda dapat melihat bahwa mereka tidak cocok, bahkan setelah reboot:

[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

Perintah yang tersisa mengkonfirmasi bahwa ada dua kernel, dan menggambarkan upaya untuk menghapus yang lama.

[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]# 

Saya juga membuka /etc/yum.confdan mengatur installonly_limit=1, tetapi ini menghasilkan kesalahan dari yum updateperintah berikutnya yang mengatakan bahwa 1 berada di luar kisaran nilai yang dapat diterima installonly_limit.

Saya berasumsi itu 3.10.0-229.14.1.el7.x86_64adalah yang terbaru, tetapi bagaimana saya bisa tahu ini? Selain itu, opsi boot tampaknya menawarkan beberapa kernel untuk dipilih. Dan peluang untuk kebingungan menjadi lebih buruk ketika sistem melakukan boot secara otomatis dari kernel pertama pada daftar opsi.

Adakah yang bisa menjelaskan cara kerjanya, dan secara khusus, cara menghapus kernel lama dengan aman sehingga versi kernel dapat dihilangkan sebagai kemungkinan penyebab gejala aneh? Saya ingin memastikan bahwa kernel terbaru adalah satu-satunya kernel yang dapat dijalankan, tidak peduli bagaimana sistem dihidupkan ulang.

CodeMed
sumber
Berjalan keluar pintu jadi aku tidak bisa menulis jawaban lengkap sekarang. Akan mencoba untuk mengecek kembali nanti. yum-utils digunakan untuk melakukan ini (tidak yakin apakah masih ada). if-not-true-then-false.com/2012/…
0xSheepdog
@ 0xSheepdog Ya, saya menggunakan perintah itu dari tutorial yang serupa, tetapi server CentOS 7 tidak akan mengizinkan installonly_limit=1. Saya mendapatkan gejala lucu yang mungkin dihasilkan dari dua versi kernel, jadi saya hanya ingin memiliki satu versi, jika mungkin, atau setidaknya memiliki penjelasan pasti mengapa tidak mungkin memiliki kurang dari 2 versi, jika dalam sebenarnya itu tidak mungkin.
CodeMed
2
Saya menyarankan untuk mengubah kriteria "keep" menjadi "booted kernel" sebagai kebalikan dari yang terbaru - karena berbagai alasan, Anda mungkin tidak bisa boot ke kernel terbaru.
Jeff Schaller

Jawaban:

23

package-cleanup --oldkernels --count=1 hapus semua kernel kecuali yang terbaru.


sumber
1
Terima kasih Fractal Turtle untuk jawaban singkatnya. Saya juga ingin Anda menyimpan setidaknya dua kernel terbaru dengan aman. package-cleanup --oldkernels --count=2
rangsiman
1
Saya lari package-cleanup --oldkernels --count=1. Setelah reboot, saya masih mendapatkan dua kernel: CentOS Linux (4.4.6-1.el7.elrepo.x86_64) 7 (Core)dan CentOS Linux (3.10.0-514.2.2.el7.x86_64) 7 (Core), apakah Anda tahu cara menyimpannya?
Ron
Bisakah seseorang menjawab pertanyaan @Ron?
Alireza Mohamadi
1
fyi, pembersihan paket adalah bagian dari:yum install yum-utils
TiloBunt
8

Perintah package-cleanuphapus kernel lama. Gunakan --count=1untuk menyimpan yang terbaru. Program tidak akan pernah menghapus kernel yang saat ini digunakan ("Tidak menghapus kernel 3.10.0-327.el7 karena itu adalah kernel yang sedang berjalan"), jadi Anda dapat berakhir dengan dua kernel di / boot ... sampai Anda reboot dan kembali -lari perintah.

Jadi perintahnya adalah

package-cleanup --oldkernels --count=1 

Dokumen manual tiga opsi:

--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
Franklin Piat
sumber
2

Gunakan yum upgradesebagai gantiyum update

Maka itu hanya akan menyimpan tiga kernel. Jika Anda menggunakan updatemaka itu akan mengisi/boot

gurkan
sumber
-1

menurut ini :

jalankan rpm -q kerneluntuk menampilkan kernel yang diinstal

kemudian jalankan yum remove kernel <shown kernel from output above>untuk menghapus kernel

reboot komputer Anda

sunting: ini sebenarnya berfungsi untuk masalah @ Ron, tetapi pastikan elrepo kernel berjalan dengan benar

Surya Stefanus
sumber
Bagaimana Anda menghindari menghapus kernel Anda saat ini?
Jeff Schaller
Perintah khusus IDK untuk @JeffSchaller itu saya kira, untuk memastikan Anda tidak menghapus kernel saat ini, Anda harus memeriksanya terlebih dahulu dengan menggunakan uname -rlalu menghapus kernel yang tidak digunakan tetapi ditunjukkan dari perintah itu,
Surya Stefanus