Cara Membangun Kernel Android pada Windows 10

Appual's memiliki beberapa panduan hebat tentang pengembangan Android, seperti Cara Membuat ROM Kustom dari Proyek Sumber Terbuka Android - tetapi panduan ini biasanya diarahkan pada lingkungan pembuatan Linux murni.

Dalam panduan ini, kami akan menunjukkan kepada Anda bagaimana membangun kernel Android pada Windows 10 - ya, kami masih akan menggunakan lingkungan build Linux, tetapi itu akan menjadi subsistem Linux di dalam Windows 10. Jadi jika Anda seorang Windows 10 pengguna yang tertarik mengembangkan Android, ikuti panduan kami dengan seksama.

Dalam panduan ini, kita secara khusus akan belajar bagaimana membangun kernel untuk perangkat ARM dan MediaTek, menambahkan fitur, dan gambaran umum dasar menggunakan Git.

Persyaratan

  • Windows 10 x64 (dengan pembaruan Fall Creator)

Menyiapkan Lingkungan Linux

  1. Pada Windows 10, buka Pengaturan> Pembaruan dan Keamanan> Untuk Pengembang> aktifkan Mode Pengembang.
  2. Sekarang pergi ke Control Panel> Program> Aktifkan atau Matikan Fitur Windows> aktifkan Windows Subsystem untuk Linux.
  3. Nyalakan kembali PC Anda.
  4. Luncurkan subsistem Linux, dan biarkan melalui proses pengunduhan. Tetapkan kata sandi dan jangan sampai hilang.
  5. Sekarang pergi ke toko aplikasi Windows, dan unduh Ubuntu.
  6. Luncurkan Ubuntu di desktop Windows 10, dan ia akan meminta nama pengguna dan kata sandi.
  7. Di Ubuntu, luncurkan terminal asli dan ketik perintah berikut: apt-get update
  8. Ini akan melanjutkan untuk memperbarui semua repo untuk aplikasi dan dependensi.
  9. Selanjutnya dalam tipe terminal: sudo apt-get install -y build-essential kernel-package libncurses5-dev bzip2
  10. Untuk memeriksa apakah semua dependensi telah diinstal dengan benar, ketik 'gcc' di terminal (tidak ada tanda kutip).
  11. Jika "gcc" sudah diinstal, Anda akan melihat "gcc: kesalahan fatal: tidak ada file input"
  12. Sekarang Anda dapat mengetik 'make' di terminal. Jika "make" sudah diinstal, Anda akan melihat "make: *** tidak ada target yang ditentukan dan tidak ada makefile ditemukan. berhenti."
  13. Selanjutnya ketik 'git', dan jika "git" sudah diinstal, Anda akan melihat banyak perintah dasar git.
  14. Sekarang kita memerlukan beberapa toolchains (ada beberapa jenis, termasuk GCC, Linaro, dan beberapa yang khusus). Beberapa perangkat mungkin memerlukan rantai alat yang berbeda, misalnya, tidak semua kernel perangkat akan melakukan boot atau kompilasi dengan GCC.

Untuk Perangkat ARM

Kami akan menggunakan GCC 4.7 untuk ini.

  1. Buka terminal Linux dan ketik: mkdir kernel
  2. Sekarang ketik: cd kernel
  3. (tidak harus 'kernel', ini hanya untuk kesederhanaan, Anda dapat memberi nama apa pun yang Anda inginkan.)
  4. Sekarang ketik: git clone //android.googlesource.com/platform/prebuilts/gcc/linux-x86/arm/arm-eabi-4.7

Untuk Perangkat ARM 64

Anda memerlukan kompiler kernel 64-bit untuk perangkat ARM 64, misalnya aarch64.

Mendapatkan File Sumber untuk Perangkat Anda

Ini adalah bagian yang sulit, karena Anda perlu menemukan repo GitHub yang meng-host sumber kernel Anda. Anda tentu saja harus mencarinya, kemungkinan besar dapat ditemukan di forum XDA.

Berikut ini adalah contoh sumber kernel Git.

Di sisi kiri atas, Anda akan melihat "Cabang: Selesai oleh xxxx".

Ada beberapa versi kernel / proyek yang berbeda, biasanya dipisahkan oleh "Testing", "Beta", "Final Release", dll.

Folder kernel biasanya sebagai berikut:

  • / arch / arm / configs : Ini berisi berbagai file konfigurasi untuk perangkat, seperti gubernur, dll.
  • / output / arch / arm / boot / : Di sinilah zimage akan disimpan.
  • build.sh : Sebuah skrip yang akan menyederhanakan proses pembangunan.
  • /arm-cortex-linux-gnueabi-linaro_5.2-2015.11-2 : Ini biasanya merupakan toolchain yang ditempatkan di sumber kernel, sehingga membuatnya lebih mudah ditemukan.

