บทสัมภาษณ์นักพัฒนา eng.stk ตอนที่ 1: ต้นกำเนิดและการพัฒนาเคอร์เนล

เมื่อเร็ว ๆ นี้เราได้สัมภาษณ์ eng.stk ผู้พัฒนาเคอร์เนล blu_spark ในส่วนนี้เราจะถามเขาเกี่ยวกับต้นกำเนิดและงานพัฒนาของเขา

ฉันเพิ่งมีโอกาสสัมภาษณ์สมาชิกอาวุโสของ XDA ภาษาอังกฤษ.stkผู้พัฒนาเคอร์เนล blu_spark มีให้บริการในอุปกรณ์ต่างๆ ในฟอรัมของเรา รวมถึง Nexus 5, OnePlus 3/T และ OnePlus 5T ในส่วนนี้ เราจะถาม eng.stk เกี่ยวกับต้นกำเนิดในการพัฒนา และวิธีที่เขาพัฒนาเคอร์เนล blu_spark


ก่อนอื่นเลย แนะนำตัวเองและเคอร์เนลของคุณก่อน เคอร์เนลของคุณแตกต่างจากคู่แข่งอย่างไร ปรัชญาการออกแบบของคุณสำหรับการเปลี่ยนแปลงเคอร์เนลคืออะไร และคุณจะทำอย่างไร

ฉัน eng.stk และใช้งาน XDA มาตั้งแต่ปี 2010 พวกคุณส่วนใหญ่รู้จักฉันจากโปรเจ็กต์ code_blue และ blu_spark ของฉัน :)

ฉันเริ่มต้นบน XDA ด้วยการเขียนสคริปต์และเครื่องมือเบ็ดเตล็ด การแฮ็กเฟรมเวิร์ก ฉันได้ทำธีมมากมายเช่นกัน... ในช่วงเวลาที่ฉันอยู่ที่นี่ ฉันยังได้ร่วมงานโดยตรงกับบางโปรเจ็กต์เช่น Purity ROM, Universal Kernel Manager, Kernel Adiutor และล่าสุดคือ Magisk และ WireGuard เพียงเพื่อชื่อไม่กี่ เมื่อเร็ว ๆ นี้ฉันได้ทำงาน TWRP บ้างเช่นกัน (โดยเฉพาะบนอุปกรณ์ OnePlus) โมดูล Magisk และเครื่องมือ / แฮ็กอื่น ๆ [นั่น] มีประโยชน์ในช่วงวงจรชีวิตของโครงการเคอร์เนลของฉัน (มีบางสิ่งไปที่ XDA Portal ถ้าฉันจำได้ อย่างถูกต้อง) เคอร์เนล blu_spark เริ่มไม่เพียงแต่เป็นเคอร์เนลเท่านั้น แต่ยังเป็นประสบการณ์รอบด้านระหว่างเคอร์เนล, ทูลเชน, การกู้คืน, ธีม, เครื่องมือ, สคริปต์ ฯลฯ แต่งานเคอร์เนลคือสิ่งที่ฉันชอบมากที่สุดและเป็นสิ่งที่ขับเคลื่อนฉัน

ฉันสนุกกับการแฮ็กและสร้างโค้ด/สคริปต์อยู่เสมอเมื่อฉันมีโอกาส (การแยกชิ้นส่วนของเล่นอิเล็กทรอนิกส์และการเขียนโค้ดพื้นฐานบน Commodore 64 ของลูกพี่ลูกน้องของฉันเป็นเรื่องสนุก) สำหรับฉัน การเขียนโค้ดไม่ใช่หนทางสู่จุดจบ แต่เป็นเพียงเครื่องมือเหมือนกับเครื่องมืออื่นๆ ที่ช่วยให้บรรลุวัตถุประสงค์ที่กำหนดไว้ งานและรากฐานที่จริงจังกว่าของฉันส่วนใหญ่เสร็จสิ้นเมื่อฉันค้นพบ Linux ในช่วงวัยรุ่นหรือวัยยี่สิบต้นๆ ต่อมา ในช่วงมหาวิทยาลัย ระบบปฏิบัติการ Android เป็นก้าวต่อไปสำหรับฉัน ความฝันของคนจรจัดจริงๆ ที่ซึ่งฮาร์ดแวร์หรือซอฟต์แวร์สามารถเล่นได้มากมาย

