Linux kernel के स्टेबल रिलीज़ मॉडल की शुरुआत 2005 में हुई थी. तब यह पता चला था कि मौजूदा kernel डेवलपमेंट मॉडल (हर दो से तीन महीने में एक नई रिलीज़) से ज़्यादातर उपयोगकर्ताओं की ज़रूरतें पूरी नहीं हो रही हैं. उपयोगकर्ताओं को उन दो से तीन महीनों के दौरान, बग ठीक करने की ज़रूरत थी. साथ ही, Linux डिस्ट्रिब्यूशन को कर्नेल कम्यूनिटी के सुझावों के बिना, कर्नेल को अप-टू-डेट रखना मुश्किल हो रहा था. आम तौर पर, अलग-अलग कर्नेल को सुरक्षित रखने और उनमें गड़बड़ियों को ठीक करने के लिए, कई लोगों ने काफ़ी मेहनत की है.
स्टेबल कर्नेल रिलीज़, सीधे तौर पर Linus Torvalds की रिलीज़ पर आधारित होती हैं. ये रिलीज़, हर हफ़्ते या इससे ज़्यादा समय के अंतराल पर होती हैं. ये रिलीज़, कई बाहरी चीज़ों (साल का समय, उपलब्ध पैच, रखरखाव करने वाले का काम का बोझ वगैरह) पर निर्भर करती हैं. स्टेबल रिलीज़ की संख्या, कर्नेल रिलीज़ की संख्या से शुरू होती है और उसके आखिर में एक और संख्या जोड़ी जाती है. उदाहरण के लिए, Linus ने 4.4 कर्नेल रिलीज़ किया है. इसके बाद, इस कर्नेल के आधार पर रिलीज़ किए गए स्टेबल कर्नेल को 4.4.1, 4.4.2, 4.4.3 वगैरह नंबर दिए जाते हैं. आम तौर पर, स्थिर कर्नेल रिलीज़ ट्री के बारे में बताते समय, इस क्रम को छोटा करके 4.4.y लिखा जाता है. हर स्टेबल कर्नेल रिलीज़ ट्री को एक कर्नेल डेवलपर मैनेज करता है. इसकी ज़िम्मेदारी, रिलीज़ के लिए ज़रूरी पैच चुनने और समीक्षा/रिलीज़ की प्रोसेस को मैनेज करने की होती है.
स्टेबल कर्नेल, मौजूदा डेवलपमेंट साइकल के दौरान बनाए जाते हैं. जब Linus नया कर्नेल रिलीज़ करता है, तो पिछले स्टेबल कर्नेल रिलीज़ ट्री को बंद कर दिया जाता है. साथ ही, उपयोगकर्ताओं को रिलीज़ किए गए नए कर्नेल पर स्विच करना होता है.
लंबे समय तक काम करने वाले स्टेबल कर्नेल
स्टेबल रिलीज़ की इस नई प्रोसेस को एक साल तक इस्तेमाल करने के बाद, यह पता चला कि Linux के कई अलग-अलग उपयोगकर्ताओं को, कुछ महीनों के बजाय ज़्यादा समय तक के लिए कर्नेल का इस्तेमाल करना है. इस वजह से, लंबे समय तक सहायता (एलटीएस) वाला कर्नेल रिलीज़ किया गया. पहला एलटीएस कर्नेल (2.6.16) 2006 में रिलीज़ किया गया था. तब से, साल में एक बार नया LTS कर्नेल चुना जाता है और कर्नेल कम्यूनिटी उस कर्नेल को कम से कम दो साल तक मैनेज करती है.
इस लेख को लिखने के समय, LTS कर्नेल 4.4.y, 4.9.y, 4.14.y, 4.19.y, 5.4.y, और 5.10.y रिलीज़ हैं. हर हफ़्ते एक नया कर्नेल रिलीज़ किया जाता है. कुछ उपयोगकर्ताओं और डिस्ट्रिब्यूशन की ज़रूरतों के मुताबिक, कुछ और पुराने कर्नेल को रिलीज़ साइकल में धीमी रफ़्तार से डेवलपर मैनेज करते हैं. लंबे समय तक काम करने वाले सभी स्थिर कर्नेल, उनके लिए ज़िम्मेदार व्यक्ति, और उन्हें कितने समय तक मैनेज किया जाता है, इसकी जानकारी kernel.org रिलीज़ पेज पर मिल सकती है.
LTS कर्नेल रिलीज़ में, हर दिन औसतन 6 से 8 पैच स्वीकार किए जाते हैं. वहीं, सामान्य और स्थिर कर्नेल रिलीज़ में हर दिन 10 से 15 पैच होते हैं. पैच की संख्या, हर रिलीज़ के हिसाब से बदलती रहती है. इसकी वजह, डेवलपमेंट के लिए इस्तेमाल किए जा रहे कर्नेल की रिलीज़ का मौजूदा समय और अन्य बाहरी वैरिएबल हैं. एलटीएस कर्नेल जितना पुराना होगा, उस पर उतने ही कम पैच लागू होंगे. ऐसा इसलिए, क्योंकि गड़बड़ी को ठीक करने वाले कई नए पैच, पुराने कर्नेल पर काम नहीं करते. हालांकि, कोडबेस में हुए बदलावों की वजह से, किसी पुराने कर्नेल में ज़रूरी बदलाव लागू करना मुश्किल होता है. इसलिए, LTS कर्नेल में कम पैच लागू किए जा सकते हैं. हालांकि, सामान्य और स्थिर कर्नेल को बनाए रखने की तुलना में, LTS कर्नेल को बनाए रखने में ज़्यादा मेहनत लगती है.
स्टेबल kernel पैच के नियम
स्टेबल कर्नेल रिलीज़ में क्या जोड़ा जा सकता है, इसके नियम शुरू होने से लेकर अब तक एक जैसे ही रहे हैं. इन नियमों के बारे में यहां खास जानकारी दी गई है:
- यह सही और जांचा गया होना चाहिए.
- इसमें 100 से ज़्यादा लाइनें नहीं होनी चाहिए.
- सिर्फ़ एक चीज़ ठीक करनी होगी.
- ऐसी समस्या को ठीक करना ज़रूरी है जिसकी शिकायत की गई है.
- यह हार्डवेयर के लिए नया डिवाइस आईडी या कोई समस्या हो सकती है. हालांकि, इसमें कोई नई सुविधा नहीं जोड़ी जाती.
- यह पहले से ही Linus Torvalds के ट्री में मर्ज होना चाहिए.
आखिरी नियम, "लिनस टॉर्वाल्ड्स के ट्री में पहले से मर्ज होना चाहिए", इससे कर्नेल कम्यूनिटी को सुधारों का फ़ायदा मिलता है. कम्यूनिटी कभी भी किसी ऐसे ठीक किए गए वर्शन को स्थिर कर्नेल रिलीज़ में शामिल नहीं करना चाहती जो पहले से ही Linus Torvalds के ट्री में मौजूद न हो. ऐसा इसलिए किया जाता है, ताकि अपग्रेड करने वाले किसी भी व्यक्ति को कभी भी कोई समस्या न आए. इससे कई समस्याओं से बचा जा सकता है, जो उन अन्य प्रोजेक्ट में आ सकती हैं जो एक स्थिर और डेवलपमेंट शाखा को बनाए रखते हैं.
कर्नेल से जुड़े अपडेट
Linux kernel कम्यूनिटी ने अपने उपयोगकर्ताओं से वादा किया है कि कोई भी अपग्रेड, पिछले वर्शन में काम करने वाली किसी भी चीज़ को कभी भी बंद नहीं करेगा. यह वादा आज भी सही है. रिग्रेशन की समस्याएं होती हैं, लेकिन ये सबसे ज़्यादा प्राथमिकता वाले बग होते हैं. इन्हें तुरंत ठीक कर दिया जाता है या रिग्रेशन की वजह बने बदलाव को Linux kernel tree से तुरंत वापस ले लिया जाता है.
यह वादा, स्टेबल वर्शन के लिए किए जाने वाले छोटे-मोटे अपडेट और हर तीन महीने में होने वाले बड़े अपडेट, दोनों के लिए लागू होता है. हालांकि, कोर कम्यूनिटी सिर्फ़ उस कोड के लिए यह वादा कर सकती है जिसे Linux कोर ट्री में मर्ज किया गया है. डिवाइस के कर्नेल में जो कोड मर्ज किया गया है और जो kernel.org रिलीज़ में मौजूद नहीं है उसे अज्ञात माना जाता है. साथ ही, इसकी इंटरैक्शन रणनीति कभी भी तय नहीं की जा सकती या इस पर विचार भी नहीं किया जा सकता.
Linux पर काम करने वाले जिन डिवाइसों में बड़े पैच सेट हैं उन्हें नए कर्नेल पर अपडेट करने में बड़ी समस्याएं आ सकती हैं. इसकी वजह यह है कि हर रिलीज़ के बीच काफ़ी बदलाव होते हैं. हर रिलीज़ में 10 से 14 हज़ार बदलाव होते हैं. SoC पैचसेट को नए कर्नेल में अपडेट करने में समस्याएं आती हैं. इसकी वजह यह है कि इनका साइज़ बड़ा होता है और इनमें खास तौर पर, आर्किटेक्चर और कभी-कभी कर्नेल के कोड में काफ़ी बदलाव किए जाते हैं. इस वजह से, ज़्यादातर SoC वेंडर अपने डिवाइसों के लिए एलटीएस रिलीज़ का इस्तेमाल करने की सुविधा दे रहे हैं. इससे, उन डिवाइसों को सीधे Linux kernel कम्यूनिटी से बग और सुरक्षा से जुड़े अपडेट मिल पाएंगे.
सुरक्षा
कर्नेल रिलीज़ करते समय, Linux कर्नेल कम्यूनिटी कभी भी किसी खास बदलाव को सुरक्षा से जुड़े सुधार के तौर पर नहीं बताती. ऐसा इसलिए होता है, क्योंकि बग ठीक करने के लिए बनाए गए पैच को बनाने के समय यह तय करना मुश्किल होता है कि वह सुरक्षा से जुड़ा है या नहीं. साथ ही, कई गड़बड़ियों को ठीक करने के बाद ही यह पता चलता है कि वे सुरक्षा से जुड़ी हैं. इसलिए, कर्नेल कम्यूनिटी का सुझाव है कि रिलीज़ किए गए सभी गड़बड़ियों को ठीक करने वाले अपडेट हमेशा लागू करें.
जब सुरक्षा से जुड़ी समस्याओं की शिकायत कर्नेल कम्यूनिटी से की जाती है, तो उन्हें जल्द से जल्द ठीक कर दिया जाता है. साथ ही, उन्हें डेवलपमेंट ट्री और स्थिर रिलीज़ में सार्वजनिक तौर पर पब्लिश कर दिया जाता है. जैसा कि ऊपर बताया गया है, इन बदलावों को कभी भी "सुरक्षा से जुड़ी गड़बड़ी को ठीक करने वाला बदलाव" नहीं कहा जाता. इसके बजाय, इन्हें कर्नेल के लिए किसी भी अन्य गड़बड़ी को ठीक करने वाले बदलाव की तरह ही माना जाता है. ऐसा इसलिए किया जाता है, ताकि समस्या की शिकायत करने वाले व्यक्ति के एलान करने से पहले, जिन लोगों पर असर पड़ा है वे अपने सिस्टम अपडेट कर सकें.
सुरक्षा से जुड़े बग को जल्द से जल्द ठीक करने के लिए, kernel कम्यूनिटी को उनकी शिकायत करने के बारे में जानकारी पाने के लिए, www.kernel.org पर Linux kernel के उपयोगकर्ता और एडमिन के लिए गाइड में जाकर, सुरक्षा से जुड़े बग देखें.
सुरक्षा से जुड़ी गड़बड़ियों के बारे में, कर्नेल टीम सार्वजनिक तौर पर नहीं बताती. इसलिए, आम तौर पर Linux कर्नेल से जुड़ी समस्याओं के लिए CVE नंबर, ठीक होने के हफ़्तों, महीनों, और कभी-कभी सालों बाद रिलीज़ किए जाते हैं. ऐसा तब होता है, जब उन्हें स्टेबल और डेवलपमेंट ब्रैंच में मर्ज कर दिया जाता है.
सुरक्षित सिस्टम का इस्तेमाल करना
हमारा सुझाव है कि Linux का इस्तेमाल करने वाले डिवाइस को डिप्लॉय करते समय, मैन्युफ़ैक्चरर सभी LTS कर्नेल अपडेट ले और उपयोगकर्ताओं को तब ही अपडेट उपलब्ध कराए, जब सही तरीके से जांच करके यह पता चल जाए कि अपडेट सही तरीके से काम करता है. इसके कई फ़ायदे हैं:
- रिलीज़ की समीक्षा, कर्नेल डेवलपर ने पूरी रिलीज़ के हिसाब से की है, न कि अलग-अलग हिस्सों के हिसाब से.
- यह पता लगाना मुश्किल है कि कौनसे पैच "सुरक्षा" से जुड़ी समस्याओं को ठीक करते हैं और कौनसे नहीं. एलटीएस के ज़्यादातर वर्शन में, कम से कम एक ऐसा सुधार होता है जो सुरक्षा से जुड़ी किसी समस्या को ठीक करता है. हालांकि, कई सुधारों के बारे में अभी तक "जानकारी नहीं है".
- अगर जांच में कोई समस्या दिखती है, तो उसे हल करने के लिए, कर्नेल डेवलपर कम्यूनिटी तुरंत कार्रवाई करती है.
- सिर्फ़ उन बदलावों को फ़िल्टर करने की कोशिश करने पर, आपको एक ऐसा कर्नेल ट्री मिलता है जिसे आने वाले समय में अपस्ट्रीम रिलीज़ के साथ सही तरीके से मर्ज नहीं किया जा सकता.