ראיון עם Flar2, מפתחת ElementalX Kernel Part 1

click fraud protection

אנו מראיינים את flar2, מפתח ליבת ElementalX ומתעמקים בנושאים כמו חייו האישיים, עבודת פיתוח ועוד.

לאחרונה יצא לי לראיין את flar2, האיש מאחורי ליבת ElementalX המפורסמת, ואת אפליקציית ElementalX Kernel Manager הפופולרית עוד יותר. הוא הוציא גרסה של הליבה שלו עבור מגוון רחב של מכשירים, כולל OnePlus ומכשירי Nexus.

בחלק זה, אנו שואלים על מחשבותיו של flar2 על צווארי בקבוק בביצועי אנדרואיד ועוד על חייו האישיים! אתה יכול לבדוק חלק 2 של הראיון הזה כאן.


שלום! הצג את עצמך קודם כל לפני שנגיע לשאלות.

שמי אהרון סגארט, הידוע גם בשם flar2. רוב האנשים מכירים אותי כמפתחת ליבת ElementalX. יש לי גם כמה אפליקציות.

האם היה לך ניסיון קודם עם מחשבים ופיתוח? כמו תואר במדעי המחשב או משהו?

התחלתי עם מחשבים כשהייתי צעיר מאוד. המחשב הראשון שלי היה Texas Instruments TI-99/4A. למדתי איך לקודד ב-BASIC ושמרתי את התוכנות שלי בקלטת קלטת (כן, אני זקן). ואז המשפחה שלנו קנתה שיבוט 286 IBM, ואני התרחקתי מקידוד בשלב הזה כי זה היה לפני האינטרנט היה ידוע ברבים ולא היו לי משאבים או אפילו מכיר מישהו אחר שהיה לו מַחשֵׁב. התחלתי במדעי המחשב באוניברסיטה, אבל עזבתי בשנה הראשונה. אף פעם לא ממש הלכתי לשיעור כי הייתי עסוק מדי בבילוי ובהופעות עם הלהקה שלי. מאוחר יותר חזרתי לבית הספר וקיבלתי דוקטורט בסוציולוגיה. במהלך התקופה שלי כסטודנט, התעניינתי בלינוקס ובקוד פתוח אבל מעולם לא נכנסתי לתכנות רציניות במיוחד. תרמתי קטעים קטנים פה ושם, אבל בעיקר רק הכנתי תסריטים ותוכניות קטנות למטרות שלי. כנראה בניתי את ליבת הלינוקס הראשונה שלי בסביבות 2002. באותו זמן, לא כתבתי קוד משלי, רק התנסיתי עם תיקונים שונים ואפשרויות בנייה כדי להגביר את הביצועים. הייתי יותר בעניין של בניית מחשבים, אוברקלוק ובאופן כללי ניסיתי לגרום לחומרה לעשות דברים שהיא לא הייתה אמורה לעשות.

האם פיתוח כלשהו מלבד פיתוח אפליקציות אנדרואיד ופיתוח ליבה עניין אותך?

לא ממש, מצאתי כלים טובים זמינים כמעט לכל מה שהייתי צריך לעשות במחשבים. הסיבה שהתחלתי לעבוד על גרעינים ואפליקציות לאנדרואיד היא כי הרגשתי שיש צורך בפיצ'רים מסוימים ומקום לשיפור בכלים הקיימים. לדוגמה, יצרתי את Button Mapper כי רציתי שמקש הבית בטלפונים של סמסונג יעשה יותר, ולא אהבתי את המקשים האחוריים ההפוכים והמקשים האחרונים. עשיתי DevCheck כי אפליקציות מידע מערכת אחרות לא הציגו את המידע שרציתי לראות בצורה ברורה ותמציתית. Kernel ElementalX מוסיף תכונות חומרה חדשות ו-EX Kernel Manager שולט בתכונות הללו ומוסיף כמה כלים שבהם אני משתמש כדי להקל על הפיתוח. אני אוהב לפתור בעיות וזה אתגר מהנה להנדס דברים לאחור או להוסיף תכונות חומרה חדשות לטלפון.

איך באת למגע עם פיתוח אנדרואיד, במיוחד פיתוח ליבה?