คำที่ดีที่สุดในการอธิบาย blu_spark คือการเพิ่มประสิทธิภาพและความเสถียร คนใช้ก็รู้ดีว่าวางใจได้ การสร้างเคอร์เนลของฉันค่อนข้าง 'สต็อก' ในลักษณะที่ฉันมักจะไม่ลบบางสิ่งที่มีอยู่ออกจากกล่อง โดยเก็บทุกอย่างไว้เป็นทางเลือกเพื่อให้ผู้คนสามารถเลือกได้ ฉันไม่ชอบเพิ่มอะไรมากเกินไป ฉันแค่เปลี่ยนหรือเพิ่มสิ่งที่ฉันคิดว่าดีที่สุดสำหรับแต่ละฟิลด์ที่กำหนด ไดรเวอร์ความถี่ของ CPU, ตัวกำหนดเวลา IO, โปรโตคอลเครือข่าย, ระบบไฟล์ ฯลฯ หรือปรับแต่งการปรับแต่งบางอย่างสำหรับพารามิเตอร์ที่กำหนดหรืออัปสตรีมไดรเวอร์บางตัวเพื่อให้ได้ผลลัพธ์ที่ดีที่สุด ฉันยังสร้าง toolchains ที่สร้างขึ้นเอง (จาก Linaro ซึ่งใช้ GCC ได้อย่างยอดเยี่ยม) โดยส่วนใหญ่เพื่อให้ได้ประโยชน์สูงสุดจากสถาปัตยกรรม

สรุป คนส่วนใหญ่รู้ว่าพวกเขาอยู่บน blu_spark นับตั้งแต่วินาทีที่พวกเขาแฟลชเคอร์เนลบนอุปกรณ์ ฉันมองหาสิ่งใหม่ๆ และวิธีมอบ UX ที่ดีที่สุดอยู่เสมอ อย่างปลอดภัย

บอกเราเกี่ยวกับผู้ว่าราชการ blu_active ของคุณ! มันคืออะไร มันทำอะไร และทำไมมันถึงพิเศษ?

ฉันรู้ว่าบางครั้งผู้คนสับสนระหว่าง blu_active กับ blu_spark blu_active เป็นเพียงส่วนเล็กๆ เมื่อเทียบกับงานอื่นๆ ทั้งหมดที่ฉันทำ

โดยพื้นฐานแล้ว CPU Governor จะทำการตัดสินใจเพื่อเพิ่มความถี่ของ CPU ขึ้นหรือลง ตามความต้องการของระบบ ผู้ว่าราชการมีการเปลี่ยนแปลงและการเปลี่ยนแปลงหลายอย่างตั้งแต่เริ่มต้น เช่นเดียวกับทุกสิ่งทุกอย่างที่ฉันทำ ฉันต้องการบางสิ่งบางอย่างที่สนองความต้องการของฉัน มันขึ้นอยู่กับผู้ว่าการรัฐคนโปรดของฉัน ซึ่งเป็นผู้ว่าการแบบโต้ตอบ ในตอนแรกฉันแค่ใส่เนื้อหาต้นทางลงไป แต่จากนั้นฉันก็เริ่มเพิ่มสิ่งอื่นๆ เช่น การอัปเดตหรือตรรกะของ CAF ที่ฉันเคยเห็นใน Governor อื่นๆ ที่ฉันพบว่ามีประโยชน์ ฉันยังได้เพิ่มความเข้ากันได้ของ HMP และคุณสมบัติอื่นๆ อีกด้วย

การทำซ้ำครั้งล่าสุดนั้นอิงตามสาขา Android ของ Linux 4.4 ของ Google พร้อมด้วยการแก้ไขอัพสตรีมและ CAF บางอย่างด้วย แต่มีขนาดเล็กลงกว่าเดิมมาก แค่ใช้สิ่งที่คุณมีให้เต็มที่ ลบสิ่งที่คุณไม่มีออกไป ฉันมักจะพยายามใช้แบตเตอรี่ที่ดีกว่าการตั้งค่าสต็อก ลดการสิ้นเปลือง และพยายามปรับปรุง การแสดง (การแสดงในชีวิตจริง เป็นการแสดงที่คุณสัมผัสได้ด้วยตาและนิ้ว ไม่ใช่ด้วยสิ่งสังเคราะห์ เครื่องมือ)

