Πώς να χτίσετε τον πυρήνα του Android στα Windows 10

Το Appual έχει μερικούς εξαιρετικούς οδηγούς για την ανάπτυξη του Android, όπως το πώς να δημιουργήσετε ένα προσαρμοσμένο ROM από το Android Open Source Project - αλλά αυτοί οι οδηγοί είναι συνήθως προσανατολισμένοι προς ένα καθαρό περιβάλλον κατασκευής Linux.

Σε αυτόν τον οδηγό, θα σας δείξουμε πώς να χτίσετε έναν πυρήνα Android στα Windows 10 - ναι, θα εξακολουθήσουμε να χρησιμοποιούμε ένα περιβάλλον κατασκευής Linux, αλλά θα είναι ένα υποσύστημα Linux στα Windows 10. Έτσι, αν είστε Windows 10 χρήστη που ενδιαφέρεται να αναπτυχθεί για Android, ακολουθήστε προσεκτικά τον οδηγό μας.

Σε αυτόν τον οδηγό, θα μάθουμε ειδικά πώς να δημιουργήσουμε έναν πυρήνα για τις συσκευές ARM και MediaTek, προσθέτοντας χαρακτηριστικά και μια βασική επισκόπηση της χρήσης του Git.

Απαιτήσεις

  • Windows 10 x64 (με την ενημέρωση του Fall Creator)

Ρύθμιση του περιβάλλοντος Linux

  1. Στα Windows 10, μεταβείτε στις Ρυθμίσεις> Ενημέρωση και ασφάλεια> Για προγραμματιστές> ενεργοποιήστε τη λειτουργία προγραμματιστών.
  2. Τώρα μεταβείτε στον Πίνακα Ελέγχου> Προγράμματα> Ενεργοποιήστε ή απενεργοποιήστε τις λειτουργίες των Windows> ενεργοποιήστε το Υποσύστημα των Windows για Linux.
  3. Επανεκκινήστε τον υπολογιστή σας.
  4. Εκκινήστε το υποσύστημα Linux και αφήστε το να μεταβεί στη διαδικασία λήψης. Ορίστε έναν κωδικό πρόσβασης και μην τον χάσετε.
  5. Τώρα μεταβείτε στο κατάστημα εφαρμογών των Windows και κατεβάστε το Ubuntu.
  6. Εκκινήστε το Ubuntu στην επιφάνεια εργασίας των Windows 10 και θα ζητήσει ένα όνομα χρήστη και έναν κωδικό πρόσβασης.
  7. Στο Ubuntu, ξεκινήστε το εγγενές τερματικό και πληκτρολογήστε την ακόλουθη εντολή: apt-get update
  8. Αυτό θα συνεχίσει να ενημερώνει όλα τα repos για εφαρμογές και εξαρτήσεις.
  9. Επόμενο στον τύπο του τερματικού: sudo apt-get install -y build-απαραίτητο πακέτο πυρήνα libncurses5-dev bzip2
  10. Για να ελέγξετε αν όλες οι εξαρτήσεις έχουν εγκατασταθεί σωστά, πληκτρολογήστε 'gcc' στο τερματικό (δεν υπάρχουν εισαγωγικά).
  11. Αν το "gcc" είναι ήδη εγκατεστημένο, θα πρέπει να δείτε "gcc: fatal error: no file input"
  12. Τώρα μπορείτε να πληκτρολογήσετε 'make' στο τερματικό. Εάν το "make" είναι ήδη εγκατεστημένο, θα πρέπει να δείτε "make: *** δεν έχει οριστεί στόχος και δεν βρέθηκε makefile. να σταματήσει."
  13. Ο επόμενος τύπος "git" και iff "git" είναι ήδη εγκατεστημένοι, θα πρέπει να δείτε μια δέσμη βασικών εντολών git.
  14. Τώρα χρειαζόμαστε κάποιες σειρές εργαλείων (υπάρχουν διάφοροι τύποι, μεταξύ των οποίων το GCC, το Linaro και μια χούφτα έθιμο). Ορισμένες συσκευές ενδέχεται να χρειάζονται διαφορετικά εργαλεία, για παράδειγμα, δεν θα εκκινήσουν όλες οι πυρήνες των συσκευών ή θα μεταγλωττιστούν με το GCC.