תמיד שנאתי טלפונים סלולריים והתנגדתי להם הרבה זמן. אשתי ואני חלקנו טלפון הפוך בסיסי עם תוכנית מינימלית ששימש בעיקר למקרי חירום. בשנת 2012 פרצה שריפה בבית שלנו והיינו בחוץ כמעט שלושה חודשים. כל השירותים שלנו נותקו, והחלטנו לא לחבר מחדש את הטלפון הקווי שלנו, אז קיבלנו סמארטפון, שזה היה LG P-משהו לדעתי. הבנתי שזה כמו מיני מחשב והחלטתי שאני צריך מחשב מיני משלי, אז קניתי HTC One V.

מכיוון שאני מתעסק ומאפיין כמעט הכל, גיליתי מיד את XDA וגיליתי שלא רק בטלפונים אנדרואיד פועלים לינוקס, הם יכולים להיות מאוברקלוק. אני משתמש בלינוקס כבר הרבה זמן, אז חילצתי את אחד הגרעינים והתחברתי. עד מהרה קיבלתי טאבלט זול של Acer והתחלתי להתעסק עם החומרה והגרעין הזה כי רציתי שיהיה לו USB OTG. מסתבר שהחומרה לא הייתה מסוגלת, אבל כך התחלתי ללמוד יותר על חומרה ניידת. מעולם לא הוצאתי בפומבי ליבה לטאבלט LG, Acer או One V, אבל בניתי ליבה משלי לכל אחד והתקנתי ROM מותאמים אישית, שהיו נחוצים באותם ימים, מכיוון שאנדרואיד עדיין לא בשלה.

עד מהרה התגברתי על ה-One V והחלפתי ב-HTC One XL ואז נולד ElementalX.

מה הייתה המטרה של ElementalX בתחילה, ואיך זה השתנה בשנים האחרונות?

המטרה של ElementalX תמיד הייתה להוסיף תכונות חומרה שימושיות, מבלי לפגוע ביציבות או בביצועים, ולשחרר משהו שאנשים יכולים לסמוך עליו כדי שיעבוד. אני תמיד שם את היציבות במקום הראשון כי אני צריך שהטלפון שלי יהיה אמין. אין אתחול אקראי או דברים כמו המצלמה לא עובדת. הפילוסופיה נשארה זהה לאורך השנים. אני שומר על דברים פשוטים ומוסיף תכונות חומרה שנראה לי שימושיות. דברים כמו מחוות התעוררות, מצב בהירות גבוהה, התאמת רטט, בקרת קול, תמיכה במערכות קבצים נוספות, ג'ויסטיקים וכו'.

אני עובד קשה כדי לשמור על הגרעינים שלי מעודכנים, קלים להתקנה ותואמים ככל האפשר. חלק מהמשתמשים מאוכזבים מכך שאני לא מוסיף הרבה תיקונים מ-CAF או מלנוקס במעלה הזרם, אבל המטרה העיקרית שלי היא לספק מוצר מאוד יציב ללא בעיות מוזרות. רבים מהמשתמשים שלי אינם אנשים שמפרסמים הרבה ב-XDA, הם משתמשים חזקים שיש להם צורך ספציפי מסופק על ידי קרנל מותאם אישית, או אנשים שאוהבים מדי פעם להתעסק עם החומרה שלהם אבל הם לא הארדקור פלאשהולים. אני רוצה שאנשים שלא עוקבים אחר כל הפיתוחים האחרונים של אנדרואיד יוכלו להשתמש ב-ElementalX ללא בעיה.

יש הרבה גרעינים אחרים שמתנסים עם תיקונים במעלה הזרם. ב-ElementalX, אני משתמש בסט שנבחר בקפידה של תיקונים ואופטימיזציות. בקריירה שלי מחוץ לאנדרואיד, אני מודד דברים שקשה למדוד ומשתמש בראיות כדי לבנות מדיניות ולספק עצות. אני מיישם את אותם עקרונות לפיתוח ליבה ובדרך כלל לא משתמש בתיקונים אלא אם כן יש יתרון מדיד. צג הסוללה ב-EX Kernel Manager הוא דוגמה לכך. הוא מציע דרך למדוד באופן אובייקטיבי את ההשפעה של שינויים בסוללה ושינויי הליבה. המסכים הצפים ב-DevCheck הם כלי נוסף שאני משתמש בו לפיתוח, בעיקר לניטור CPU תדרים וטמפרטורות במהלך מקרי שימוש שונים כמו משחקים או צפייה בסרטונים או אינטרנט דִפדוּף.

