Συνέντευξη με τον Flar2, προγραμματιστή του ElementalX Kernel Part 1

Παίρνουμε συνέντευξη από τον flar2, τον προγραμματιστή του πυρήνα ElementalX και εμβαθύνουμε σε θέματα όπως η προσωπική του ζωή, το έργο ανάπτυξης και πολλά άλλα.

Πρόσφατα πήρα συνέντευξη από τον flar2, τον άνθρωπο πίσω από τον διάσημο πυρήνα ElementalX και την ακόμα πιο δημοφιλή εφαρμογή του ElementalX Kernel Manager. Έχει κυκλοφορήσει μια έκδοση του πυρήνα του για μια τεράστια γκάμα συσκευών, όπως OnePlus και συσκευές Nexus.

Σε αυτό το μέρος, ρωτάμε για τις σκέψεις του flar2 σχετικά με τα σημεία συμφόρησης στην απόδοση του Android και περισσότερα για την προσωπική του ζωή! Μπορείτε να ελέγξετε έξω μέρος 2 αυτής της συνέντευξης εδώ.


Γεια σου! Συστηθείτε πρώτα από όλα πριν φτάσουμε στις ερωτήσεις.

Το όνομά μου είναι Aaron Segaert, γνωστός και ως flar2. Οι περισσότεροι άνθρωποι με γνωρίζουν ως προγραμματιστή του πυρήνα ElementalX. Έχω επίσης μερικές εφαρμογές.

Είχατε κάποια εμπειρία με υπολογιστές και ανάπτυξη εκ των προτέρων; Σαν πτυχίο πληροφορικής ή κάτι τέτοιο;

Ξεκίνησα με τους υπολογιστές όταν ήμουν πολύ μικρός. Ο πρώτος μου υπολογιστής ήταν ένας Texas Instruments TI-99/4A. Έμαθα πώς να κωδικοποιώ σε BASIC και αποθήκευσα τα προγράμματά μου σε κασέτα (ναι, είμαι μεγάλος). Στη συνέχεια, η οικογένειά μας αγόρασε έναν κλώνο 286 IBM, και ξέφυγα από την κωδικοποίηση σε εκείνο το σημείο επειδή αυτό ήταν πριν το Διαδίκτυο ήταν ευρέως γνωστό και δεν είχα πόρους ή ακόμη και δεν γνώριζα κανέναν άλλον που είχε α υπολογιστή. Ξεκίνησα την επιστήμη των υπολογιστών στο πανεπιστήμιο, αλλά τα παράτησα στο πρώτο έτος. Ποτέ δεν πήγα πραγματικά στο μάθημα γιατί ήμουν πολύ απασχολημένος διασκεδάζοντας και παίζοντας συναυλίες με την μπάντα μου. Αργότερα επέστρεψα στο σχολείο και απέκτησα διδακτορικό στην κοινωνιολογία. Κατά τη διάρκεια της φοιτητικής μου, άρχισα να ενδιαφέρομαι για το Linux και τον ανοιχτό κώδικα, αλλά δεν ασχολήθηκα ποτέ με πολύ σοβαρό προγραμματισμό. Έδωσα μικρά κομμάτια εδώ και εκεί, αλλά κυρίως έφτιαξα σενάρια και μικρά προγράμματα για τους δικούς μου σκοπούς. Μάλλον έφτιαξα τον πρώτο μου πυρήνα Linux γύρω στο 2002. Εκείνη την εποχή, δεν έγραφα τον δικό μου κώδικα, αλλά πειραματιζόμουν μόνο με διαφορετικές ενημερώσεις κώδικα και επιλογές κατασκευής για να ενισχύσω την απόδοση. Ήμουν περισσότερο στην κατασκευή υπολογιστών, στο overclocking και γενικά στην προσπάθειά μου να κάνω το υλικό να κάνει πράγματα που δεν έπρεπε.

Σας ενδιαφέρει κάποια άλλη εξέλιξη εκτός από την ανάπτυξη εφαρμογών Android και την ανάπτυξη πυρήνα;

