Bagaimana Membina Kernel Android pada Windows 10

Appual mempunyai beberapa panduan hebat mengenai pembangunan Android, seperti Cara Membangun ROM Custom dari Projek Sumber Terbuka Android - namun panduan ini biasanya ditujukan ke persekitaran membina tulen Linux.

Dalam panduan ini, kami akan menunjukkan kepada anda cara membina kernel Android pada Windows 10 - ya, kami masih akan menggunakan persekitaran membina Linux, tetapi ia akan menjadi subsistem Linux dalam Windows 10. Jadi jika anda adalah Windows 10 pengguna yang berminat untuk membangunkan Android, ikuti panduan kami dengan teliti.

Dalam panduan ini, kami secara khusus akan mempelajari cara membina kernel untuk peranti ARM dan MediaTek, menambah ciri, dan gambaran asas menggunakan Git.

Keperluan

  • Windows 10 x64 (dengan kemas kini Fall Creator)

Menyediakan Persekitaran Linux

  1. Pada Windows 10, pergi ke Tetapan> Kemas kini dan Keselamatan> Untuk Pemaju> dayakan Mod Pemaju.
  2. Pergi ke Panel Kawalan> Program> Padam Ciri Windows Hidupkan atau Matikan> dayakan Windows Subsystem untuk Linux.
  3. Reboot PC anda.
  4. Lancarkan subsistem Linux, dan biarkan ia melalui proses muat turun. Tetapkan kata laluan dan jangan kehilangannya.
  5. Sekarang pergi ke kedai aplikasi Windows, dan muat turun Ubuntu.
  6. Lancarkan Ubuntu pada desktop Windows 10, dan ia akan meminta nama pengguna dan kata laluan.
  7. Di Ubuntu, lancarkan terminal asli dan ketik perintah berikut: kemas kini apt-get
  8. Ini akan terus mengemas kini semua repos untuk aplikasi dan dependensi.
  9. Selanjutnya dalam jenis terminal: sudo apt-get install -y build-essential kernel-package libncurses5-dev bzip2
  10. Untuk memeriksa sama ada semua dependencies telah dipasang dengan betul, taip 'gcc' di terminal (tiada petikan).
  11. Jika "gcc" sudah dipasang, anda harus melihat "gcc: ralat maut: tiada fail input"
  12. Kini anda boleh menaip 'membuat' di terminal. Jika "buat" sudah dipasang, anda harus melihat "buat: *** tiada sasaran yang ditentukan dan tiada fail yang dijumpai. berhenti. "
  13. Jenis seterusnya 'git', dan iff "git" sudah dipasang, anda perlu melihat banyak perintah git asas.
  14. Sekarang kita memerlukan beberapa alat ganti (terdapat beberapa jenis, termasuk GCC, Linaro, dan segelintir adat). Sesetengah peranti mungkin memerlukan alat ganti yang berbeza, contohnya, tidak semua bilah peranti akan boot atau dikompilasi dengan GCC.

Untuk Peranti ARM

Kami akan menggunakan GCC 4.7 untuk ini.

  1. Buka terminal Linux dan ketik: mkdir kernel
  2. Sekarang taipkan: kernel cd
  3. (ia tidak perlu 'kernel', ini adalah untuk kesederhanaan, anda boleh namakan apa sahaja yang anda mahukan.)
  4. Sekarang taip: klon git //android.googlesource.com/platform/prebuilts/gcc/linux-x86/arm/arm-eabi-4.7

Untuk ARM 64 Peranti

Anda memerlukan penyusun kernel 64-bit untuk peranti ARM 64, contohnya aarch64.

Mendapatkan Fail Sumber untuk Peranti anda

Ini adalah bahagian rumit, kerana anda perlu mencari repo GitHub yang menjadi tuan rumah sumber kernel anda. Anda sememangnya perlu mencarinya, kemungkinan besar ia boleh didapati di forum XDA.

Berikut adalah contoh Git sumber kernel.

Di sebelah kiri atas, anda sepatutnya melihat "Cawangan: Selesai oleh xxxx".

Terdapat pelbagai versi kernel / projek, biasanya dipisahkan oleh "Testing", "Beta", "Release Final", dan lain-lain.

Folder kernel biasanya seperti berikut:

  • / arch / arm / configs : Ini mengandungi pelbagai fail config untuk peranti, seperti gabenor, dll.
  • / output / arch / arm / boot / : Ini adalah tempat zimage akan disimpan.
  • build.sh : Skrip yang akan memudahkan proses pembinaan.
  • /arm-cortex-linux-gnueabi-linaro_5.2-2015.11-2 : Ini biasanya merupakan toolchain yang diletakkan di dalam sumber kernel, sehingga memudahkan pencarian.

Anda perlu memuat turun sumber kernel anda.

Buka terminal Linux dan pastikan anda berada dalam folder kernel yang anda buat sebelumnya (kernel cd).

Kemudian ketik terminal: "klon git" URL kernel github "-b" nama cawangan "