כיצד השפיעו שינויים באנדרואיד בשנים האחרונות על העבודה שלך?

לפעמים קשה להתמודד עם שינויי האבטחה הרבים, אבל אני מבין אותם. אם אני לא טועה, אנדרואיד נמצא כעת בשימוש נרחב יותר מווינדוס, מה שהופך אותו למטרה. אנשים רעים הולכים להשתמש בכל זווית שהם יכולים כדי לנצל משתמשי אנדרואיד.

מניעת שינוי של מחיצת המערכת היא ללא ספק המפתח להגנה על שלמות ההתקן. אני זוכר ש-HTC התחילה לעשות את זה ב-2012 או 2013 וזה נראה כמו סוף העולם. בזמנו, היה צורך בכתיבה ל-/system עבור root, עריכת build.prop, התקנת אפליקציות מורשות, הסרת bloatware ולמעשה כל מוד פופולרי. רבות מההתאמות האישיות באותה תקופה כללו דברים כמו ניקוי אודקס ושינוי המסגרת. במשך זמן רב לא היה מקור ליבה זמין מ-HTC, אז הכנתי מודול ליבה כדי לנטרל את הגנת הכתיבה של המערכת בקרנל המניות, שעבורו התפרסם לראשונה כמפתח. אבל עם הזמן, כשהגנות כמו verity הפכו לחלק סטנדרטי מאנדרואיד, היא אילצה חדשנות וטוב יותר פתרונות כמו ה-systemless root של Chainfire ועכשיו יש Magisk שעושה כל מיני דברים ללא מערכת.

אחד גדול נוסף הוא SELinux, שגרם להמון אפליקציות להפסיק לעבוד. משתמשים רבים שנאו את זה ועד היום יש אנשים שרצים עם SELinux במצב מתירני, וזה רעיון רע מאוד. הייתי אומר ש-SELinux הוא תכונת האבטחה החשובה ביותר של אנדרואיד. כדי לתת דוגמה לחשיבות של SELinux, כאשר קיבלתי לראשונה את ה-Pixel XL, לא היה שורש זמין, אבל הניצול של Dirty Cow עשה חדשות. הייתי להוט להתחיל בפיתוח ליבה, כלומר חיפוש או שינוי של קבצי sysfs, מה שדורש שורש. ערכתי את אחד מההוכחות של פרה מלוכלכת והצלחתי להריץ פקודות כשורש, אבל SELinux מנע ממני לעשות משהו מעניין. הייתי צריך לשנות את boot.img כדי להפוך את SELinux למתירנית. אולי הייתי משיג גישה מלאה בלי לשנות את הליבה, אבל זה היה לוקח הרבה מאוד שעות. כל זה כדי לומר, השאר את SELinux לאכוף, זה קו ההגנה העיקרי נגד תוכנות זדוניות. למד להשתמש ב-sepolicy-inject כדי לשנות מדיניות ספציפית לפי הצורך.

כאשר נוגט הגיע, בתחילה כמעט כל /sys ו-/proc הפכו בלתי נראים לאפליקציות המשתמשים. Root תמיד היה הכרחי כדי לבצע שינויים, אבל לפתע היה צורך ב-root פשוט כדי לקרוא את /sys ו-/proc. בהחלט יש מידע באותן מערכות קבצים שניתן להשתמש בו כדי לנצל מכשיר, ולכן היה צורך להוסיף הגבלות. אבל יש גם מידע רב שמשתמשים צריכים להיות מסוגלים לראות. מדוע יש צורך ב-root כדי לראות את מתזמן ה-i/o הנוכחי, או את תדר ה-GPU, או את סוג החומרה של הפאנל? נאלצתי לבצע הרבה שינויים ב-DevCheck כדי להתמודד עם זה, והרבה משתמשים היו מבולבלים מדוע המידע כבר לא זמין לאחר עדכון לנוגט. בסופו של דבר, חלק מההגבלות על נתיבי sysfs הוסרו.

מלבד זאת, מנקודת מבט של פיתוח אפליקציות, אני אוהב את רוב השינויים ב-API באנדרואיד, למרות שהם מאלצים אותי לבצע הרבה שינויים באפליקציות שלי. שינויים אלו הם בדרך כלל לטובה.


בדוק את חלק 2 של הראיון הזה!