Όχι πραγματικά, έχω βρει καλά εργαλεία διαθέσιμα για σχεδόν όλα όσα χρειαζόμουν να κάνω σε υπολογιστές. Ο λόγος που άρχισα να εργάζομαι σε πυρήνες και εφαρμογές για Android είναι επειδή ένιωσα ότι υπήρχε ανάγκη για ορισμένες δυνατότητες και περιθώρια βελτίωσης στα υπάρχοντα εργαλεία. Για παράδειγμα, έφτιαξα το Button Mapper επειδή ήθελα το κλειδί αρχικής οθόνης στα τηλέφωνα Samsung να κάνει περισσότερα και δεν μου άρεσαν τα πλήκτρα ανάποδα και πρόσφατα. Έκανα το DevCheck επειδή άλλες εφαρμογές πληροφοριών συστήματος δεν έδειχναν τις πληροφορίες που ήθελα να δω με σαφή και συνοπτικό τρόπο. Ο πυρήνας ElementalX προσθέτει νέες δυνατότητες υλικού και το EX Kernel Manager ελέγχει αυτές τις δυνατότητες και προσθέτει ορισμένα εργαλεία που χρησιμοποιώ για να διευκολύνω την ανάπτυξη. Μου αρέσει να λύνω προβλήματα και είναι μια διασκεδαστική πρόκληση να αναστρέφω τα πράγματα ή να προσθέτω νέες δυνατότητες υλικού σε ένα τηλέφωνο.

Πώς ήρθατε σε επαφή με την ανάπτυξη Android και συγκεκριμένα την ανάπτυξη πυρήνα;

Πάντα μισούσα τα κινητά και τους αντιστεκόμουν για πολύ καιρό. Η γυναίκα μου και εγώ μοιραζόμασταν ένα βασικό αναδιπλούμενο τηλέφωνο με ένα ελάχιστο σχέδιο που χρησιμοποιήθηκε κυρίως για έκτακτες ανάγκες. Το 2012, είχαμε φωτιά στο σπίτι μας και ήμασταν έξω για σχεδόν τρεις μήνες. Όλα μας τα βοηθητικά προγράμματα κόπηκαν και αποφασίσαμε να μην επανασυνδέσουμε το σταθερό μας τηλέφωνο, οπότε πήραμε ένα smartphone, το οποίο ήταν ένα LG P-κάτι νομίζω. Συνειδητοποίησα ότι ήταν σαν μίνι-υπολογιστής και αποφάσισα ότι χρειαζόμουν τον δικό μου μίνι υπολογιστή, οπότε αγόρασα ένα HTC One V.

Δεδομένου ότι πειράζω και τροποποιώ σχεδόν τα πάντα, ανακάλυψα αμέσως το XDA και διαπίστωσα ότι όχι μόνο τα τηλέφωνα Android έτρεχαν Linux, αλλά μπορούσαν να υπερχρονιστούν. Είμαι χρήστης Linux εδώ και πολύ καιρό, οπότε διχάλωσα έναν από τους πυρήνες και κολλήθηκα. Σύντομα πήρα ένα φτηνό tablet Acer και άρχισα να ασχολούμαι με αυτό το υλικό και τον πυρήνα γιατί ήθελα να έχει USB OTG. Αποδείχθηκε ότι το υλικό δεν ήταν ικανό, αλλά έτσι άρχισα να μαθαίνω περισσότερα για το υλικό για κινητά. Ποτέ δεν κυκλοφόρησα δημόσια έναν πυρήνα για το LG, το tablet Acer ή το One V, αλλά έφτιαξα τους δικούς μου πυρήνες για το καθένα και εγκατέστησα προσαρμοσμένες ROM, που ήταν απαραίτητες εκείνη την εποχή, καθώς το Android δεν ήταν ακόμη ώριμο.

Σύντομα ξεπέρασα το One V και αντάλλαξα για ένα HTC One XL και τότε γεννήθηκε το ElementalX.

Ποιος ήταν ο στόχος για την ElementalX αρχικά και πώς έχει αλλάξει αυτό τα τελευταία χρόνια;

Ο στόχος του ElementalX ήταν πάντα η προσθήκη χρήσιμων χαρακτηριστικών υλικού, χωρίς συμβιβασμούς στη σταθερότητα ή την απόδοση, και να κυκλοφορήσει κάτι στο οποίο οι άνθρωποι μπορούν να βασιστούν για να δουλέψουν. Πάντα βάζω τη σταθερότητα πρώτα γιατί χρειάζομαι το τηλέφωνό μου να είναι αξιόπιστο. Δεν υπάρχουν τυχαίες επανεκκινήσεις ή πράγματα όπως η μη λειτουργία της κάμερας. Η φιλοσοφία παρέμεινε ίδια με τα χρόνια. Διατηρώ τα πράγματα απλά και προσθέτω χαρακτηριστικά υλικού που θεωρώ χρήσιμες. Πράγματα όπως χειρονομίες αφύπνισης, λειτουργία υψηλής φωτεινότητας, ρύθμιση κραδασμών, έλεγχος ήχου, υποστήριξη για περισσότερα συστήματα αρχείων, joystick κ.λπ.

