Συνέντευξη με τον προγραμματιστή eng.stk Μέρος 1: Origins and Kernel Development

click fraud protection

Πρόσφατα πήραμε συνέντευξη από τον eng.stk, τον προγραμματιστή του πυρήνα blu_spark. Σε αυτό το μέρος, τον ρωτάμε για την καταγωγή και το έργο ανάπτυξης του.

Πρόσφατα είχα την ευκαιρία να πάρω συνέντευξη από το ανώτερο μέλος του XDA eng.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 και άλλα εργαλεία/hacks [που είναι] χρήσιμα κατά τη διάρκεια του κύκλου ζωής των έργων πυρήνα μου (κάποια πράγματα πήγαν στο XDA Portal αν θυμάμαι σωστά). Ο πυρήνας blu_spark άρχισε να γίνεται όχι μόνο πυρήνας, αλλά μια ολοκληρωμένη εμπειρία μεταξύ πυρήνα, αλυσίδων εργαλείων, ανάκτησης, θεματοποίησης, εργαλείων, σεναρίων κ.λπ. Αλλά η εργασία πυρήνα είναι αυτό που απολαμβάνω περισσότερο και αυτό που με οδηγεί.

Πάντα μου άρεσε να χακάρω και να φτιάχνω κάποιους κώδικα/σενάρια όταν είχα την ευκαιρία (η αποσυναρμολόγηση ηλεκτρονικών παιχνιδιών και η βασική κωδικοποίηση στο Commodore 64 του ξαδέρφου μου ήταν διασκεδαστική). Για μένα η κωδικοποίηση δεν είναι ένα μέσο για την επίτευξη ενός σκοπού, αλλά απλώς ένα εργαλείο όπως κάποια άλλα για την επίτευξη ενός καθορισμένου σκοπού. Τα περισσότερα από τα πιο σοβαρά μου πράγματα και τα θεμέλια της δουλειάς μου έγιναν όταν ανακάλυψα το Linux κατά την εφηβεία μου/αρχές της δεκαετίας του '20. Αργότερα, κάπου στα χρόνια του Πανεπιστημίου, το Android ήταν το λογικό επόμενο βήμα για μένα: το όνειρο ενός τεχνίτη, όπου το υλικό ή το λογισμικό μπορούσε να παίξει πολλά.

Οι καλύτερες λέξεις για να περιγράψετε το blu_spark είναι η βελτιστοποίηση και η σταθερότητα. Οι άνθρωποι που το χρησιμοποιούν γνωρίζουν ότι μπορούν να βασιστούν σε αυτό. Οι εκδόσεις του πυρήνα μου είναι κάπως «αποθηκευμένες» με τρόπο που τείνω να μην αφαιρώ ορισμένα διαθέσιμα πράγματα εκτός συσκευασίας, διατηρώντας τα πάντα προαιρετικά, έτσι ώστε οι άνθρωποι να μπορούν να επιλέξουν. Δεν μου αρέσει να προσθέτω πολλά πράγματα, απλώς αλλάζω ή προσθέτω αυτό που θεωρώ το καλύτερο για κάθε δεδομένο πεδίο. Το πρόγραμμα οδήγησης συχνότητας CPU, ο χρονοπρογραμματιστής IO, τα πρωτόκολλα δικτύου, τα συστήματα αρχείων κ.λπ. ή τροποποιήστε ορισμένα συντονιστικά για ορισμένες δεδομένες παραμέτρους ή ανοδικά ορισμένα προγράμματα οδήγησης για το καλύτερο δυνατό αποτέλεσμα. Κατασκευάζω επίσης custom made αλυσίδες εργαλείων (από τη Linaro, φοβερή εκδοχή του GCC), κυρίως για να αξιοποιήσω το καλύτερο από την αρχιτεκτονική.