Για συσκευές ARM

Θα χρησιμοποιήσουμε το ΣΣΚ 4.7 για αυτό.

  1. Ανοίξτε το τερματικό Linux και πληκτρολογήστε: mkdir kernel
  2. Τώρα πληκτρολογήστε: cd kernel
  3. (δεν χρειάζεται να είναι 'πυρήνας', αυτό είναι για λόγους απλότητας, μπορείτε να το ονομάσετε ό, τι θέλετε).
  4. Τώρα πληκτρολογήστε: git clone //android.googlesource.com/platform/prebuilts/gcc/linux-x86/arm/arm-eabi-4.7

Για συσκευές ARM 64

Χρειάζεστε έναν μεταγλωττιστή πυρήνα 64-bit για συσκευές ARM 64, για παράδειγμα aarch64.

Λήψη των αρχείων προέλευσης για τη συσκευή σας

Αυτό είναι ένα δύσκολο κομμάτι, καθώς πρέπει να βρείτε ένα repo GitHub που φιλοξενεί την πηγή του πυρήνα σας. Θα πρέπει φυσικά να το αναζητήσετε, πιθανότατα μπορεί να βρεθεί σε φόρουμ XDA.

Εδώ είναι ένα παράδειγμα πηγής πυρήνα Git.

Στην επάνω αριστερή πλευρά, θα πρέπει να δείτε το "Branch: Completed by xxxx".

Υπάρχουν διαφορετικές εκδόσεις ενός πυρήνα / έργου, συνήθως διαχωρισμένες με "Testing", "Beta", "Final Release" κ.λπ.

Οι φάκελοι του πυρήνα είναι συνήθως οι εξής:

  • / arch / arm / configs : Περιέχει διάφορα αρχεία ρυθμίσεων για τη συσκευή, όπως ρυθμιστές κ.λπ.
  • / output / τόξο / βραχίονας / boot / : Αυτός είναι ο χώρος όπου θα αποθηκευτεί η νήσος.
  • build.sh : Ένα σενάριο που θα απλοποιήσει τη διαδικασία κατασκευής.
  • /armarm-cortex-linux-gnueabi-linaro_5.2-2015.11-2 : Αυτή είναι συνήθως μια εργαλειοθήκη που τοποθετείται στην πηγή του πυρήνα, διευκολύνοντας έτσι την εύρεση.

Θα χρειαστεί να κάνετε λήψη της πηγής του πυρήνα σας.

Ανοίξτε το τερματικό Linux και βεβαιωθείτε ότι βρίσκεστε στον φάκελο του πυρήνα που δημιουργήσατε προηγουμένως (cd kernel).

Στη συνέχεια πληκτρολογήστε τερματικό: "git clone" URL του github kernel "-b" όνομα του κλάδου "

Για παράδειγμα: "git clone //github.com/atxoxx/android_ke...amsung_msm8974 -b xenomTW"

Δημιουργία του πυρήνα

Για να γίνει ευκολότερη, μπορείτε να πλοηγηθείτε στη θέση του εξερευνητή αρχείων. Θα πρέπει να είναι / home / user ID / kernel (ή ό, τι έχετε ονομάσει το φάκελο του πυρήνα).

Θα πρέπει να δείτε δύο εσωτερικούς φακέλους, για την προέλευση του εργαλείου και την πηγή του πυρήνα. Πηγαίνετε μέσα στον φάκελο προέλευσης του πυρήνα.

Για συσκευές ARM

Σε ένα τερματικό, πληκτρολογήστε τις ακόλουθες εντολές:

 ################################################################################################################################# ## 