Εργάζομαι σκληρά για να διατηρώ τους πυρήνες μου ενημερωμένους, εύκολους στην εγκατάσταση και όσο το δυνατόν ευρύτερα συμβατούς. Ορισμένοι χρήστες είναι απογοητευμένοι που δεν προσθέτω πολλές ενημερώσεις κώδικα από το CAF ή το upstream Linux, αλλά ο κύριος στόχος μου είναι να παραδώσω ένα πολύ σταθερό προϊόν χωρίς περίεργα προβλήματα. Πολλοί από τους χρήστες μου δεν είναι άνθρωποι που δημοσιεύουν πολλά στο XDA, είναι ισχυροί χρήστες που έχουν ικανοποιήσει μια συγκεκριμένη ανάγκη από έναν προσαρμοσμένο πυρήνα ή άτομα που περιστασιακά τους αρέσει να ασχολούνται με το υλικό τους, αλλά δεν είναι σκληροπυρηνικοί flashaholics. Θέλω τα άτομα που δεν παρακολουθούν όλες τις τελευταίες εξελίξεις του Android να μπορούν να χρησιμοποιούν το ElementalX χωρίς προβλήματα.

Υπάρχουν πολλοί άλλοι πυρήνες που πειραματίζονται με upstream patches. Στο ElementalX, χρησιμοποιώ ένα προσεκτικά επιλεγμένο σύνολο ενημερώσεων κώδικα και βελτιστοποιήσεων. Στην καριέρα μου εκτός Android, μετράω πράγματα που είναι δύσκολο να μετρηθούν και χρησιμοποιώ στοιχεία για τη διαμόρφωση πολιτικής και την παροχή συμβουλών. Εφαρμόζω τις ίδιες αρχές στην ανάπτυξη του πυρήνα και γενικά δεν χρησιμοποιώ patches εκτός και αν υπάρχει ένα μετρήσιμο όφελος. Η οθόνη μπαταρίας στο EX Kernel Manager είναι ένα παράδειγμα αυτού. Προσφέρει έναν τρόπο αντικειμενικής μέτρησης της επίδρασης των τροποποιήσεων της μπαταρίας και των αλλαγών του πυρήνα. Οι πλωτές οθόνες στο DevCheck είναι ένα άλλο εργαλείο που χρησιμοποιώ για ανάπτυξη, κυρίως για την παρακολούθηση της CPU συχνότητες και θερμοκρασίες κατά τη διάρκεια διαφορετικών περιπτώσεων χρήσης, όπως παιχνίδια ή παρακολούθηση βίντεο ή ιστού περιήγηση.

Πώς επηρέασαν τη δουλειά σας οι αλλαγές τα τελευταία χρόνια στο Android;

Μερικές φορές είναι δύσκολο να αντιμετωπίσεις τις πολλές αλλαγές ασφαλείας, αλλά τις καταλαβαίνω. Αν δεν κάνω λάθος, το Android χρησιμοποιείται πλέον ευρύτερα από τα Windows, γεγονός που το καθιστά στόχο. Οι κακοί άνθρωποι θα χρησιμοποιήσουν κάθε γωνία που μπορούν για να εκμεταλλευτούν τους χρήστες Android.

Η αποτροπή τροποποίησης του διαμερίσματος συστήματος είναι προφανώς το κλειδί για την προστασία της ακεραιότητας μιας συσκευής. Θυμάμαι όταν η HTC άρχισε να το κάνει αυτό το 2012 ή το 2013 και φαινόταν σαν το τέλος του κόσμου. Εκείνη την εποχή, η εγγραφή στο /system χρειαζόταν για root, επεξεργασία build.prop, εγκατάσταση προνομιακών εφαρμογών, αφαίρεση bloatware και σχεδόν κάθε δημοφιλές mod. Πολλές από τις προσαρμογές εκείνη την εποχή περιελάμβαναν πράγματα όπως η απεξάρτηση και η τροποποίηση του πλαισίου. Για πολύ καιρό, καμία πηγή πυρήνα δεν ήταν διαθέσιμη από την HTC, έτσι έφτιαξα μια λειτουργική μονάδα πυρήνα για να απενεργοποιήσω την προστασία εγγραφής συστήματος στον πυρήνα του αποθέματος, για την οποία έγινα αρχικά γνωστός ως προγραμματιστής. Αλλά με την πάροδο του χρόνου, καθώς οι προστασίες όπως η αλήθεια έγιναν τυπικό μέρος του Android, επέβαλε την καινοτομία και βελτίωσε λύσεις όπως η ρίζα χωρίς σύστημα του Chainfire και τώρα υπάρχει το Magisk που κάνει κάθε είδους πράγματα χωρίς σύστημα.