Κατώτατη γραμμή, οι περισσότεροι άνθρωποι γνωρίζουν ότι βρίσκονται στο blu_spark από τη στιγμή που αναβοσβήνουν τον πυρήνα στη συσκευή. Πάντα ψάχνω για νέα πράγματα και τρόπους για να προσφέρω το καλύτερο δυνατό UX. Με ασφάλεια.

Μιλήστε μας για τον blue_active κυβερνήτη σας! Τι είναι, τι κάνει και γιατί είναι ξεχωριστό;

Ξέρω ότι οι άνθρωποι μερικές φορές μπερδεύουν το blu_active με το blu_spark. Το blu_active είναι απλώς ένα μικρό μέρος σε σύγκριση με όλη την υπόλοιπη [δουλειά] που κάνω.

Ο κυβερνήτης της CPU βασικά λαμβάνει αποφάσεις για να αυξήσει ή να μειώσει τις συχνότητες της CPU, σύμφωνα με τις ανάγκες του συστήματος. Ο κυβερνήτης είχε αρκετές αλλαγές και μεταλλάξεις από τότε που ξεκίνησε. Όπως όλα τα άλλα που κάνω, χρειαζόμουν κάτι που να ικανοποιεί τις ανάγκες μου. Βασίζεται στον αγαπημένο μου κυβερνήτη, τον διαδραστικό κυβερνήτη. Στην αρχή απλώς έβαλα κάποια upstream πράγματα σε αυτό, αλλά μετά άρχισα να προσθέτω κάποια άλλα πράγματα, όπως ενημερώσεις CAF ή λογική που είχα δει σε άλλους κυβερνήτες που θεωρούσα χρήσιμη. Πρόσθεσα επίσης συμβατότητα HMP και μερικά άλλα καλούδια.

Η πιο πρόσφατη επανάληψη βασίζεται στον κλάδο Android 4.4 Linux της Google, με κάποιες επιδιορθώσεις upstream και CAF επίσης, αλλά πολύ πιο αδύνατες από πριν. Απλώς χρησιμοποιήστε ό, τι έχετε στο έπακρο, αφαιρέστε ό, τι δεν έχετε. Προσπαθώ πάντα να έχω καλύτερη μπαταρία από ό, τι με τις ρυθμίσεις αποθέματος, μειώνοντας την αποστράγγιση, ενώ προσπαθώ να βελτιώσω performance (πραγματική παράσταση, αυτή που νιώθεις με τα μάτια και τα δάχτυλά σου, όχι με συνθετικά εργαλεία).

Κάποια στιγμή, ήθελα ένα απλό συντονισμό, ώστε οι άνθρωποι να μπορούν να παίξουν με την απόδοση με απλό τρόπο. Έτσι γεννήθηκε ο Fastlane :). Η λογική είναι κάπως παρόμοια με τον τρόπο που λειτουργεί το Honda VTEC: παίξτε με χρονισμούς από ένα δεδομένο όριο. Έτσι, με έναν απλό διακόπτη και μια μεταβλητή τιμή κατωφλίου, οι άνθρωποι θα μπορούσαν να έχουν μια πιο άμεση και επιθετική κλιμάκωση συχνότητας cpu. Κάνοντάς το να εισέλθει αργά ή γρήγορα σύμφωνα με το φορτίο του συστήματος, παρακάμπτοντας τα φορτία-στόχους. Είναι πλήρως συμβατό με το HMP και μπορεί να τροποποιηθεί ανά σύμπλεγμα ανάλογα με τις ανάγκες των ανθρώπων, ρυθμισμένο με ακρίβεια για κάθε συσκευή στην οποία λειτουργεί.

Ποιοι ενσωματωμένοι μηχανισμοί ή τροποποιήσεις σας αρέσουν/αντιπαθούν που παρέχουν οι OEM; δηλαδή ενίσχυση εισόδου της Qualcomm.