Untuk Contoh: "git clone //github.com/atxoxx/android_ke...amsung_msm8974 -b xenomTW"

Membina Kernel

Untuk memudahkannya, anda boleh menavigasi ke lokasi dalam fail explorer. Ia harus / home / user ID / kernel (atau apa sahaja yang anda namakan folder kernel).

Anda harus melihat dua folder di dalam, untuk toolchain dan sumber kernel. Masuk ke dalam folder sumber kernel.

Untuk Peranti ARM

Dalam terminal, ketik perintah berikut:

 #! / bin / bash eksport ARCH = eksport lengan CROSS_COMPILE = output mkdir -C $ (pwd) O = keluaran "nama defconfig dan varian jika diperlukan" buat -j4 -C $ (pwd) O = output 

Berikut adalah gambaran keseluruhan arahan-arahan ini, untuk menjadikannya lebih mudah di masa depan.

  • #! / bin / bash: Memaparkan skrip untuk menjalankan perintah shell
  • eksport ARCH = lengan: Menentukan jenis arsitektur kernel yang mana (Contoh arm64 dan sebagainya)
  • eksport CROSS_COMPILE = : Cari tempat toolchain itu. Ia mesti sepadan dengan jalan yang tepat, dan lengkungan pada akhirnya benar-benar wajib.
  • output mkdir: Ini mewujudkan direktori untuk menyimpan zimage yang disusun
  • buat -C $ (pwd) O = output : Menentukan defconfig untuk membimbing kompilasi kernel.
  • make -j4 -C $ (pwd) O = output : Apabila proses bangunan dimulai, -j # menceritakan seberapa cepat untuk mencuba dan mengkompilasi. Biasanya, anda menetapkan nombor ini mengikut CPU anda. Menetapkan pada -j32 pada CPU anggaran, sebagai contoh, mungkin akan menyebabkan ketidakstabilan besar-besaran.
  • cp output / arch / arm / boot / Image $ (pwd) / arch / arm / boot / zImage : Ini adalah untuk memindahkan imej ke laluan kedua.

Contoh yang lain:

 #! / bin / bash eksport ARCH = eksport lengan CROSS_COMPILE = $ (pwd) /arm-cortex-linux-gnueabi-linaro_5.2-2015.11-2/bin/arm-cortex-linux-gnueabi- mkdir output make -C $ (pwd) O = output msm8974_sec_defconfig VARIANT_DEFCONFIG = msm8974_sec_ks01_skt_defconfig SELINUX_DEFCONFIG = selinux_defconfig make -j4 -C $ (pwd) O = output cp output / arch / arm / boot / Image $ (pwd) / arch / arm / boot / zImage 

Untuk ARM 64 Peranti

 #! / bin / bash eksport ARCH = eksport arm64 CROSS_COMPILE = "jalan ke toolchain anda" (ia perlu diakhiri dengan sesuatu seperti "nameofarch-something-") output mkdir buat -C $ (pwd) O = output "name of defconfig dan variasi jika diperlukan "make -j4 -C $ (pwd) O = output 

Untuk Peranti Mediatek (MTK)

 #! / bin / bash eksport CROSS_COMPILE = "laluan ke toolchain anda" (ia harus diakhiri dengan sesuatu seperti "nameofarch-something-") ekspor ARCH = lengan ARCH_MTK_PLATFORM = buat "nama defconfig dan variasi jika diperlukan" 

Apabila anda telah menyelesaikan langkah-langkah yang diperlukan untuk senibina kernel anda, anda boleh menaip terminal: sudo bash build.sh

Anda kemudian akan memasukkan kata laluan pengguna anda, dan proses penyusun akan bermula.

Ia mungkin mengambil sedikit masa tetapi biasanya tidak lama, menyusun kernel tidak seperti menyusun ROM Android keseluruhan. Ini benar-benar bergantung kepada CPU - sebagai contoh, AMD Phenom X4 3.4GHz dengan 8GB RAM perlu mengambil masa kira-kira 10 minit untuk dikompilasi dari awal hingga akhir.

Apabila selesai, ia harus memberitahu anda dengan mesej seperti "zimage sudah siap".

ARM dan ARM64 Peranti

Pergi ke "/ Output / arch / arm / boot /" untuk mencari zimage anda.

Peranti Mediatek

Pergi ke "/ arch / arm / boot /" untuk mencari zimage anda.

Tidak semua binaan kernel akan menghasilkan fail Zimage, kadang-kadang boleh dibina sebagai format imej lain.

Penting: Jika anda akan menyusun semula, disarankan agar anda memasukkan perintah bersih dan membuat mrproper sebelum anda memulakan proses penyusunan semula.

Membuat Boot Kernel

Terdapat dua pilihan untuk anda pilih.