มีอยู่ช่วงหนึ่ง ฉันต้องการการปรับแต่งแบบง่ายๆ เพื่อให้ผู้คนสามารถเล่นกับการแสดงด้วยวิธีง่ายๆ นี่คือวิธีที่ Fastlane ถือกำเนิด :) ตรรกะค่อนข้างคล้ายกับวิธีการทำงานของ Honda VTEC: เล่นกับการกำหนดเวลาจากเกณฑ์ที่กำหนด ดังนั้น ด้วยสวิตช์ธรรมดาและค่าเกณฑ์ที่แปรผัน ผู้ใช้จึงสามารถปรับขนาดความถี่ cpu ได้อย่างตรงและเชิงรุกมากขึ้น ทำให้เข้าไม่ช้าก็เร็วตามโหลดของระบบ โดยข้ามโหลดเป้าหมาย สามารถทำงานร่วมกับ HMP ได้อย่างสมบูรณ์ และสามารถปรับแต่งต่อคลัสเตอร์ได้ตามความต้องการของผู้คน และปรับแต่งอย่างละเอียดสำหรับอุปกรณ์แต่ละเครื่องที่คลัสเตอร์ทำงานอยู่

กลไกหรือการปรับแต่งในตัวใดที่คุณชอบ/ไม่ชอบที่ OEM มอบให้ เช่นการเพิ่มอินพุตของ Qualcomm

การเพิ่มพื้นที่ผู้ใช้และการปรับแต่งอื่นๆ ที่ตั้งค่าไว้ใน HAL (Hardware Abstraction Layers) เฟรมเวิร์กแบบฮาร์ดโค้ด ฯลฯ บางครั้งอาจสร้างความรำคาญได้ แน่นอนว่า เป็นที่รู้กันว่านักพัฒนาเคอร์เนลสามารถหลีกเลี่ยงสิ่งเหล่านี้บน Nexus 5 ได้ ตัวอย่างเช่น พวกเราส่วนใหญ่กำจัด mpdecision ออกไป และได้รับ hotplug แบบกำหนดเอง - เรามี blu_plug อยู่ในสถานที่ในขณะนั้น อุปกรณ์อื่นๆ บางตัวมีการจัดการระบายความร้อนที่ไม่ดี และการควบคุมความร้อนแบบกำหนดเองพร้อม sysfs สำหรับระดับอุณหภูมิ ความถี่ในการบรรเทา ฯลฯ อุปกรณ์รุ่นใหม่บางรุ่นมีนโยบายที่เข้มงวดเกี่ยวกับแบตเตอรี่ การถอดปลั๊กแกน และสิ่งอื่นๆ ใน "ระดับต่ำ" ซึ่งไม่ได้ทำให้การใช้งานอุปกรณ์เพิ่มขึ้นอย่างแท้จริง ตามความเป็นจริง บางครั้งมันก็ทำลายประสบการณ์ผู้ใช้ ดังนั้นจึงจำเป็นต้องลดเทคโนโลยี CTL และ BCL

ฉันยังจำได้ว่าลบการเข้ารหัสในอุปกรณ์เมื่อเป็นเช่นนั้น การเปลี่ยนแปลงทั้งหมด การทำซ้ำของ SELinux ทำให้เกิดการเปลี่ยนแปลงที่ทำให้การแฮ็กก่อนหน้านี้ทำงานในลักษณะที่แตกต่างออกไป... การเปลี่ยนแปลงด้านความปลอดภัยของ Android ล่าสุดบางอย่างถือเป็นความท้าทายอย่างต่อเนื่อง ซึ่งรวมถึง AVB (บางส่วนส่วนใหญ่เรียกว่า dm-verity) การเปลี่ยนแปลงอื่นๆ บางอย่างทำให้เกิดข้อจำกัดสำหรับการปรับแต่งและตำแหน่ง sysfs ที่ต้องย้ายเนื่องจากเราไม่สามารถเข้าถึงตำแหน่งเดิมที่เราเคยมีมาก่อน ข้อจำกัดเหล่านี้ส่วนใหญ่เกี่ยวข้องกับ ROM หุ้นมากกว่า (ซึ่งฉันทำงานส่วนใหญ่) โดยปกติแล้วจะปูทางและทำให้ง่ายขึ้นเมื่อพูดถึง ROM แบบกำหนดเอง (ซึ่งมีข้อจำกัดต่ำกว่า)