Ορισμένες ενισχύσεις χώρου χρηστών και άλλα συντονιστικά που έχουν οριστεί σε HAL (Επίπεδα Αφαίρεσης Υλικού), στοιχεία σκληρού κωδικοποιημένου πλαισίου κ.λπ., μερικές φορές μπορεί να είναι ενοχλητικά. Φυσικά, οι προγραμματιστές πυρήνα είναι γνωστό ότι εργάζονται γύρω από μερικούς από αυτούς Στο Nexus 5, για παράδειγμα, οι περισσότεροι από εμάς ξεφορτωθήκαμε το mpdecision και αποκτήσαμε ένα προσαρμοσμένο hotplug - είχαμε το blu_plug εκείνη τη στιγμή. Ορισμένες άλλες συσκευές είχαν κακή θερμική διαχείριση και προσαρμοσμένο θερμικό έλεγχο με sysfs για επίπεδα θερμοκρασίας, συχνότητα μετριασμού κ.λπ. Ορισμένες πιο πρόσφατες συσκευές έχουν ορισμένες σκληρές πολιτικές σχετικά με την μπαταρία, την αποσύνδεση πυρήνων και άλλα πράγματα σε "χαμηλά επίπεδα" που δεν είχαν πραγματικό κέρδος στη χρήση της συσκευής. Στην πραγματικότητα, μερικές φορές κατέστρεφε ακόμη και την εμπειρία του χρήστη, επομένως ήταν απαραίτητο να εξημερωθούν οι τεχνολογίες CTL και BCL.

Θυμάμαι επίσης την κατάργηση της κρυπτογράφησης σε συσκευές όταν αυτό ήταν ένα πράγμα, όλες οι αλλαγές οι επαναλήψεις του SELinux εισήγαγαν αλλαγές που έκαναν τα προηγούμενα hacks να λειτουργούν με διαφορετικό τρόπο... ορισμένες πρόσφατες αλλαγές ασφάλειας Android είναι μια συνεχής πρόκληση. Αυτά περιλαμβάνουν το AVB (ορισμένα μέρη γνωστά ως επί το πλείστον ως dm-verity). Κάποιες άλλες αλλαγές έχουν επιβάλει περιορισμούς για συντονίσιμα και sysf μέρη που έπρεπε να μετακινηθούν επειδή δεν έχουμε πρόσβαση στα ίδια μέρη που είχαμε πριν. Οι περισσότεροι από αυτούς τους περιορισμούς είναι πιο σχετικοί για stock ROM (στις οποίες κάνω το μεγαλύτερο μέρος της δουλειάς μου), συνήθως ανοίγει το δρόμο και διευκολύνει όταν πρόκειται για custom ROM (όπου οι περιορισμοί είναι χαμηλότεροι).

Σε πρόσφατα SoC, όπως το Qualcomm Snapdragon 820 και 835, ορισμένοι OEM έχουν προσθέσει κάποιες βελτιώσεις από τον χώρο χρηστών που είναι ευπρόσδεκτες και αντιμετωπίζουν τα τυφλά σημεία στο σύστημα, δεν είναι όλα τα OEM κακά. Όταν πρόκειται για την πηγή του πυρήνα, όσο πιο καθαρή και τεκμηριωμένη είναι η πηγή, τόσο το καλύτερο.

Ποιες άλλες δυνατότητες σας αρέσει να συμπεριλάβετε; Όπως προηγμένος έλεγχος χρωμάτων, και ούτω καθεξής.

Συνήθως δεν συμπεριλαμβάνω πράγματα που δεν χρησιμοποιώ προσωπικά ή που δεν τα βρίσκω χρήσιμα. Τα πράγματα που μου αρέσει να κάνω, εκτός από το blu_active, περιλαμβάνουν βελτιστοποιήσεις και επιδιορθώσεις αρχιτεκτονικής, ενημερώσεις στοιχείων κρυπτογράφησης, προγραμματισμό IO και άλλα Καλούδια αποθήκευσης/συστήματος αρχείων, KCAL, γρήγορη φόρτιση USB, ισχύς κραδασμών, έλεγχος LED μπαταρίας/ειδοποίησης, αποκλειστές Wakelock, WireGuard, και τα λοιπά. Πάντα κατασκευάζω με μια προσαρμοσμένη αλυσίδα εργαλείων κατασκευής όπως είπα νωρίτερα.