Anda perlu mengunduh sumber kernel Anda.

Buka terminal Linux dan pastikan Anda berada di folder kernel yang Anda buat sebelumnya (cd kernel).

Kemudian ketik terminal: "git clone" URL dari kernel github "-b" nama cabang "

Sebagai Contoh: “git clone //github.com/atxoxx/android_ke… Samsung_msm8974 -b xenomTW”

Membangun Kernel

Untuk membuatnya lebih mudah, Anda dapat menavigasi ke lokasi di file explorer. Itu harus / home / ID pengguna / kernel (atau apa pun yang Anda beri nama folder kernel).

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

Untuk Perangkat ARM

Di terminal, ketikkan perintah berikut:

 #! / bin / bash export ARCH = arm export CROSS_COMPILE = mkdir output make -C $ (pwd) O = output "nama defconfig dan varian jika diperlukan" make -j4 -C $ (pwd) O = output 

Berikut ini adalah ikhtisar dari apa yang dilakukan perintah ini, untuk membuatnya lebih mudah di masa depan.

  • #! / bin / bash: Memberitahu skrip untuk dijalankan di perintah shell
  • export ARCH = arm: Menentukan tipe arsitektur kernel yang mana (Misalnya arm64 dll)
  • export CROSS_COMPILE = : Temukan di mana toolchain berada. Itu harus cocok dengan jalan yang tepat, dan tanda hubung pada akhirnya benar-benar wajib.
  • mkdir output: Ini membuat direktori untuk menyimpan zimage yang dikompilasi
  • make -C $ (pwd) O = output : Mendefinisikan defconfig untuk memandu kompilasi kernel.
  • make -j4 -C $ (pwd) O = output : Ketika proses pembangunan dimulai, -j # memberitahukan seberapa cepat untuk mencoba dan mengkompilasi. Biasanya, Anda mengatur nomor ini sesuai dengan CPU Anda. Menyetel -j32 pada CPU anggaran, misalnya, mungkin akan menyebabkan ketidakstabilan besar-besaran.
  • cp output / arch / arm / boot / Gambar $ (pwd) / arch / arm / boot / zImage : Ini untuk memindahkan gambar ke jalur kedua.

Contoh lain:

 #! / bin / bash export ARCH = ekspor arm 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 membuat -j4 -C $ (pwd) O = Output cp keluaran / arch / arm / boot / Gambar $ (pwd) / arch / arm / boot / zImage 

Untuk Perangkat ARM 64

 #! / bin / bash export ARCH = arm64 export CROSS_COMPILE = "path ke toolchain Anda" (harus diakhiri dengan sesuatu seperti "nameofarch-something-") mkdir menghasilkan make -C $ (pwd) O = output "nama defconfig dan varian jika diperlukan "make -j4 -C $ (pwd) O = output 

Untuk Perangkat Mediatek (MTK)

 #! / bin / bash export CROSS_COMPILE = "path ke toolchain Anda" (harus diakhiri dengan sesuatu seperti "nameofarch-something-") ekspor ARCH = arm ARCH_MTK_PLATFORM = buat "nama defconfig dan varian jika diperlukan" make -j4 

Ketika Anda telah menyelesaikan langkah-langkah yang diperlukan untuk arsitektur kernel Anda, Anda dapat mengetik di terminal: sudo bash build.sh

Anda kemudian akan memasukkan kata sandi pengguna Anda, dan proses kompilasi akan dimulai.

Mungkin butuh beberapa saat tetapi biasanya tidak terlalu lama, kompilasi kernel tidak seperti mengkompilasi seluruh ROM Android. Ini benar-benar tergantung pada CPU - misalnya, AMD Phenom X4 3.4GHz dengan 8GB RAM akan membutuhkan waktu sekitar 10 menit untuk dikompilasi dari awal hingga selesai.

Ketika selesai, itu akan memberi tahu Anda dengan pesan seperti "zimage siap".

Perangkat ARM dan ARM64

Buka "/ Output / arch / arm / boot /" untuk menemukan zimage Anda.

Perangkat Mediatek

Buka "/ arch / arm / boot /" untuk menemukan zimage Anda.

Tidak semua kernel build akan menghasilkan file Zimage, terkadang dapat dibangun sebagai format gambar lainnya.

Penting: Jika Anda akan melakukan kompilasi lagi, Anda disarankan untuk memasukkan perintah make clean dan membuat mrproper sebelum Anda memulai proses kompilasi kembali.

Membuat Kernel Boot

Ada dua opsi untuk Anda pilih.