ใน SoC ล่าสุด เช่น Qualcomm Snapdragon 820 และ 835 OEM บางรายได้เพิ่มการเพิ่มประสิทธิภาพจากพื้นที่ผู้ใช้ที่ยินดีและจัดการกับจุดบอดในระบบ ไม่ใช่ว่า OEM ทั้งหมดจะแย่ เมื่อพูดถึงแหล่งที่มาของเคอร์เนล ยิ่งแหล่งที่มาสะอาดและมีเอกสารบันทึกไว้มากเท่าไรก็ยิ่งดีเท่านั้น

คุณต้องการรวมคุณสมบัติอื่นใดอีกบ้าง? เช่นการควบคุมสีขั้นสูงเป็นต้น

ปกติฉันจะไม่รวมสิ่งที่ฉันไม่ได้ใช้เป็นการส่วนตัวหรือพบว่ามันไม่มีประโยชน์ สิ่งที่ฉันชอบทำ นอกเหนือจาก blu_active แล้ว ยังรวมถึงการเพิ่มประสิทธิภาพและการแก้ไขสถาปัตยกรรม การอัปเดตข้อมูล crypto การกำหนดเวลา IO และอื่นๆ อุปกรณ์จัดเก็บข้อมูล/ระบบไฟล์, KCAL, ชาร์จเร็ว USB, ความแรงของการสั่นสะเทือน, การควบคุมแบตเตอรี่/การแจ้งเตือน LED, ตัวบล็อก Wakelock, WireGuard, ฯลฯ ฉันมักจะสร้างด้วย toolchain การสร้างแบบกำหนดเองอย่างที่ฉันพูดไปก่อนหน้านี้

คุณใช้วิธีการทดสอบแบบใดสำหรับเคอร์เนลของคุณ คุณใช้รายงานผู้ใช้ เกณฑ์มาตรฐาน หรือกิจวัตรที่กำหนดเองอื่นๆ หรือไม่

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

ฉันดำเนินการต่างๆ ตามกรณีการใช้งานในชีวิตจริง ไม่ใช่การทดสอบสังเคราะห์ ซอฟต์แวร์ประเภทนี้สร้างขึ้นเพื่อมนุษย์ ไม่ใช่เครื่องจักรในแบ็คออฟฟิศ จุดเริ่มต้นนั้นดีกว่าประสบการณ์สต็อกเสมอในทุกด้าน แต่ฉันไม่ให้ความสำคัญกับคะแนน Antutu ล่าสุดมากนัก เมล็ดของฉันสามารถปรับให้เข้ากับเกณฑ์มาตรฐานนี้ได้ แต่นั่นไม่ใช่เป้าหมายสุดท้ายของฉัน ฉันให้ความสำคัญกับการวัดประสิทธิภาพบางอย่างที่ตรงประเด็นกว่า เช่น การทดสอบพื้นที่จัดเก็บ IO เป็นต้น พวกเขาสามารถให้วิธีที่รวดเร็วในการยืนยันการเปลี่ยนแปลงบางอย่างที่เพิ่งทำเสร็จ เป็นต้น

ฉันทำการทดสอบกับ ROM หุ้นเพื่อให้มีพื้นฐานที่มั่นคงสำหรับสิ่งต่างๆ ฉันสร้างรอมแบบกำหนดเองสำหรับ ROM แบบกำหนดเอง แต่เนื่องจากลักษณะของ ROM แบบกำหนดเองที่มีความผันผวนพร้อมบริการพิเศษเพิ่มเติม ชุดนอน และแม้แต่ ความแตกต่างในการใช้งานในคุณสมบัติบางอย่าง เป็นไปไม่ได้ที่จะครอบคลุมทั้งหมดและให้การสนับสนุนที่เหมาะสมแก่ทุกคน น่าเสียดาย.

บางครั้งฉันยังสร้างรุ่นเบต้าเพื่อทดสอบบางอย่างที่เฉพาะเจาะจงหรือเมื่อฉันเปิดตัวรุ่นเบต้า ROM หรือตัวอย่างสำหรับนักพัฒนา ฉันทำอย่างนั้นบนอุปกรณ์ Nexus และ OnePlus ผู้คนชอบทดสอบสิ่งต่าง ๆ ในบางครั้ง :)


ลองดูส่วนที่ 2: F2FS, EAS และเคล็ดลับสำหรับนักพัฒนาเคอร์เนลที่ต้องการ