Ποια μεθοδολογία δοκιμών χρησιμοποιείτε για τον πυρήνα σας; Χρησιμοποιείτε αναφορές χρηστών, δείκτες αξιολόγησης ή άλλες προσαρμοσμένες ρουτίνες;

Είμαι κάτοχος κάθε τηλεφώνου για το οποίο αναπτύσσω, επομένως οποιεσδήποτε αλλαγές ελέγχονται πάντα. Εφόσον οδηγώ καθημερινά κάθε συσκευή για μεγάλο χρονικό διάστημα, οτιδήποτε θεωρώ ότι δεν είναι κατάλληλο για μένα, δεν πρέπει να ταιριάζει σε κανέναν άλλο. Όταν κυκλοφορώ δημόσια μια έκδοση, έχει ήδη υποβληθεί σε πολλές δοκιμές από εμένα και από κάποια άλλα άτομα που εμπιστεύομαι για την παροχή χρήσιμων σχολίων. Γνωρίζω ότι μερικές φορές ορισμένοι χρήστες βαριούνται να έχουν συνεχώς όλα τα πράγματα να λειτουργούν όπως θα έπρεπε, αλλά εκτιμώ τη σταθερότητα πάνω από όλα: πάντα βάζω τον εαυτό μου στη θέση ενός χρήστη αρχικά.

Τρέχω τα πράγματα προς μια πραγματική περίπτωση χρήσης, όχι συνθετικές δοκιμές. Αυτό το είδος λογισμικού είναι φτιαγμένο για ανθρώπους, όχι για μηχανές σε back office. Το σημείο εκκίνησης είναι πάντα καλύτερο από την εμπειρία των μετοχών, σε όλα τα μέτωπα, αλλά δεν εκτιμώ ιδιαίτερα την τελευταία υψηλή βαθμολογία Antutu. Οι πυρήνες μου μπορούν να συντονιστούν σε αυτό το είδος αναφοράς, αλλά δεν είναι αυτός ο τελικός στόχος μου. Εκτιμώ ορισμένα σημεία αναφοράς που είναι πιο άμεσοι, όπως για παράδειγμα η δοκιμή αποθήκευσης IO. Μπορούν να δώσουν έναν γρήγορο τρόπο για να διεκδικήσουν κάποιες αλλαγές που έγιναν πρόσφατα, για παράδειγμα.

Κάνω τις δοκιμές μου με stock ROM για να μπορώ να έχω μια σταθερή βάση για τα πράγματα. Κάνω προσαρμοσμένες κατασκευές για προσαρμοσμένες ROM, αλλά λόγω της ασταθούς φύσης των προσαρμοσμένων ROM με πρόσθετα πρόσθετα, βραδινές βραδιές και ακόμη διαφορά εφαρμογής σε ορισμένα χαρακτηριστικά, είναι αδύνατο να τα καλύψουμε όλα και να παρέχουμε την κατάλληλη υποστήριξη σε όλους, Δυστυχώς.

Επίσης, μερικές φορές δημιουργώ εκδόσεις beta για να δοκιμάσω κάτι συγκεκριμένο ή όταν εκκινώ εκδόσεις σε Beta ROM ή προεπισκοπήσεις προγραμματιστών. Το έκανα αυτό στις συσκευές Nexus και OnePlus, στους ανθρώπους αρέσει να δοκιμάζουν πράγματα μερικές φορές :)


Δείτε το μέρος 2: F2FS, EAS και Συμβουλές για επίδοξους προγραμματιστές πυρήνα