डेवलपर eng.stk के साथ साक्षात्कार भाग 1: उत्पत्ति और कर्नेल विकास

click fraud protection

हमने हाल ही में blu_spark कर्नेल के डेवलपर eng.stk का साक्षात्कार लिया। इस भाग में, हम उनसे उनकी उत्पत्ति और विकास कार्यों के बारे में पूछते हैं।

मुझे हाल ही में XDA के वरिष्ठ सदस्य का साक्षात्कार लेने का मौका मिला eng.stk, ब्लू_स्पार्क कर्नेल का डेवलपर। यह हमारे मंचों पर कई डिवाइसों पर उपलब्ध है, जिनमें Nexus 5, OnePlus 3/T और OnePlus 5T शामिल हैं। इस भाग में, हम eng.stk से उसके विकास की उत्पत्ति के बारे में पूछते हैं और वह ब्लू_स्पार्क कर्नेल कैसे विकसित करता है।


तो सबसे पहले, अपना और अपने कर्नेल का परिचय दें। आपका कर्नेल स्वयं को प्रतिस्पर्धा से कैसे अलग करता है? कर्नेल परिवर्तनों के लिए आपका डिज़ाइन दर्शन क्या है, और आप उनके बारे में कैसे सोचते हैं?

मैं eng.stk हूं और मैं 2010 से XDA पर हूं। आप में से अधिकांश लोग मुझे मेरे कोड_ब्लू और ब्लू_स्पार्क प्रोजेक्ट से जानते हैं :)

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

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

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

निचली पंक्ति, अधिकांश लोगों को पता है कि वे डिवाइस पर कर्नेल को फ्लैश करने के क्षण से ही ब्लू_स्पार्क पर हैं। मैं हमेशा सर्वोत्तम यूएक्स देने के लिए नए सामान और तरीकों की तलाश में रहता हूं। सुरक्षित रूप से।

हमें अपने ब्लू_एक्टिव गवर्नर के बारे में बताएं! यह क्या है, यह क्या करता है और यह विशेष क्यों है?

मैं जानता हूं कि लोग कभी-कभी ब्लू_एक्टिव को ब्लू_स्पार्क समझ लेते हैं। मेरे द्वारा किए जाने वाले बाकी सभी [कार्यों] की तुलना में blu_active बस एक छोटा सा हिस्सा है।

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

नवीनतम पुनरावृत्ति Google की लिनक्स 4.4 एंड्रॉइड शाखा पर आधारित है, जिसमें कुछ अपस्ट्रीम और सीएएफ फिक्स भी हैं, लेकिन पहले की तुलना में बहुत अधिक सरल है। जो आपके पास है उसका पूरा उपयोग करें, जो नहीं है उसे हटा दें। मैं हमेशा स्टॉक सेटिंग्स की तुलना में बेहतर बैटरी प्राप्त करने का प्रयास करता हूं, बैटरी की खपत को कम करता हूं, साथ ही सुधार करने का भी प्रयास करता हूं प्रदर्शन (वास्तविक जीवन का प्रदर्शन, जिसे आप अपनी आंखों और उंगलियों से महसूस करते हैं, सिंथेटिक के साथ नहीं औजार)।

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

ओईएम द्वारा प्रदान किए जाने वाले कौन से अंतर्निहित तंत्र या बदलाव आपको पसंद/नापसंद हैं? यानी क्वालकॉम का इनपुट बूस्ट।

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

मुझे यह भी याद है कि जब उपकरणों में एन्क्रिप्शन हटाना एक बात थी, तब SELinux पुनरावृत्तियों में सभी बदलावों ने बदलाव पेश किए थे, जिससे पिछले हैक एक अलग तरीके से काम करते थे... हाल के कुछ Android सुरक्षा परिवर्तन एक सतत चुनौती हैं। इनमें AVB (कुछ भाग अधिकतर dm-verity के नाम से जाने जाते हैं) शामिल हैं। कुछ अन्य परिवर्तनों ने ट्यूनेबल्स और sysfs स्थानों के लिए प्रतिबंध लगा दिए हैं जिन्हें स्थानांतरित करना पड़ा क्योंकि हमारे पास उन स्थानों तक पहुंच नहीं है जिनके पास पहले था। इनमें से अधिकांश प्रतिबंध स्टॉक रोम (जिसमें मैं अपना अधिकांश काम करता हूं) के लिए अधिक प्रासंगिक हैं, आम तौर पर यह मार्ग प्रशस्त करता है और जब कस्टम रोम (जहां प्रतिबंध कम होते हैं) की बात आती है तो यह आसान हो जाता है।

क्वालकॉम स्नैपड्रैगन 820 और 835 जैसे हाल के एसओसी में, कुछ ओईएम ने यूजरस्पेस से कुछ बूस्ट जोड़े हैं जो स्वागत योग्य हैं और सिस्टम में ब्लाइंड स्पॉट से निपटते हैं, सभी ओईएम सामान खराब नहीं होते हैं। जब कर्नेल स्रोत की बात आती है, तो स्रोत जितना साफ़ और अधिक प्रलेखित होगा, उतना बेहतर होगा।

आप कौन सी अन्य सुविधाएँ शामिल करना पसंद करते हैं? जैसे कि उन्नत रंग नियंत्रण, इत्यादि।

मैं आम तौर पर उन चीज़ों को शामिल नहीं करता हूं जिनका मैं व्यक्तिगत रूप से उपयोग नहीं करता हूं या जो मुझे उपयोगी नहीं लगती हैं। जो काम मुझे करना पसंद है, उसमें ब्लू_एक्टिव के अलावा आर्किटेक्चर ऑप्टिमाइजेशन और फिक्स, क्रिप्टो स्टफ अपडेट, आईओ शेड्यूलिंग और अन्य शामिल हैं। स्टोरेज/फाइलसिस्टम उपहार, केसीएएल, यूएसबी फास्ट चार्ज, कंपन शक्ति, बैटरी/नोटिफिकेशन एलईडी नियंत्रण, वैकलॉक ब्लॉकर्स, वायरगार्ड, वगैरह। मैं हमेशा एक कस्टम बिल्ड टूलचेन के साथ निर्माण करता हूं जैसा कि मैंने पहले कहा था।

आप अपने कर्नेल के लिए किस परीक्षण पद्धति का उपयोग करते हैं? क्या आप उपयोगकर्ता रिपोर्ट, या बेंचमार्क या किसी अन्य कस्टम रूटीन का उपयोग करते हैं?

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

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

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

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


भाग 2 देखें: F2FS, EAS और इच्छुक कर्नेल डेवलपर्स के लिए युक्तियाँ