สัมภาษณ์กับ Flar2 ผู้พัฒนา ElementalX Kernel ตอนที่ 1

เราสัมภาษณ์ flar2 ผู้พัฒนาเคอร์เนล ElementalX และเจาะลึกหัวข้อต่างๆ เช่น ชีวิตส่วนตัว งานพัฒนา และอื่นๆ อีกมากมาย

เมื่อเร็ว ๆ นี้ฉันได้สัมภาษณ์ flar2 ชายผู้อยู่เบื้องหลังเคอร์เนล ElementalX อันโด่งดัง และแอปพลิเคชัน ElementalX Kernel Manager ที่โด่งดังยิ่งกว่าของเขา เขาได้เปิดตัวเคอร์เนลเวอร์ชันหนึ่งสำหรับอุปกรณ์ต่างๆ มากมาย รวมถึง OnePlus และอุปกรณ์ Nexus

ในส่วนนี้ เราจะถามเกี่ยวกับความคิดของ flar2 เกี่ยวกับปัญหาคอขวดของประสิทธิภาพของ Android และเรื่องราวอื่นๆ เกี่ยวกับชีวิตส่วนตัวของเขา! ท่านสามารถเช็คเอาท์ได้ ตอนที่ 2 ของบทสัมภาษณ์นี้ที่นี่.


สวัสดี! แนะนำตัวเองก่อนจะเข้าสู่คำถาม

ฉันชื่อ Aaron Segaert หรือที่รู้จักในชื่อ flar2 คนส่วนใหญ่รู้จักฉันในฐานะผู้พัฒนาเคอร์เนล ElementalX ฉันยังมีแอพบางตัวด้วย

คุณเคยมีประสบการณ์เกี่ยวกับคอมพิวเตอร์และการพัฒนามาก่อนหรือไม่? เช่นปริญญาวิทยาการคอมพิวเตอร์หรืออะไรสักอย่าง?

ฉันเริ่มต้นด้วยคอมพิวเตอร์เมื่อตอนที่ฉันยังเด็กมาก คอมพิวเตอร์เครื่องแรกของฉันคือ Texas Instruments TI-99/4A ฉันเรียนรู้วิธีการเขียนโค้ดในรูปแบบ BASIC และบันทึกโปรแกรมของฉันลงในเทปคาสเซ็ท (ใช่ ฉันแก่แล้ว) จากนั้นครอบครัวของเราก็ซื้อ IBM clone 286 ตัว และฉันก็เลิกเขียนโค้ด ณ จุดนั้นเพราะเมื่อก่อนเป็นเช่นนี้ อินเทอร์เน็ตเป็นที่รู้จักกันอย่างแพร่หลาย และฉันไม่มีทรัพยากรใดๆ หรือแม้แต่รู้จักใครก็ตามที่มี คอมพิวเตอร์. ฉันเริ่มต้นวิทยาการคอมพิวเตอร์ที่มหาวิทยาลัย แต่ฉันล้มเหลวในปีแรก ฉันไม่เคยไปชั้นเรียนเลยเพราะฉันยุ่งเกินไปที่จะสนุกสนานและเล่นคอนเสิร์ตกับวงดนตรีของฉัน ต่อมาฉันกลับไปโรงเรียนและได้รับปริญญาเอกด้านสังคมวิทยา ในช่วงที่ฉันยังเป็นนักเรียน ฉันเริ่มสนใจ Linux และโอเพ่นซอร์ส แต่ไม่เคยสนใจการเขียนโปรแกรมที่จริงจังมากนัก ฉันบริจาคเพียงเล็กน้อยที่นี่และที่นั่น แต่ส่วนใหญ่แค่สร้างสคริปต์และโปรแกรมขนาดเล็กเพื่อจุดประสงค์ของฉันเอง ฉันอาจสร้างเคอร์เนล Linux ตัวแรกเมื่อประมาณปี 2545 ในเวลานั้น ฉันไม่ได้เขียนโค้ดของตัวเอง เพียงทดลองใช้แพตช์ต่างๆ และสร้างตัวเลือกเพื่อเพิ่มประสิทธิภาพ ฉันสนใจการสร้างคอมพิวเตอร์ การโอเวอร์คล็อก และโดยทั่วไปแล้วพยายามทำให้ฮาร์ดแวร์ทำในสิ่งที่ไม่ควรทำ