Ακολουθεί μια επισκόπηση του τι κάνουν αυτές οι εντολές, για να γίνει αυτό πιο εύκολο στο μέλλον.

  • #! / bin / bash: Ενημερώνει το σενάριο να τρέχει με κέλυφος εντολή
  • εξαγωγή ARCH = βραχίονας: Καθορισμός του τύπου αρχιτεκτονικής του πυρήνα που είναι (για παράδειγμα arm64 κλπ)
  • εξαγωγή CROSS_COMPILE = : Εντοπίστε τη θέση του εργαλείου. Πρέπει να ταιριάζει με το ακριβές μονοπάτι και η παύλα στο τέλος είναι πραγματικά υποχρεωτική.
  • mkdir output: Δημιουργεί έναν κατάλογο για την αποθήκευση του compiled zimage
  • make c $ (pwd) O = output : Καθορισμός defconfig για την καθοδήγηση του compilation του πυρήνα.
  • make -j4-C $ (pwd) O = output : Όταν ξεκινά η διαδικασία κατασκευής, το -j # λέει πόσο γρήγορα θα δοκιμάσετε και να μεταγλωττίσετε. Συνήθως, ορίστε αυτόν τον αριθμό σύμφωνα με τον επεξεργαστή σας. Η ρύθμιση για το -j32 σε μια CPU προϋπολογισμού, για παράδειγμα, θα προκαλέσει πιθανώς τεράστια αστάθεια.
  • cp output / arch / arm / boot / Εικόνα $ (pwd) / arch / arm / boot / zImage : Αυτό είναι για την κίνηση της εικόνας σε μια δεύτερη διαδρομή.

Ενα άλλο παράδειγμα:

 #! / bin / bash εξαγωγή ARCH = εξαγωγή βραχίονα CROSS_COMPILE = $ (pwd) /arm-cortex-linux-gnueabi-linaro_5.2-2015.11-2/bin/arm-cortex-linux-gnueabi- mkdir έξοδος κάνει το C $ (pwd) O = έξοδος cp εξόδου / αψίδα / βραχίονας / εκκίνηση / Εικόνα $ (pwd) / arch / arm / boot / zImage (pwd) O = έξοδος msm8974_sec_defconfig VARIANT_DEFCONFIG = msm8974_sec_ks01_skt_defconfig SELINUX_DEFCONFIG = 

Για συσκευές ARM 64

 Εξαγωγή mkdir κάντε C $ (pwd) O = εξόδου "όνομα του defconfig (το όνομα του αρχείου πρέπει να τερματιστεί από κάτι όπως" nameofarch-something- ") εξόδου mkdir ARCH = arm64 εξαγωγή CROSS_COMPILE =" path to your toolchain " και παραλλαγή εάν χρειαστεί "make -j4-C $ (pwd) O = έξοδος 

Για συσκευές Mediatek (MTK)

 Εξαγωγή #! / bin / bash CROSS_COMPILE = "Διαδρομή προς την εργαλειοθήκη σας" (πρέπει να τερματίσει με κάτι όπως "nameofarch-something-") εξαγωγή ARCH = arm ARCH_MTK_PLATFORM = Δημιουργία "όνομα defconfig και παραλλαγή if needed" make -j4 

Αφού ολοκληρώσετε τα απαραίτητα βήματα για την αρχιτεκτονική του πυρήνα, μπορείτε να πληκτρολογήσετε το τερματικό: sudo bash build.sh

Στη συνέχεια, θα εισαγάγετε τον κωδικό πρόσβασης χρήστη και θα αρχίσει η διαδικασία σύνταξης.

Μπορεί να χρειαστεί λίγο, αλλά συνήθως όχι πολύ καιρό, η δημιουργία ενός πυρήνα δεν είναι σαν να συνθέτετε ολόκληρο το Android ROM. Αυτό είναι πραγματικά εξαρτώμενο από την CPU - για παράδειγμα, ένα AMD Phenom X4 3.4GHz με 8GB μνήμης RAM θα ​​πρέπει να διαρκέσει περίπου 10 λεπτά για να μεταγλωττίσει από την αρχή μέχρι το τέλος.

Όταν τελειώσει, θα πρέπει να σας ειδοποιήσει με ένα μήνυμα όπως το "zimage is ready".

