मैं 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 से कम संस्करण हों, यदि में वास्तव में यह संभव नहीं है।
कोडमेन्ड

2
मैं सुझाव दूंगा कि आप अपने "कीप" मानदंड को "बूटेड कर्नेल" के रूप में केवल नए के विपरीत रखें - विभिन्न कारणों से, आप नवीनतम कर्नेल को बूट नहीं कर सकते हैं।
जेफ स्कालर

जवाबों:


23

package-cleanup --oldkernels --count=1 नवीनतम को छोड़कर सभी गुठली हटा दें।


1
संक्षिप्त उत्तर के लिए धन्यवाद भग्न कछुआ। मैं आपको सुरक्षित रूप से कम से कम दो नवीनतम कर्नेल रखना चाहता हूं। package-cleanup --oldkernels --count=2
रांग्सिमन

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), क्या आप जानते हैं कि सिर्फ एक को कैसे रखा जाए?
रॉन

क्या कोई @ रॉन के सवाल का जवाब दे सकता है?
अलीरज़ा मोहम्मदी

1
फी, पैकेज-क्लीनअप का हिस्सा है:yum install yum-utils
TiloBunt

8

आदेश package-cleanupपुराने कर्नेल को हटा देता है। --count=1सिर्फ नवीनतम रखने के लिए उपयोग करें । वर्तमान में उपयोग किए जाने वाले कर्नेल को प्रोग्राम कभी नहीं हटाएगा ("कर्नेल को हटा नहीं रहा है। 3.10.0-327.el7 क्योंकि यह चलने वाला कर्नेल है"), इसलिए आप दो कर्नेल के साथ / बूट ... जब तक आप रिबूट और फिर से नहीं करते हैं, तब तक समाप्त हो सकते हैं। -उनके आदेश को मानें।

तो आज्ञा है

package-cleanup --oldkernels --count=1 

मैनपेज दस्तावेज़ तीन विकल्प:

--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>कर्नेल को हटाने के लिए चलाएँ

कंप्यूटर को रिबूट करें

संपादित करें: यह रॉन की समस्या के लिए वास्तविक कार्य है, लेकिन सुनिश्चित करें कि elrepo कर्नेल सही तरीके से चल रहा है


आप अपनी वर्तमान कर्नेल को हटाने से कैसे बचें?
जेफ स्कालर

उस @JeffSchaller के लिए IDK विशिष्ट कमांड, मुझे लगता है कि यह सुनिश्चित करने के लिए कि आप वर्तमान कर्नेल को नहीं निकाल रहे हैं, u sud इसे पहले चेक करके उपयोग करें uname -rफिर अप्रयुक्त कर्नेल को हटाएं, लेकिन उस कमांड से दिखाया गया है,
सूर्या स्टेफेनस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.