มีการพัฒนาอื่นใดนอกเหนือจากการพัฒนาแอป Android และการพัฒนาเคอร์เนลที่คุณสนใจหรือไม่

ไม่จริงหรอก ฉันพบเครื่องมือที่ดีสำหรับเกือบทุกอย่างที่ฉันต้องทำบนคอมพิวเตอร์ เหตุผลที่ฉันเริ่มทำงานกับเคอร์เนลและแอปสำหรับ Android เพราะฉันรู้สึกว่าจำเป็นต้องมีคุณสมบัติบางอย่างและมีพื้นที่สำหรับการปรับปรุงเครื่องมือที่มีอยู่ ตัวอย่างเช่น ฉันสร้าง Button Mapper เพราะฉันต้องการให้ปุ่มโฮมบนโทรศัพท์ Samsung ทำงานได้มากกว่านี้ และฉันไม่ชอบปุ่มย้อนกลับและปุ่มล่าสุด ฉันสร้าง DevCheck เนื่องจากแอปข้อมูลระบบอื่นๆ ไม่แสดงข้อมูลที่ฉันต้องการดูอย่างชัดเจนและกระชับ เคอร์เนล ElementalX เพิ่มคุณสมบัติฮาร์ดแวร์ใหม่และ EX Kernel Manager ควบคุมคุณสมบัติเหล่านั้นและเพิ่มเครื่องมือบางอย่างที่ฉันใช้เพื่อทำให้การพัฒนาง่ายขึ้น ฉันชอบแก้ปัญหาและเป็นความท้าทายที่สนุกในการทำวิศวกรรมย้อนกลับหรือเพิ่มคุณสมบัติฮาร์ดแวร์ใหม่ให้กับโทรศัพท์

คุณรู้จักการพัฒนา Android โดยเฉพาะการพัฒนาเคอร์เนลได้อย่างไร?

ฉันเกลียดโทรศัพท์มือถือมาโดยตลอดและต่อต้านมันมาเป็นเวลานาน ผมและภรรยาใช้โทรศัพท์ฝาพับธรรมดาร่วมกันโดยมีแผนขั้นต่ำที่ใช้สำหรับเหตุฉุกเฉินเป็นหลัก ในปี 2012 เราเกิดเพลิงไหม้ที่บ้านและต้องออกไปข้างนอกเป็นเวลาเกือบสามเดือน ระบบสาธารณูปโภคทั้งหมดของเราถูกตัดออกไป และเราตัดสินใจที่จะไม่เชื่อมต่อโทรศัพท์บ้านของเราอีกครั้ง ดังนั้นเราจึงได้สมาร์ทโฟน ซึ่งเป็น LG P-อย่างที่ฉันคิด ฉันรู้ว่ามันเหมือนกับมินิคอมพิวเตอร์ และตัดสินใจว่าฉันต้องการมินิคอมพิวเตอร์ของตัวเอง ฉันจึงซื้อ HTC One V

เนื่องจากฉันปรับแต่งและดัดแปลงทุกอย่าง ฉันจึงค้นพบ XDA ทันทีและพบว่าโทรศัพท์ Android ไม่เพียงแต่ใช้ Linux เท่านั้น แต่ยังสามารถโอเวอร์คล็อกได้อีกด้วย ฉันเป็นผู้ใช้ Linux มาเป็นเวลานาน ดังนั้นฉันจึงแยกเมล็ดหนึ่งออกและติดงอมแงม ไม่นานฉันก็ได้แท็บเล็ต Acer ราคาถูกและเริ่มยุ่งกับฮาร์ดแวร์และเคอร์เนลนั้นเพราะฉันต้องการให้มี USB OTG ปรากฎว่าฮาร์ดแวร์ไม่สามารถทำได้ แต่นั่นทำให้ฉันเริ่มเรียนรู้เพิ่มเติมเกี่ยวกับฮาร์ดแวร์มือถือ ฉันไม่เคยเปิดตัวเคอร์เนลสำหรับ LG, แท็บเล็ต Acer หรือ One V ต่อสาธารณะ แต่สร้างเคอร์เนลของตัวเองสำหรับ ROM แต่ละตัวและติดตั้งเองซึ่งจำเป็นในสมัยนั้นเนื่องจาก Android ยังไม่โตเต็มที่

