CentOS 7'deki eski çekirdek sürümlerini nasıl güvenli bir şekilde silebilirim?


15

CentOS 7'de rakip çekirdeklerden kaynaklanan garip belirtilerle karşılaşıyor olabilirim. Eski çekirdekleri nasıl güvenle silebilirim? Ve hangi çekirdeğin en yenisi olduğunu nasıl bilebilirim?

Aşağıda, söz konusu sunucuda bunu araştırırken elde ettiğim terminal çıktısı aşağıdadır. Paket temizlemeyi denediğimi ancak aynı 2 çekirdeği bıraktığını unutmayın:

Bu öğreticideki talimatlar , aşağıdaki iki komutun çıktısının eşleşmesi gerektiğini söylüyor, ancak bir yeniden başlatmadan sonra bile eşleşmediklerini görebilirsiniz:

[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

Kalan komutlar iki çekirdek olduğunu onaylar ve eskisini silme girişimlerini gösterir.

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

Ayrıca açtım /etc/yum.confve ayarladım installonly_limit=1, ancak bu, sonraki yum updatekomuttan 1'in kabul edilebilir değerler aralığının dışında olduğunu belirten bir hatayla sonuçlandı installonly_limit.

Bunun 3.10.0-229.14.1.el7.x86_64en yeni olduğunu düşünüyorum , ama bunu nasıl bilebilirim? Ayrıca, önyükleme seçenekleri, aralarından seçim yapabileceğiniz birden çok çekirdek sunuyor gibi görünüyor. Sistem seçenekler listesindeki ilk çekirdekten otomatik önyükleme yaptığında, karışıklık fırsatları daha da kötüleşir.

Birisi bunun nasıl çalıştığını ve özellikle, çekirdek sürümünün garip belirtilerin olası bir nedeni olarak ortadan kaldırılabilmesi için eski çekirdekleri nasıl güvenli bir şekilde sileceğini açıklayabilir mi? Sistemin nasıl yeniden başlatılırsa başlansın, en son çekirdeğin çalıştırılabilen tek çekirdek olduğundan emin olmak istiyorum.


Kapıdan çıkıyorum, şimdi tam bir cevap yazamıyorum. Daha sonra tekrar kontrol etmeye çalışacağım. yum-utils bunu yapmak için kullanılır (hala yapılıp yapılmadığından emin değilim). if-not-true-then-false.com/2012/…
0xSheepdog

@ 0xSheepdog Evet, benzer bir öğreticiden bu komutları kullanıyorum, ancak CentOS 7 sunucusu izin vermiyor installonly_limit=1. İki çekirdek sürümden kaynaklanabilecek komik belirtiler alıyorum, bu yüzden mümkünse sadece bir sürüme sahip olmak ya da en azından neden 2'den az sürüme sahip olmanın mümkün olmadığına dair kesin bir açıklama yapmak istiyorum. aslında mümkün değil.
CodeMed

2
"Keep" ölçütlerinizi sadece en yenisinin aksine "boot kernel" olarak değiştirmenizi öneririm - çeşitli nedenlerle, en yeni çekirdeğe önyükleme yapmayabilirsiniz.
Jeff Schaller

Yanıtlar:


23

package-cleanup --oldkernels --count=1 en son hariç tüm çekirdekleri silin.


1
Kısa cevap için Fraktal Kaplumbağa teşekkürler. Ayrıca en az iki çekirdeği güvenle saklamanızı istiyorum. package-cleanup --oldkernels --count=2
rangsiman

1
Ben koşarım package-cleanup --oldkernels --count=1. Yeniden başlattıktan sonra hala iki çekirdek alıyorum: CentOS Linux (4.4.6-1.el7.elrepo.x86_64) 7 (Core)ve CentOS Linux (3.10.0-514.2.2.el7.x86_64) 7 (Core)bir tanesini nasıl tutacağınızı biliyor musunuz?
Ron

Birisi @Ron'un sorusuna cevap verebilir mi?
Alireza Mohamadi

1
fyi, package-cleanup bir parçasıdır:yum install yum-utils
TiloBunt

8

Komut package-cleanupeski çekirdeği kaldır. --count=1Sadece en son haberleri tutmak için kullanın . Program asla kullanılmakta olan çekirdeği kaldırmayacaktır ("Çekirdek 3.10.0-327.el7 kaldırılmıyor, çünkü çalışan çekirdektir"), bu yüzden yeniden başlatana ve yeniden başlatana kadar / boot içinde iki çekirdek ile son ... komutunu çalıştırın.

Yani komut

package-cleanup --oldkernels --count=1 

Manpage belgesi üç seçenek:

--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

Yerine yum upgradekullanınyum update

O zaman sadece üç çekirdek tutacaktır. Eğer kullanırsanız update,/boot


-1

göre bu :

rpm -q kernelyüklü çekirdeği göstermek için koş

sonra yum remove kernel <shown kernel from output above>çekirdeği çıkarmak için çalıştırın

bilgisayarı yeniden başlat

edit: Bu aslında @ Ron'un sorunu için çalışıyor, ancak elrepo çekirdeğinin doğru çalıştığından emin olun


Mevcut çekirdeğinizi kaldırmaktan nasıl kaçınırsınız?
Jeff Schaller

Bu @JeffSchaller için IDK'ya özel komut Sanırım, geçerli çekirdeği kaldırmamaya emin olmak için, önce uname -rkullanmamış çekirdeği
silerek
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.