ฉันจะลบเคอร์เนลเวอร์ชันเก่าใน CentOS 7 ได้อย่างปลอดภัยได้อย่างไร


15

ฉันอาจพบอาการแปลก ๆ ที่เกิดจากการแข่งขันของเมล็ดใน CentOS 7 ดังนั้นฉันจะลบเมล็ดเก่าได้อย่างปลอดภัยได้อย่างไร และฉันจะรู้ได้อย่างไรว่าเคอร์เนลตัวใดเป็นรุ่นใหม่ล่าสุด

ด้านล่างคือผลลัพธ์ของเทอร์มินัลที่ฉันได้รับในขณะที่ทำการค้นคว้าสิ่งนี้บนเซิร์ฟเวอร์ที่เป็นปัญหา โปรดทราบว่าฉันลองแพคเกจการล้างข้อมูล แต่มันจะเหมือนกัน 2 เมล็ด:

คำแนะนำในบทช่วยสอนนี้บอกว่าผลลัพธ์ของคำสั่งสองคำสั่งต่อไปนี้ควรตรงกัน แต่คุณสามารถเห็นได้ว่าคำสั่งนั้นไม่ตรงกันแม้หลังจากรีบูต:

[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

คำสั่งที่เหลือยืนยันว่ามีสองเมล็ดและแสดงความพยายามในการลบเก่า

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

ฉันยังเปิดขึ้น/etc/yum.confและชุดinstallonly_limit=1แต่นี้ส่งผลให้เกิดข้อผิดพลาดจากที่ตามมาyum updateคำสั่งที่บอกว่า 1 installonly_limitอยู่นอกช่วงของค่าที่ยอมรับได้สำหรับ

ฉันถือว่า3.10.0-229.14.1.el7.x86_64เป็นรุ่นใหม่ล่าสุด แต่ฉันจะรู้ได้อย่างไร นอกจากนี้ตัวเลือกการบูตดูเหมือนจะให้เมล็ดหลายแบบให้เลือก และโอกาสในการสับสนยิ่งแย่ลงเมื่อระบบบูทอัตโนมัติจากเคอร์เนลตัวแรกในรายการตัวเลือก

ใครช่วยกรุณาอธิบายวิธีการทำงานและโดยเฉพาะอย่างยิ่งวิธีการลบเมล็ดเก่าอย่างปลอดภัยเพื่อให้รุ่นเคอร์เนลสามารถกำจัดเป็นสาเหตุของอาการแปลก ๆ ได้หรือไม่ ฉันต้องการตรวจสอบให้แน่ใจว่าเคอร์เนลล่าสุดเป็นเคอร์เนลเดียวที่สามารถรันได้ไม่ว่าระบบจะรีสตาร์ทอย่างไร


เดินออกจากประตูดังนั้นฉันจึงไม่สามารถเขียนคำตอบแบบเต็มได้ในขณะนี้ จะลองตรวจสอบอีกครั้งในภายหลัง yum-utils เคยทำเช่นนี้ (ไม่แน่ใจว่ามันยังทำอยู่) if-not-true-then-false.com/2012/…
0xSheepdog

@ 0xSheepdog ใช่ฉันใช้คำสั่งที่มาจากการกวดวิชาที่คล้ายกัน แต่ CentOS 7 installonly_limit=1เซิร์ฟเวอร์จะไม่อนุญาตให้ ฉันกำลังมีอาการตลก ๆ ที่อาจเกิดจากเคอร์เนลสองเวอร์ชันดังนั้นฉันต้องการมีเพียงหนึ่งเวอร์ชันถ้าเป็นไปได้หรืออย่างน้อยก็มีคำอธิบายที่ชัดเจนว่าทำไมมันเป็นไปไม่ได้ที่จะมีน้อยกว่า 2 เวอร์ชันถ้าใน ความจริงมันเป็นไปไม่ได้
CodeMed

2
ฉันขอแนะนำให้เปลี่ยนเกณฑ์ "รักษา" ของคุณเป็น "เคอร์เนลที่บูท" แทนที่จะเป็นรุ่นใหม่ล่าสุด - ด้วยเหตุผลหลายประการคุณอาจไม่ได้บูตกับเคอร์เนลใหม่ล่าสุด
Jeff Schaller

คำตอบ:


23

package-cleanup --oldkernels --count=1 ลบเมล็ดทั้งหมดยกเว้นรายการล่าสุด


1
ขอบคุณ Fractal Turtle สำหรับคำตอบสั้น ๆ ฉันต้องการให้คุณเก็บเคอร์เนลล่าสุดอย่างน้อยสองรายการ package-cleanup --oldkernels --count=2
rangsiman

1
package-cleanup --oldkernels --count=1ฉันวิ่ง หลังจากรีบูตฉันยังคงได้รับสองเมล็ด: 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)คุณรู้วิธีที่จะเก็บไว้หรือไม่
Ron

ใครสามารถตอบคำถามของ @Ron
Alireza Mohamadi

1
fyi การล้างแพคเกจเป็นส่วนหนึ่งของ:yum install yum-utils
TiloBunt

8

คำสั่งpackage-cleanupลบเคอร์เนลที่เก่ากว่า ใช้--count=1เพื่อให้ล่าสุด โปรแกรมจะไม่ลบเคอร์เนลที่ใช้อยู่ในปัจจุบัน ("ไม่ลบเคอร์เนล 3.10.0-327.el7 เพราะมันคือเคอร์เนลที่กำลังทำงาน") ดังนั้นคุณอาจจบลงด้วยสองเมล็ดใน / boot ... จนกว่าคุณจะรีบูตแล้ว รันคำสั่ง

ดังนั้นคำสั่งคือ

package-cleanup --oldkernels --count=1 

เอกสาร manpage สามตัวเลือก:

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

ใช้yum upgradeแทนyum update

จากนั้นมันจะเก็บเมล็ดข้าวสามใบเท่านั้น ถ้าคุณใช้updateแล้วมันจะเติมของคุณ/boot


-1

ตามนี้ :

วิ่งrpm -q kernelเพื่อแสดงเคอร์เนลที่ติดตั้ง

จากนั้นเรียกใช้yum remove kernel <shown kernel from output above>เพื่อลบเคอร์เนล

รีบูตคอมพิวเตอร์ของคุณ

แก้ไข: นี่เป็นจริงสำหรับปัญหาของ @ Ron แต่ตรวจสอบให้แน่ใจว่า elrepo kernel ทำงานอย่างถูกต้อง


คุณจะหลีกเลี่ยงการลบเคอร์เนลปัจจุบันได้อย่างไร
Jeff Schaller

IDK คำสั่งเฉพาะสำหรับ @JeffSchaller ฉันเดาว่าเพื่อให้แน่ใจว่าคุณจะไม่ลบเคอร์เนลปัจจุบันคุณ sud ตรวจสอบก่อนโดยใช้uname -rแล้วลบเคอร์เนลที่ไม่ได้ใช้ แต่แสดงจากคำสั่งนั้น
Surya Stefanus
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.