Ένα άλλο μεγάλο είναι το SELinux, το οποίο έκανε έναν τόνο εφαρμογών να σταματήσουν να λειτουργούν. Πολλοί χρήστες το μισούσαν και μέχρι σήμερα υπάρχουν άνθρωποι που τρέχουν με το SELinux σε επιτρεπτή λειτουργία, κάτι που είναι πολύ κακή ιδέα. Θα έλεγα ότι το SELinux είναι το πιο σημαντικό χαρακτηριστικό ασφαλείας του Android. Για να δώσω ένα παράδειγμα της σημασίας του SELinux, όταν πρωτοπήρα το Pixel XL, δεν υπήρχε διαθέσιμο root, αλλά το exploit Dirty Cow έκανε είδηση. Ήμουν πρόθυμος να ξεκινήσω την ανάπτυξη πυρήνα, που σημαίνει αναζήτηση ή τροποποίηση αρχείων sysfs, κάτι που απαιτεί root. Έκανα ένα από τα proof-of-concepts του Dirty Cow και μπόρεσα να εκτελέσω εντολές ως root, αλλά το SELinux με εμπόδισε να κάνω οτιδήποτε ενδιαφέρον. Έπρεπε να τροποποιήσω το boot.img για να κάνω το SELinux επιτρεπτό. Μπορεί να είχα πετύχει πλήρη πρόσβαση χωρίς να τροποποιήσω τον πυρήνα, αλλά θα χρειάζονταν πολλές, πολλές ώρες. Όλα αυτά για να πούμε, αφήστε το SELinux να επιβάλλει, είναι η κύρια γραμμή άμυνας ενάντια στο κακόβουλο λογισμικό. Μάθετε να χρησιμοποιείτε το sepolicy-inject για να αλλάζετε συγκεκριμένες πολιτικές όπως απαιτείται.

Όταν εμφανίστηκε το Nougat, αρχικά σχεδόν όλα τα /sys και /proc έγιναν αόρατα στις εφαρμογές των χρηστών. Το Root ήταν πάντα απαραίτητο για την πραγματοποίηση αλλαγών, αλλά ξαφνικά το root χρειάστηκε απλώς για να διαβάσετε τα /sys και /proc. Υπάρχουν σίγουρα πληροφορίες σε αυτά τα συστήματα αρχείων που μπορούν να χρησιμοποιηθούν για την εκμετάλλευση μιας συσκευής, επομένως ήταν απαραίτητο να προστεθούν περιορισμοί. Υπάρχουν όμως και πολλές πληροφορίες που θα πρέπει να μπορούν να δουν οι χρήστες. Γιατί πρέπει να απαιτείται root για να δείτε τον τρέχοντα προγραμματιστή i/o, ή τη συχνότητα της GPU ή τον τύπο του υλικού του πίνακα; Χρειάστηκε να κάνω πολλές αλλαγές στο DevCheck για να το αντιμετωπίσω και πολλοί χρήστες ήταν μπερδεμένοι σχετικά με το γιατί οι πληροφορίες δεν ήταν πλέον διαθέσιμες μετά την ενημέρωση στο Nougat. Τελικά, ορισμένοι από τους περιορισμούς στα μονοπάτια sysfs καταργήθηκαν.

Εκτός από αυτό, από την άποψη της ανάπτυξης εφαρμογών, μου αρέσουν οι περισσότερες αλλαγές API στο Android, παρόλο που με αναγκάζουν να κάνω πολλές αλλαγές στις εφαρμογές μου. Αυτές οι αλλαγές είναι συνήθως προς το καλύτερο.


Δείτε το Μέρος 2 αυτής της συνέντευξης!