क्या लिनक्स कर्नेल के कई संस्करण होना अच्छा है?


14

एक बार, मैं कुछ कर्नेल पैच स्थापित कर रहा था और एक लाइव सर्वर पर कुछ गलत हो गया था जहां हमारे सैकड़ों ग्राहक थे। सिस्टम में केवल एक कर्नेल था। इसलिए, सर्वर कुछ समय के लिए डाउन हो गया था, और एक लाइव सीडी का उपयोग करते हुए, हमने सिस्टम को ऊपर और चालू किया और आगे की मरम्मत का काम किया।

अब मेरा प्रश्न: क्या कर्नेल के 2 संस्करण होना एक अच्छा विचार है, ताकि यदि कर्नेल दूषित हो जाए तो हम हमेशा उपलब्ध अन्य कर्नेल के साथ रिबूट कर सकते हैं? कृपया मुझे बताओ।

इसके अलावा, क्या एक ही कर्नेल के 2 संस्करण होना संभव है? ताकि मैं एक और कर्नेल चुन सकूं जब कर्नेल भ्रष्टाचार हो?

Edited:
My Server Details:
2.6.32-431.el6.x86_64
CentOS release 6.5 (Final)

मेरे पास इस कर्नेल की समान प्रतिलिपि कैसे हो सकती है, ताकि जब मेरा कर्नेल भ्रष्ट हो जाए, तो मैं बैकअप कर्नेल शुरू कर सकता हूं?


4
यह मुझे लगता है कि आपने अपने प्रश्न का उत्तर दिया है। जब तक आप जानते हैं कि वे आपके सिस्टम के साथ काम करते हैं, तब तक कई कर्नेल रखने के लिए कोई नकारात्मक पहलू नहीं है, और यह कभी-कभी उपयोगी हो सकता है यदि आप किसी कारण से किसी विशेष कर्नेल की समस्याओं में भाग लेते हैं।
फहीम मीठा

धन्यवाद, हो सकता है कि मैंने qns को सही तरीके से नहीं पूछा। मेरे पास इस कर्नेल की एक ही प्रतिलिपि कैसे हो सकती है, ताकि जब मेरा कर्नेल दूषित हो जाए, तो मैं बैकअप कर्नेल शुरू कर सकता हूं?
मणि

2
सुनिश्चित करें कि आपके पास समान कर्नेल हो सकता है। डिस्क पर कर्नेल सिर्फ एक फाइल है। आप अपने मौजूदा कर्नेल को थोड़े अलग नाम से कॉपी कर सकते हैं।
फहीम मीठा

एक सर्वर पर जो मुझे विरासत में मिला, उसमें 8 अलग-अलग गुठली के लिए 16 बूट प्रविष्टियां थीं ... आप जानते हैं, जब तक मैंने इसे साफ नहीं किया
कनाडाई ल्यूक

मैं आमतौर पर पिछले कर्नेल को कुछ गलत होने की स्थिति में रखता हूं।
जोशुआ

जवाबों:


18

RedHat और डेबियन-आधारित वितरण दोनों ही कर्नेल के कई संस्करणों को रखते हैं जब आप एक नया प्रयोग करते हैं yumया apt-getडिफ़ॉल्ट रूप से। यह एक अच्छा अभ्यास माना जाता है और वास्तव में आपके द्वारा वर्णित केस के लिए किया जाता है: यदि कुछ नवीनतम कर्नेल के साथ कुछ गलत हो जाता है, तो आप हमेशा रिबूट कर सकते हैं और पिछले कर्नेल में से एक का उपयोग करके बूट करने के लिए चुनते हैं।

RedHat डिस्ट्रोस में आप सेटिंग के /etc/yum.confसाथ रखने के लिए गुठली की संख्या को नियंत्रित करते installonly_limitहैं। मेरे नए CentOS 7 पर इसे डिफॉल्ट में 5 पर स्थापित करें।

इसके अलावा अगर RedHat पर आप RPM पैकेज से नए कर्नेल स्थापित कर रहे हैं rpm -ivh, rpm -Uvhजिसका आपको उपयोग करना चाहिए , न कि : पूर्व में पुराने कर्नेल को रखा जाएगा, जबकि बाद में इसे बदल देगा।

डेबियन पुरानी गुठली रखती है लेकिन स्वचालित रूप से उन्हें नहीं हटाती है। यदि आपको अपने बूट विभाजन को मुक्त करने की आवश्यकता है, तो आपको पुराने कर्नेल को मैन्युअल रूप से निकालना होगा (पिछले कर्नेल में से कम से कम एक को छोड़ने के लिए याद रखें)। सभी कर्नेल-इंस्टॉलेशन और कर्नेल-हेडर पैकेजों की सूची का उपयोग करने के लिए dpkg -l | egrep "linux-(im|he)"

अपने प्रश्न का उत्तर देना - इसके अलावा, क्या एक ही कर्नेल का 2 संस्करण होना संभव है? -- हाँ यह संभव है। मैं इसे अभी CentOS 6.5 पर नहीं देख सकता, लेकिन CentOS 7 पर मैं /bootडायरेक्टरी के कर्नेल से संबंधित फाइलों को डुप्लिकेट करके और ग्रब मेनू के पुनर्निर्माण द्वारा वांछित परिणाम प्राप्त करने में सक्षम था :