Συσκευές ARM και ARM64

Μεταβείτε στην επιλογή "/ Output / arch / arm / boot /" για να βρείτε το δικό σας.

Mediatek Devices

Πηγαίνετε στην επιλογή "/ arch / arm / boot /" για να βρείτε το σαλιγκάρι σας.

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

Σημαντικό: Εάν πρόκειται να μεταγλωττίσετε ξανά, συνιστάται να εισάγετε τις εντολές καθαρίστε και να κάνετε το mrproper πριν αρχίσετε ξανά τη διαδικασία μεταγλώττισης.

Πραγματοποίηση της Εκκίνησης του Kernel

Υπάρχουν δύο επιλογές για να επιλέξετε.

Μπορείτε είτε να χρησιμοποιήσετε τη μέθοδο anykernel (όπως ορίζεται από τον χρήστη XDA @ osm0sis σε αυτό το νήμα XDA). Θα πρέπει να διαβάσετε ολόκληρο το σεμινάριο, αλλά μια περίληψη των βημάτων είναι η εξής:

  1. Τοποθετήστε το zImage στη ρίζα (dtb και / ή dtbo θα πρέπει επίσης να πάτε εδώ για συσκευές που απαιτούν προσαρμοσμένες, καθένα από τα οποία θα αντικαταστήσει το πρωτότυπο, αν δεν περιλαμβάνεται)
  2. Τοποθετήστε τα απαιτούμενα αρχεία ramdisk στο / ramdisk και τις μονάδες σε / modules (με την πλήρη διαδρομή όπως / modules / system / lib / modules)
  3. Τοποθετήστε τα απαιτούμενα αρχεία patch (γενικά μερικά αρχεία που πηγαίνουν με εντολές) στο / patch
  4. Τροποποιήστε το anykernel.sh για να προσθέσετε το όνομα του πυρήνα σας, την τοποθεσία του διαμερίσματος εκκίνησης, τα δικαιώματα για τα αρχεία ramdisk που περιλαμβάνονται και να χρησιμοποιήσετε τις μεθόδους για οποιεσδήποτε απαιτούμενες τροποποιήσεις του ramdisk (προαιρετικά επίσης τοποθετήστε αρχεία banner και / ή έκδοση στη ρίζα για να εμφανίζονται αυτά κατά τη διάρκεια του φλας)
  5. `zip -r9 UPDATE-AnyKernel2.zip * -x .git README.md * placeholder`

Η άλλη μέθοδος που διαθέτετε είναι να αποσυσκευάσετε το boot.img από το ίδιο ROM (όπως CM, TouchWiz, EMUI κ.λπ.) και την ίδια έκδοση Android. Στη συνέχεια, θα εναλλάξετε το Zimage. Και πάλι, αυτή είναι μια πολύ περίπλοκη διαδικασία και πρέπει να διαβάσετε το ακριβές φροντιστήριο, αλλά μια σύνοψη των βημάτων είναι:

  1. Ανοίγω φερμουάρ.
  2. Χρησιμοποιήστε τη γραμμή εντολών "unpackimg" ή απλώς σύρετε και αποθέστε την εικόνα. Αυτό θα διαιρέσει την εικόνα και θα αποσυμπιέσει το ramdisk σε έναν υποκατάλογο.
  3. Αλλάξτε το ramdisk όπως θέλετε.
  4. Η δέσμη δέσμης repackimg δεν απαιτεί είσοδο και απλά ανασυνδυάζει το προηγουμένως χωρισμένο zImage με τον πρόσφατα συσκευασμένο τροποποιημένο ramdisk χρησιμοποιώντας όλες τις αρχικές πληροφορίες εικόνας (οι οποίες επίσης διαχωρίστηκαν και αποθηκεύτηκαν).
  5. Η δέσμη δέσμης ενεργειών εκκαθάρισης επαναφέρει το φάκελο στην αρχική της κατάσταση, καταργώντας τους καταλόγους split_img + ramdisk και τυχόν νέα πακέτα ramdisk ή αρχεία εικόνας.

