Καλησπέρα στην κοινότητα. Ελλείψη δυστυχώς...ROM για να φλασάρουμε (κάποιοι από εμάς, οι άτυχοι δηλαδή), είπα πριν από μερικές ημέρες να ρίξω μια ματιά σε αυτά τα περιβόητα init.d scripts της ελληνικής XTRV ROM, έτσι για να μάθω και εγώ ρε παιδί μου, ακριβώς τι tweaks διαθέτει η ROM μας. Δυστυχώς τα ευρήματά μου δεν ήταν και τόσο καλά. Και εξηγούμαι ευθύς αμέσως:
Καταρχήν η ROM διαθέτει 6 init.d scripts (τουλάχιστον στο nikel), τα οποία έχουν ως εξής:
1) 09sdcardspeedfix
Αυξάνει με πλάγιο τρόπο την ταχύτητα ανάγνωσης της SD card (read ahead).
2) S97MemoryTweaks
Διαχειρίζεται παραμέτρους της μνήμης ώστε να φορτώνονται περισσότερες εφαρμογές πρωτού "σκοτωθεί" κάποια και κάνει και κάποιες αλλαγές στο build.prop.
3) S97SystemOptimizer
Smart mounting για καλύτερη ταχύτητα ανάγνωσης στο /data και /cache, system process tweaks ώστε να είναι πιο αποκρίσιμες οι εφαρμογές συστήματος, δικτυακά tweaks για καλύτερη συμπεριφορά των δεδομένων και Wi-Fi, σκότωμα του mediaserver, κάποια kernel tweaks κτλ.
4) sysctl_tweaks
Κατά κύριο λόγο kernel tweaks για καλύτερη και πιο αποδοτική κατανάλωση αλλά και performance boosts.
5) Sqlite_optimize
Βελτιστοποιεί τις βάσεις δεδομένων κάνοντας Vacuum (διαγράφει άδειες σελίδες στη βάση) και reindex.
6) Zipalign
Βελτιστοποιεί την αποκρισιμότητα και τη διαχείρηση μνήμης από τις εγκατεστημένες εφαρμογές και εφαρμογές συστήματος.
Όλα καλά μέχρι εδώ. Όλα ? Χμμ, όχι και τόσο. Καταρχήν το script νούμερο 4, το μόνο που κάνει είναι να διαβάζει ένα configuration αρχείο ονόματι sysctl.conf μέσα στο /system/etc, το οποίο περιέχει παραμέτρους διαχείρησης κλειδιών (ρυθμίσεων) του kernel. Έλα όμως που μια παράμετρος και συγκεκριμένα η kernel.random.read_wakeup_threshold είναι λάθος και το script χτυπάει στην συγκεκριμένη παράμετρο (τουλάχιστον στο nikel που το δοκίμασα) και δεν συνεχίζει με τις υπόλοιπες, δουλεύει δηλαδή, εν μέρει. Επίσης λείπει η παράμετρος kernel.random.write_wakeup_threshold που συνήθως πάει πακέτο με την πρώτη και ρυθμίζει το λεγόμενο entropy του συστήματος και έχει (ελαφριά) επίδραση στην κατανάλωση ενέργειας.
Πάμε στο script υπ' αριθμόν 5. Το script αυτό είναι αρκετά παλιό και έχει προκύψει από ένα "πακέτο" παλαιότερων βελτιστοποιήσεων για συγκεκριμένες συσκευές. Είναι σεταρισμένο να διαβάζει και να χρησιμοποιεί για έλεγχο αρχεία που δεν υπάρχουν στην XTRV. Όταν δεν τα βρει, απλά προσπαθεί να εκτελέσει το Vaccum και το Reindexing "βίαια", ούτως ή άλλως δηλαδή, αλλά έλα που αν βάλεις ένα log για να πιάσεις τα exit codes στο boot θα διαπιστώσεις ότι αποτυγχάνει να τρέξει, επειδή προσπαθεί να εκτελεστεί μέσα από το init.d folder και χωρίς working directory, δεν μπορεί καν να ανοίξει τις βάσεις για να διαγράψει τις κενές σελίδες (υποψιάζομαι θέμα permissions). Επίσης το script δεν διαθέτει κάποιο log file που να γράφει τι κάνει, ώστε να έχει μια άλφα εικόνα ο χρήστης. Κοινώς και αυτό...υπολειτουργούσε.
Τέλος, φτάνουμε στην περίπτωση του script 6, το zipalign. Εδώ επικρατούσε το απόλυτο χάος καθώς το script "χτύπαγε" με τη μία. Ο λόγος είναι και σε αυτή την περίπτωση, η παλαιότητά του. Προσπαθεί να βρει .apk αρχεία μέσα στο /system/app καθώς και στο /data/app, ώστε να τα βελτιστοποιήσει αλλά προφανώς δεν πρόκειται να βρει κανένα apk εκεί, αφού αυτά βρίσκονται μέσα σε υποφακέλους, ανά εφαρμογή. Το script αυτό ευτυχώς, έδωσε ο Θεός και έγραφε log file και ήταν πιο εύκολο να καταλάβει κάποιος ότι δεν παίζει.
Να σημειώσω εδώ ότι για όλους τους παραπάνω ισχυρισμούς δεν χρειάζεται να πιστέψετε τα λεγόμενά μου. Κατεβάστε τον Android Terminal Emulator, ανοίξτε ένα terminal window, γράψτε su (ελπίζω να έχετε root πρόσβαση) και δοκιμάστε απλά να τρέξετε τα scripts που ανέφερα, δίνοντας /etc/init.d/<όνομα script>. Το 6 δεν υπάρχει περίπτωση να κάνει τίποτα, θα "χτυπήσει". Το 5 θα τρέξει...εντελώς κατά τύχη, καθώς το working directory του terminal, του επιτρέπει πράγματι να κάνει τη Vacuum, κάτι το οποίο δεν συμβαίνει κατά τη διάρκεια του boot. Τρέχει δηλαδή επειδή έτυχε και το εκτέλεσε κάποιος από terminal. Για το 4, δώστε στο τερματικό sysctl -p. Η εντολή αυτή κάνει force load τις παραμέτρους από το /etc/sysctl.conf. Εκεί θα δείτε ότι μία από τις παραμέτρους "χτυπάει" και ως εκ τούτου, ΔΕΝ λαμβάνονται υπόψη οι γραμμές του sysctl.conf κάτω από τη γραμμή που "χτύπησε". Υπάρχει μια περίπτωση αυτό να συμβαίνει μόνο σε συγκεκριμένες συσκευές, για να πω την αλήθεια, αλλά αυτό θα το δούμε στα τέστ.
Για να μην τα πολυλογώ, διόρθωσα το sysctl.conf ώστε να φορτώνονται σωστά όλες οι παράμετροι και έβαλα και αυτή που έλειπε. Το sqlite_optimize το πέταξα στα σκουπίδια (ήταν απλά πολύ πιο εύκολο να ξαναφτιαχτεί) και έγραψα ένα νέο συνδυάζοντας script του XDA με μικρές αλλαγές ώστε να δουλεύουν σωστά, το οποίο εκτελείται όχι νωρίτερα από 5 ημέρες από την προηγούμενη εκτέλεση (δεν χρειάζεται σε κάθε boot να γίνονται vaccum και reindex οι βάσεις, είναι περιττό, δεν προλαβαίνουν καν να γίνουν fragmented) και μάλιστα παράγει και log file στο /data που δείχνει σε ποιες βάσεις εκτέλεσε το sqlite3 με παράμετρο τη Vaccum και το ReIndex και τι αποτέλεσμα πήρε πίσω (SUCCESS ή τον αντίστοιχο κωδικό σφάλματος). Στο zipalign επίσης μπήκε χέρι, ώστε αρχικά να εντοπίζει σωστά τα .apk, εν συνεχεία να τα κάνει optimize (εκτελώντας το zipalign πρόγραμμα) παράγοντας ένα προσωρινό αρχείο στο /data/local, μετα μετακινεί το zipaligned αρχείο πίσω στην αρχική τοποθεσία, διατηρώντας τα permissions και το ownership (ώστε να μη χτυπάει η εφαρμογή όταν ξεκινάει) και τέλος σβήνει το προσωρινό αρχείο από το /data/local, ώστε να μην μένουν "σκουπίδια" στο /data. Εννοείται ότι τώρα γράφει σωστά τις ενέργειες που κάνει στο log file του. Τίποτε από αυτά δεν γίνονταν με το παλιό script.
Να σημειώσω εδώ ότι για όλα τα παραπάνω είναι ενήμερος ο Γιώργος @gkalen και έχει λάβει τα διορθωμένα από εμένα scripts, τα οποία τουλάχιστον στο nikel παίζουν μια χαρά, ελπίζω να παίξουν και για όλους τους υπόλοιπους, εφόσον σκοπεύει να τα χρησιμοποιήσει. Το αφήνω επάνω του
Αυτά τα ολίγα, όλα καλά κοινώς και συνεχίζουμε να προσπαθούμε ώστε να κάνουμε την XTRV όσο καλύτερη γίνεται.
Την καλησπέρα μου και πάλι.
Καταρχήν η ROM διαθέτει 6 init.d scripts (τουλάχιστον στο nikel), τα οποία έχουν ως εξής:
1) 09sdcardspeedfix
Αυξάνει με πλάγιο τρόπο την ταχύτητα ανάγνωσης της SD card (read ahead).
2) S97MemoryTweaks
Διαχειρίζεται παραμέτρους της μνήμης ώστε να φορτώνονται περισσότερες εφαρμογές πρωτού "σκοτωθεί" κάποια και κάνει και κάποιες αλλαγές στο build.prop.
3) S97SystemOptimizer
Smart mounting για καλύτερη ταχύτητα ανάγνωσης στο /data και /cache, system process tweaks ώστε να είναι πιο αποκρίσιμες οι εφαρμογές συστήματος, δικτυακά tweaks για καλύτερη συμπεριφορά των δεδομένων και Wi-Fi, σκότωμα του mediaserver, κάποια kernel tweaks κτλ.
4) sysctl_tweaks
Κατά κύριο λόγο kernel tweaks για καλύτερη και πιο αποδοτική κατανάλωση αλλά και performance boosts.
5) Sqlite_optimize
Βελτιστοποιεί τις βάσεις δεδομένων κάνοντας Vacuum (διαγράφει άδειες σελίδες στη βάση) και reindex.
6) Zipalign
Βελτιστοποιεί την αποκρισιμότητα και τη διαχείρηση μνήμης από τις εγκατεστημένες εφαρμογές και εφαρμογές συστήματος.
Όλα καλά μέχρι εδώ. Όλα ? Χμμ, όχι και τόσο. Καταρχήν το script νούμερο 4, το μόνο που κάνει είναι να διαβάζει ένα configuration αρχείο ονόματι sysctl.conf μέσα στο /system/etc, το οποίο περιέχει παραμέτρους διαχείρησης κλειδιών (ρυθμίσεων) του kernel. Έλα όμως που μια παράμετρος και συγκεκριμένα η kernel.random.read_wakeup_threshold είναι λάθος και το script χτυπάει στην συγκεκριμένη παράμετρο (τουλάχιστον στο nikel που το δοκίμασα) και δεν συνεχίζει με τις υπόλοιπες, δουλεύει δηλαδή, εν μέρει. Επίσης λείπει η παράμετρος kernel.random.write_wakeup_threshold που συνήθως πάει πακέτο με την πρώτη και ρυθμίζει το λεγόμενο entropy του συστήματος και έχει (ελαφριά) επίδραση στην κατανάλωση ενέργειας.
Πάμε στο script υπ' αριθμόν 5. Το script αυτό είναι αρκετά παλιό και έχει προκύψει από ένα "πακέτο" παλαιότερων βελτιστοποιήσεων για συγκεκριμένες συσκευές. Είναι σεταρισμένο να διαβάζει και να χρησιμοποιεί για έλεγχο αρχεία που δεν υπάρχουν στην XTRV. Όταν δεν τα βρει, απλά προσπαθεί να εκτελέσει το Vaccum και το Reindexing "βίαια", ούτως ή άλλως δηλαδή, αλλά έλα που αν βάλεις ένα log για να πιάσεις τα exit codes στο boot θα διαπιστώσεις ότι αποτυγχάνει να τρέξει, επειδή προσπαθεί να εκτελεστεί μέσα από το init.d folder και χωρίς working directory, δεν μπορεί καν να ανοίξει τις βάσεις για να διαγράψει τις κενές σελίδες (υποψιάζομαι θέμα permissions). Επίσης το script δεν διαθέτει κάποιο log file που να γράφει τι κάνει, ώστε να έχει μια άλφα εικόνα ο χρήστης. Κοινώς και αυτό...υπολειτουργούσε.
Τέλος, φτάνουμε στην περίπτωση του script 6, το zipalign. Εδώ επικρατούσε το απόλυτο χάος καθώς το script "χτύπαγε" με τη μία. Ο λόγος είναι και σε αυτή την περίπτωση, η παλαιότητά του. Προσπαθεί να βρει .apk αρχεία μέσα στο /system/app καθώς και στο /data/app, ώστε να τα βελτιστοποιήσει αλλά προφανώς δεν πρόκειται να βρει κανένα apk εκεί, αφού αυτά βρίσκονται μέσα σε υποφακέλους, ανά εφαρμογή. Το script αυτό ευτυχώς, έδωσε ο Θεός και έγραφε log file και ήταν πιο εύκολο να καταλάβει κάποιος ότι δεν παίζει.
Να σημειώσω εδώ ότι για όλους τους παραπάνω ισχυρισμούς δεν χρειάζεται να πιστέψετε τα λεγόμενά μου. Κατεβάστε τον Android Terminal Emulator, ανοίξτε ένα terminal window, γράψτε su (ελπίζω να έχετε root πρόσβαση) και δοκιμάστε απλά να τρέξετε τα scripts που ανέφερα, δίνοντας /etc/init.d/<όνομα script>. Το 6 δεν υπάρχει περίπτωση να κάνει τίποτα, θα "χτυπήσει". Το 5 θα τρέξει...εντελώς κατά τύχη, καθώς το working directory του terminal, του επιτρέπει πράγματι να κάνει τη Vacuum, κάτι το οποίο δεν συμβαίνει κατά τη διάρκεια του boot. Τρέχει δηλαδή επειδή έτυχε και το εκτέλεσε κάποιος από terminal. Για το 4, δώστε στο τερματικό sysctl -p. Η εντολή αυτή κάνει force load τις παραμέτρους από το /etc/sysctl.conf. Εκεί θα δείτε ότι μία από τις παραμέτρους "χτυπάει" και ως εκ τούτου, ΔΕΝ λαμβάνονται υπόψη οι γραμμές του sysctl.conf κάτω από τη γραμμή που "χτύπησε". Υπάρχει μια περίπτωση αυτό να συμβαίνει μόνο σε συγκεκριμένες συσκευές, για να πω την αλήθεια, αλλά αυτό θα το δούμε στα τέστ.
Για να μην τα πολυλογώ, διόρθωσα το sysctl.conf ώστε να φορτώνονται σωστά όλες οι παράμετροι και έβαλα και αυτή που έλειπε. Το sqlite_optimize το πέταξα στα σκουπίδια (ήταν απλά πολύ πιο εύκολο να ξαναφτιαχτεί) και έγραψα ένα νέο συνδυάζοντας script του XDA με μικρές αλλαγές ώστε να δουλεύουν σωστά, το οποίο εκτελείται όχι νωρίτερα από 5 ημέρες από την προηγούμενη εκτέλεση (δεν χρειάζεται σε κάθε boot να γίνονται vaccum και reindex οι βάσεις, είναι περιττό, δεν προλαβαίνουν καν να γίνουν fragmented) και μάλιστα παράγει και log file στο /data που δείχνει σε ποιες βάσεις εκτέλεσε το sqlite3 με παράμετρο τη Vaccum και το ReIndex και τι αποτέλεσμα πήρε πίσω (SUCCESS ή τον αντίστοιχο κωδικό σφάλματος). Στο zipalign επίσης μπήκε χέρι, ώστε αρχικά να εντοπίζει σωστά τα .apk, εν συνεχεία να τα κάνει optimize (εκτελώντας το zipalign πρόγραμμα) παράγοντας ένα προσωρινό αρχείο στο /data/local, μετα μετακινεί το zipaligned αρχείο πίσω στην αρχική τοποθεσία, διατηρώντας τα permissions και το ownership (ώστε να μη χτυπάει η εφαρμογή όταν ξεκινάει) και τέλος σβήνει το προσωρινό αρχείο από το /data/local, ώστε να μην μένουν "σκουπίδια" στο /data. Εννοείται ότι τώρα γράφει σωστά τις ενέργειες που κάνει στο log file του. Τίποτε από αυτά δεν γίνονταν με το παλιό script.
Να σημειώσω εδώ ότι για όλα τα παραπάνω είναι ενήμερος ο Γιώργος @gkalen και έχει λάβει τα διορθωμένα από εμένα scripts, τα οποία τουλάχιστον στο nikel παίζουν μια χαρά, ελπίζω να παίξουν και για όλους τους υπόλοιπους, εφόσον σκοπεύει να τα χρησιμοποιήσει. Το αφήνω επάνω του
Αυτά τα ολίγα, όλα καλά κοινώς και συνεχίζουμε να προσπαθούμε ώστε να κάνουμε την XTRV όσο καλύτερη γίνεται.
Την καλησπέρα μου και πάλι.