cd /boot

# Duplicate kernel files; 
# "3.10.0-123.el7" is a substring in the name of the current kernel
ls -1 | grep "3.10.0-123.el7" | { while read i; \
    do cp $i $(echo $i | sed 's/el7/el7.backup/'); done; }

# Backup the grub configuration, just in case
cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.backup

# Rebuild grub configuration
grub2-mkconfig -o /boot/grub2/grub.cfg

# At this point you can reboot and see that a new kernel is available 
# for you to choose in GRUB menu

धन्यवाद, मैं इस पर काम कर रहा हूं। लेकिन सेंटोस 6.5 में, "ग्रब 2-एमकॉन्फिग" नहीं है। क्या आप जानते हैं, यह सेंटोस 6.5 में कैसे किया जाता है, मुझे लगता है कि ग्रब 2 केवल सेंटोस 7. में उपलब्ध है
मणि

मैंने उन पंक्तियों को नीचे दिए गए Centos 6.5 के अनुरूप संशोधित किया और grub.conf को अपडेट करने के तरीके के साथ अटक गया। एलएस -1 | grep "2.6.32-431.el6" | {पढ़ते समय मैं; \ do cp $ i $ (इको $ i। sed 's / el6 / el6.backup /'); किया हुआ; } cp /boot/grub/grub.conf cp /boot/grub/grub.conf.backup
मणि

बहुत बहुत धन्यवाद!!! यह काम किया और मैं इस तरह संशोधित किया ls -1 | grep "2.6.32-431.el6" | {पढ़ते समय मैं; \ do cp $ i $ (इको $ i। sed 's / el6 / el6.backup /'); किया हुआ; } cp /boot/grub/grub.conf cp /boot/grub/grub.conf.backup और मैंने मैन्युअल रूप से grup.conf संपादित किया है। आप UUID को समान रख सकते हैं, यदि आप एक ही डिस्क और विभाजन में कॉपी करने जा रहे हैं।
मणि

7

हां, यह संभव है और मैं भी उचित कहूंगा। आपको बस विकल्प की पेशकश करने के लिए बूट प्रक्रिया सेट करने की आवश्यकता है। आमतौर पर यह बूट लोडर कॉन्फ़िगरेशन में किया जाता है - आमतौर पर आप केवल उस प्रविष्टि की नकल कर सकते हैं और कर्नेल छवि फ़ाइल नाम और बूट मेनू प्रविष्टि लेबल को बदल सकते हैं।

एक प्रोडक्शन सर्वर पर यह आमतौर पर कोई समस्या नहीं होती है, लेकिन जब भी आप कर्नेल को अपग्रेड करते हैं तो बैकअप का मौजूद होना एक अच्छा विचार है। कुछ लिनक्स वितरण रोलबैक (आमतौर पर फाइल सिस्टम स्नैपशॉट क्षमताओं द्वारा समर्थित) पैकेज अपडेट पर प्रक्रिया को यथासंभव दर्दनाक बनाने के लिए प्रदान करते हैं, लेकिन यहां तक ​​कि उन मामलों में भी मैं एक बैकअप तैयार रखना चाहूंगा।

एक ही कर्नेल की कई प्रतियाँ होने के कारण - यहाँ तक कि यह भी समझ में आता है, लेकिन जैसा कि @goldilocks नीचे टिप्पणी में बताते हैं, यदि आपका कर्नेल दूषित हो जाता है तो आपको हार्डवेयर को बदलने के बारे में सोचना चाहिए। दूसरी ओर डुप्लिकेट को एक अलग भौतिक एचडीडी पर रखने से आप कुछ परेशानियों से बच सकते हैं। लेकिन ध्यान रखें, कर्नेल छवि फ़ाइल का उपयोग केवल बूट के दौरान किया जाता है।


मैंने qns को संशोधित किया है, कृपया मुझे बताएं, बैकअप कर्नेल कैसे करें? (अधिमानतः एक ही संस्करण)
मणि

3
आपको कुछ भी नहीं करना चाहिए, वे पहले से ही वहाँ हैं - लेकिन विभिन्न संस्करणों में। दो समान संस्करण होने का कोई मतलब नहीं है जब तक कि आप उनमें से किसी एक को स्वयं संकलित नहीं करते हैं, अन्यथा वे केवल समान प्रतियां हैं। "भ्रष्टाचार" का मुद्दा फर्जी है - उस तर्क से आपको पूरी प्रणाली की दो समान प्रतियों की आवश्यकता होगी अगर bashबाइनरी भ्रष्ट libcथे, भ्रष्ट थे, आदि सभी जो सिस्टम को बेकार कर देंगे। इन फ़ाइलों को "दूषित" नहीं होना चाहिए। यदि वे हैं, तो अपने हार्डवेयर को बदलें।
गोल्डीलॉक्स

1
@goldilocks या अपने sysadmin को बदलें, यह इस बात पर निर्भर करता है कि गलती कहाँ थी।
फिलिप केंडल

@goldilocks अद्यतन उत्तर देखते हैं - यह विशिष्ट मामलों में समझ में आ सकता है। जाहिर है, जब भी संभव हो दोषपूर्ण हार्डवेयर की जगह पसंद की जानी चाहिए।
१६
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.