ในไม่ช้าฉันก็เติบโตเร็วกว่า One V และแลกกับ HTC One XL และนั่นคือตอนที่ ElementalX ถือกำเนิดขึ้น

เป้าหมายของ ElementalX ในตอนแรกคืออะไร และมีการเปลี่ยนแปลงอย่างไรในช่วงไม่กี่ปีที่ผ่านมา

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

ฉันทำงานอย่างหนักเพื่อให้เคอร์เนลของฉันทันสมัย ​​ติดตั้งง่าย และเข้ากันได้อย่างกว้างขวางที่สุดเท่าที่จะเป็นไปได้ ผู้ใช้บางคนผิดหวังที่ฉันไม่ได้เพิ่มแพตช์จาก CAF หรืออัพสตรีม Linux มากนัก แต่เป้าหมายหลักของฉันคือการส่งมอบผลิตภัณฑ์ที่มีเสถียรภาพมากโดยไม่มีปัญหาแปลกๆ ผู้ใช้ของฉันหลายคนไม่ใช่คนที่โพสต์บน XDA เป็นจำนวนมาก แต่เป็นผู้ใช้ระดับสูงที่มีความต้องการเฉพาะที่พึงพอใจ ด้วยเคอร์เนลแบบกำหนดเอง หรือผู้ที่ชอบปรับแต่งฮาร์ดแวร์เป็นครั้งคราวแต่ไม่ฮาร์ดคอร์ พวกชอบแฟลช ฉันต้องการให้ผู้ที่ไม่ติดตามการพัฒนา Android ล่าสุดทั้งหมดสามารถใช้ ElementalX ได้โดยไม่มีปัญหา

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

การเปลี่ยนแปลงใน Android ในช่วงไม่กี่ปีที่ผ่านมาส่งผลต่องานของคุณอย่างไร

บางครั้งมันก็ยากที่จะจัดการกับการเปลี่ยนแปลงด้านความปลอดภัยมากมาย แต่ฉันเข้าใจมัน ถ้าจำไม่ผิด ตอนนี้ Android มีการใช้งานกันอย่างแพร่หลายมากกว่า Windows ซึ่งทำให้ตกเป็นเป้าหมาย คนเลวจะใช้ทุกมุมที่ทำได้เพื่อเอาเปรียบผู้ใช้ Android

การป้องกันการแก้ไขพาร์ติชันระบบเป็นกุญแจสำคัญในการปกป้องความสมบูรณ์ของอุปกรณ์อย่างชัดเจน ฉันจำได้ว่าเมื่อ HTC เริ่มทำเช่นนี้ในปี 2012 หรือ 2013 และดูเหมือนว่าโลกจะแตก ในเวลานั้น การเขียนลงใน /system เป็นสิ่งจำเป็นสำหรับการรูท แก้ไข build.prop ติดตั้งแอพพิเศษ ลบโบลตแวร์ และม็อดยอดนิยมทุกตัว การปรับแต่งหลายอย่างในขณะนั้นเกี่ยวข้องกับสิ่งต่างๆ เช่น การดี็อกซ์และการปรับเปลี่ยนเฟรมเวิร์ก เป็นเวลานานแล้วที่ HTC ไม่มีแหล่งที่มาของเคอร์เนล ดังนั้นฉันจึงสร้างโมดูลเคอร์เนลเพื่อปิดใช้งานการป้องกันการเขียนของระบบในเคอร์เนลสต็อก ซึ่งในตอนแรกฉันเป็นที่รู้จักในฐานะนักพัฒนา แต่เมื่อเวลาผ่านไป เมื่อการปกป้องอย่างความจริงกลายเป็นส่วนมาตรฐานของ Android จึงบังคับให้มีนวัตกรรมและดีขึ้น โซลูชันเช่นการรูทแบบไร้ระบบของ Chainfire และตอนนี้ก็มี Magisk ที่ทำทุกสิ่งได้ ไม่มีระบบ-ly