Anda boleh menggunakan kaedah anykernel (seperti yang ditakrifkan oleh pengguna XDA @ osm0sis dalam benang XDA ini). Anda harus membaca keseluruhan tutorial, tetapi ringkasan langkah-langkahnya adalah seperti berikut:

  1. Letakkan zImage di root (dtb dan / atau dtbo juga harus pergi ke sini untuk peranti yang memerlukan adat, masing-masing akan jatuh ke asal jika tidak dimasukkan)
  2. Letakkan apa-apa fail ramdisk yang diperlukan dalam / ramdisk dan modul dalam / modul (dengan jalan penuh seperti / modul / sistem / lib / modul)
  3. Letakkan fail patch yang diperlukan (biasanya fail separa yang pergi dengan arahan) dalam / patch
  4. Ubah suai anykernel.sh untuk menambah nama kernel anda, lokasi partition boot, izin untuk fail ramdisk yang disertakan, dan gunakan kaedah untuk pengubahsuaian ramdisk yang diperlukan (opsyenal juga letakkan banner dan / atau fail versi di root untuk memaparkannya semasa kilat)
  5. `zip -r9 UPDATE-AnyKernel2.zip * -x .git README.md * placeholder`

Kaedah lain yang anda ada ialah mengeluarkan boot.img dari ROM yang sama (seperti CM, TouchWiz, EMUI, dan lain-lain) dan versi Android yang sama. Anda kemudian akan menukar Zimage. Sekali lagi, ini adalah proses yang sangat rumit dan anda harus membaca tutorial yang tepat, tetapi ringkasan langkah-langkahnya ialah:

  1. Unzip.
  2. Sama ada menggunakan baris perintah "unpackimg", atau hanya drag-and-drop imej. Ini akan memecah imej dan membongkar ramdisk ke subdirektori.
  3. Tukar ramdisk yang anda suka.
  4. Skrip batch repackimg tidak memerlukan input dan hanya mengkombinasikan zImage yang telah terbahagi sebelumnya dengan ramdisk yang diubah suai yang baru dikemas menggunakan semua maklumat imej asal (yang juga berpecah dan disimpan).
  5. Skrip batch pembersihan semula folder ke keadaan awalnya, mengeluarkan direktori split_img + ramdisk dan mana-mana ramdisk baru atau fail imej yang dibungkus.

Sebelum anda menyalakan kernel anda, anda perlu membuat sandaran boot.img stok anda, dan kemudian kilat kernel anda untuk melihat sama ada ia membolehkan sistem Android anda boot.

Menambah Ciri ke Kernel anda

Menambah ciri-ciri pada kernel anda adalah cara yang bagus untuk membiasakannya. Terdapat banyak perkara yang boleh anda tweak, seperti gabenor CPU, penjadual IO, overclocking GPU, peningkatan audio, dll.

Satu contoh untuk menambah gabenor ada di sini (gubernur ini diberi nama Intellimm).

Kita dapat melihat dalam kotak teks pertama 2 bahawa dalam "lengkung / lengan / configs /" "msm8974_sec_defconfig" dan "cm_msm8974_sec_defconfig" telah diubahsuai.

Antara garisan 140 dan 141 fail ini teks ini telah ditambahkan: "CONFIG_CPU_FREQ_GOV_INTELLIMM = y"

(Baris ini adalah untuk membolehkan Intellimm apabila anda menyusun kernel anda)

Teknik yang sama berlaku untuk kotak teks lain (apa yang telah ditambah dan dipadam dan lokasinya)

Bergantung pada ciri yang anda tambahkan, lebih kurang sedikit fail boleh diubah, ditambah atau dipadam.

Oleh itu, untuk kompaun, Komiti mari kita lihat semua perubahan yang telah dibuat dan segala-galanya!

Tips dan Trik Umum

Bagaimana untuk menukar nama dan versi kernel:

Kaedah mudah:

Edit baris ini dalam fail defconfig anda:

 "CONFIG_LOCALVERSION =" - "selepas - dalam defconfig anda 

Contoh: CONFIG_LOCALVERSION = "- XenomTW-3.2.6"

Kaedah lanjutan:

Navigasi ke Makefile di folder akar sumber kernel anda.

Tambahkan baris ini:

 CONFIG_LOCALVERSION = "nameofyourkernel" LOCALVERSION = "versionofyourkernel" 

JANGAN mengubah suai versi Versi, PatchLevel, Sublevel, atau Extraversion.

Kaedah alternatif:

Pergi ke skrip / mkcompile_h dan tambahkan baris ini:

 LINUX_COMPILE_BY = "nameofyourchoice" LINUX_COMPILE_HOST = "nameofyourchoice" 

Menyelesaikan masalah PATH:

Jika anda menghadapi ralat "Adakah laluan anda betul?", Cuba ini di terminal Linux:

 "eksport PATH =" pathtotoolchainlocation "/ bin: $ PATH" 

Mengakses folder Ubuntu anda dari Windows 10

Laluan anda ke Ubuntu biasanya harus:

C: \ Users "NAME" \ AppData \ Local \ Packages \ CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc \ LocalState \ rootfs \ home

Tetapi anda tidak boleh mengedit fail secara langsung dari Windows, kerana ini biasanya akan memecahkan kebenaran ke atasnya - anda kemudian perlu menetapkan semula keizinan dari dalam terminal Linux.

Artikel Yang Menarik