Πριν αναβοσβήνετε τον πυρήνα σας, θα πρέπει να δημιουργήσετε ένα αντίγραφο ασφαλείας του stock boot.img και, στη συνέχεια, να αναβοσβήνει ο πυρήνας σας για να δείτε αν επιτρέπει στο σύστημα Android να εκκινήσει.

Προσθήκη λειτουργιών στον πυρήνα σας

Η προσθήκη δυνατοτήτων στον πυρήνα σας είναι ένας πολύ καλός τρόπος για να το φτιάξετε. Υπάρχουν πολλά πράγματα που μπορείτε να τροποποιήσετε, όπως διοικητές CPU, προγραμματιστές IO, overclocking τη GPU, βελτιώσεις ήχου κ.λπ.

Ένα παράδειγμα για την προσθήκη ενός κυβερνήτη είναι εδώ (αυτός ο κυβερνήτης είναι με την κωδική ονομασία Intellimm).

Μπορούμε να δούμε στα πρώτα 2 πλαίσια κειμένου ότι στο "arch / arm / configs /" "msm8974_sec_defconfig" και "cm_msm8974_sec_defconfig" έχουν τροποποιηθεί.

Μεταξύ των γραμμών 140 και 141 αυτών των αρχείων προστέθηκε αυτό το κείμενο: "CONFIG_CPU_FREQ_GOV_INTELLIMM = y"

(Αυτή η γραμμή είναι για την ενεργοποίηση του Intellimm κατά τη σύνταξη του πυρήνα σας)

Η ίδια τεχνική ισχύει για τα άλλα πλαίσια κειμένου (αυτά που έχουν προστεθεί και διαγραφεί και είναι η θέση τους)

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

Για να το συνοψίσουμε, μια δέσμευση ας δούμε όλες τις αλλαγές που έγιναν και όλα τα άλλα!

Γενικές συμβουλές και κόλπα

Πώς να αλλάξετε το όνομα και την έκδοση του πυρήνα:

Η απλή μέθοδος:

Επεξεργαστείτε αυτήν τη γραμμή στο αρχείο defconfig:

 "CONFIG_LOCALVERSION =" - "μετά από - στο defconfig 

Παράδειγμα: CONFIG_LOCALVERSION = "- XenomTW-3.2.6"

Οι προηγμένες μέθοδοι:

Μεταβείτε στο Makefile στο ριζικό φάκελο της πηγής του πυρήνα σας.

Προσθέστε αυτές τις γραμμές:

 CONFIG_LOCALVERSION = "nameofyourkernel" LOCALVERSION = "versionofyourkernel" 

ΜΗΝ τροποποιήσετε τις γραμμές Έκδοση, PatchLevel, Subblevel, ή Extraversion.

Εναλλακτική μέθοδος:

Μεταβείτε στα scripts / mkcompile_h και προσθέστε αυτές τις γραμμές:

 LINUX_COMPILE_BY = "nameofyourchoice" LINUX_COMPILE_HOST = "nameofyourchoice" 

Επίλυση προβλημάτων PATH:

Αν αντιμετωπίσετε το σφάλμα "Είναι σωστή η διαδρομή σας", δοκιμάστε αυτό στο τερματικό Linux:

 "εξαγωγή PATH =" pathtotoolchainlocation "/ bin: $ PATH" 

Πρόσβαση στους φακέλους του Ubuntu από τα Windows 10

Η διαδρομή σας προς το Ubuntu θα πρέπει τυπικά να είναι:

C: \ Χρήστες "NAME" \ AppData \ Τοπικές \ Πακέτα \ CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc \ LocalState \ rootfs \ home

Αλλά δεν πρέπει να επεξεργάζεστε αρχεία απευθείας από τα Windows, καθώς αυτό συνήθως θα σπάσει τα δικαιώματα σε αυτά - τότε θα χρειαστεί να επαναφέρετε τα δικαιώματα από το τερματικό Linux.

Ενδιαφέροντα Άρθρα