สิ่งสำคัญอีกประการหนึ่งคือ SELinux ซึ่งทำให้แอปจำนวนมากหยุดทำงาน ผู้ใช้หลายคนเกลียดมันและจนถึงทุกวันนี้ยังมีคนที่ใช้งาน SELinux ในโหมดอนุญาตซึ่งเป็นความคิดที่แย่มาก ฉันจะบอกว่า SELinux เป็นฟีเจอร์ความปลอดภัยที่สำคัญที่สุดของ Android เพื่อให้เป็นตัวอย่างถึงความสำคัญของ SELinux เมื่อฉันได้รับ Pixel XL เป็นครั้งแรก ไม่มีการรูทให้ใช้งาน แต่การใช้ประโยชน์จาก Dirty Cow กำลังสร้างข่าว ฉันกระตือรือร้นที่จะเริ่มการพัฒนาเคอร์เนล ซึ่งหมายถึงการค้นหาหรือแก้ไขไฟล์ sysfs ซึ่งต้องใช้รูท ฉันรวบรวมหนึ่งในหลักฐานพิสูจน์แนวคิด Dirty Cow และสามารถรันคำสั่งในฐานะรูทได้ แต่ SELinux ทำให้ฉันไม่สามารถทำอะไรที่น่าสนใจได้ ฉันต้องแก้ไข boot.img เพื่อให้ SELinux อนุญาต ฉันอาจเข้าถึงได้เต็มรูปแบบโดยไม่ต้องแก้ไขเคอร์เนล แต่อาจใช้เวลานานหลายชั่วโมง ทั้งหมดนี้ ปล่อยให้ SELinux บังคับใช้ มันเป็นแนวหลักในการป้องกันมัลแวร์ เรียนรู้การใช้ sepolicy-inject เพื่อเปลี่ยนแปลงนโยบายเฉพาะตามความจำเป็น

เมื่อ Nougat เข้ามา ในตอนแรก /sys และ /proc เกือบทั้งหมดจะมองไม่เห็นแอปของผู้ใช้ จำเป็นต้องรูทเสมอเพื่อทำการเปลี่ยนแปลง แต่ทันใดนั้นรูทก็จำเป็นเพียงเพื่ออ่าน /sys และ /proc มีข้อมูลในระบบไฟล์ที่สามารถใช้เพื่อใช้ประโยชน์จากอุปกรณ์ได้อย่างแน่นอน ดังนั้นจึงจำเป็นต้องเพิ่มข้อจำกัด แต่ก็มีข้อมูลมากมายที่ผู้ใช้ควรมองเห็นได้ เหตุใดจึงต้องรูทเพื่อดูตัวกำหนดเวลา i/o ปัจจุบัน หรือความถี่ของ GPU หรือประเภทของฮาร์ดแวร์พาเนล ฉันต้องทำการเปลี่ยนแปลง DevCheck มากมายเพื่อจัดการกับสิ่งนี้ และผู้ใช้จำนวนมากสับสนว่าเหตุใดจึงไม่มีข้อมูลอีกต่อไปหลังจากอัปเดตเป็น Nougat ในที่สุด ข้อจำกัดบางประการเกี่ยวกับเส้นทาง sysfs ก็ถูกยกเลิกไป

นอกเหนือจากนั้น จากมุมมองของการพัฒนาแอป ฉันชอบการเปลี่ยนแปลง API ส่วนใหญ่ใน Android แม้ว่าการเปลี่ยนแปลงเหล่านั้นจะบังคับให้ฉันทำการเปลี่ยนแปลงมากมายกับแอปของฉันก็ตาม การเปลี่ยนแปลงเหล่านี้มักจะดีขึ้น


ลองดูตอนที่ 2 ของบทสัมภาษณ์นี้สิ!