Anda dapat menggunakan metode kernel apa saja (seperti yang didefinisikan oleh pengguna XDA @ osm0sis di utas XDA ini). Anda harus membaca keseluruhan tutorial, tetapi ringkasan langkah-langkahnya adalah sebagai berikut:

  1. Tempatkan zImage di root (dtb dan / atau dtbo juga harus pergi di sini untuk perangkat yang membutuhkan yang kustom, masing-masing akan mundur ke aslinya jika tidak termasuk)
  2. Tempatkan file ramdisk yang diperlukan di / ramdisk dan modul di / modules (dengan path lengkap seperti / modules / system / lib / modules)
  3. Tempatkan semua file tambalan yang diperlukan (umumnya file sebagian yang disertai perintah) di / patch
  4. Ubah anykernel.sh untuk menambahkan nama kernel Anda, lokasi partisi boot, izin untuk file ramdisk yang disertakan, dan gunakan metode untuk setiap modifikasi ramdisk yang diperlukan (opsional, tempatkan spanduk dan / atau file versi di root agar ditampilkan di flash)
  5. `zip -r9 UPDATE-AnyKernel2.zip * -x .g README.md * placeholder`

Metode lain yang Anda miliki adalah membongkar boot.img dari ROM yang sama (seperti CM, TouchWiz, EMUI, dll.) 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 adalah:

  1. Unzip.
  2. Baik menggunakan command-line "unpackimg", atau cukup drag-and-drop gambar. Ini akan membagi gambar dan membongkar ramdisk ke subdirektori.
  3. Ubah ramdisk sesuka Anda.
  4. Skrip batch repackimg tidak memerlukan input dan hanya menggabungkan kembali zImage yang sebelumnya dipisah dengan ramdisk yang baru dimodifikasi dengan menggunakan semua informasi gambar asli (yang juga dipecah dan disimpan).
  5. Skrip batch pembersihan mengatur ulang folder ke keadaan awal, menghapus direktori split_img + ramdisk dan semua file ramdisk atau file gambar yang baru dikemas.

Sebelum Anda mem-flash kernel Anda, Anda harus membuat cadangan dari boot.img stock Anda, dan kemudian mem-flash kernel Anda untuk melihat apakah itu memungkinkan sistem Android Anda untuk boot.

Menambahkan Fitur ke Kernel Anda

Menambahkan fitur ke kernel Anda adalah cara yang bagus untuk membumbui itu. Ada banyak hal yang dapat Anda atur, seperti gubernur CPU, penjadwal IO, overclocking GPU, peningkatan audio, dll.

Contoh untuk menambahkan gubernur ada di sini (gubernur ini diberi nama kode Intellimm).

Kita dapat melihat dalam 2 kotak teks pertama bahwa “arch / arm / configs /” “msm8974_sec_defconfig” dan “cm_msm8974_sec_defconfig” telah dimodifikasi.

Antara baris 140 dan 141 file ini teks ini telah ditambahkan: “CONFIG_CPU_FREQ_GOV_INTELLIMM = y”

(Baris ini untuk mengaktifkan Intellimm ketika Anda mengkompilasi kernel Anda)

Teknik yang sama berlaku untuk kotak teks lainnya (apa yang telah ditambahkan dan dihapus dan lokasinya)

Bergantung pada fitur yang Anda tambahkan, lebih atau kurang file dapat dimodifikasi, ditambahkan atau dihapus.

Jadi singkatnya, sebuah Komit mari kita lihat semua perubahan yang telah dibuat dan yang lainnya!

Tips dan Trik Umum

Cara mengubah nama dan versi kernel:

Metode sederhana:

Edit baris ini di file defconfig Anda:

 "CONFIG_LOCALVERSION =" - "after - di defconfig Anda 

Contoh: CONFIG_LOCALVERSION = ”- XenomTW-3.2.6 ″

Metode lanjutan:

Arahkan ke Makefile di folder root dari sumber kernel Anda.

Tambahkan baris ini:

 CONFIG_LOCALVERSION = "nameofyourkernel" LOCALVERSION = "versionofyourkernel" 

JANGAN memodifikasi baris Versi, PatchLevel, Sublevel, atau Extraversion.

Metode alternatif:

Buka skrip / mkcompile_h dan tambahkan baris ini:

 LINUX_COMPILE_BY = "nameofyourchoice" LINUX_COMPILE_HOST = "nameofyourchoice" 

Memecahkan masalah PATH:

Jika Anda menemukan kesalahan "Apakah jalur Anda benar?", Coba ini di terminal Linux:

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

Mengakses folder Ubuntu Anda dari Windows 10

Jalur Anda ke Ubuntu biasanya adalah:

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

Tetapi Anda tidak boleh mengedit file langsung dari Windows, karena ini biasanya akan merusak izin - Anda perlu mengatur ulang izin dari dalam terminal Linux.

Artikel Menarik