First thing you should know is, i'm not an expert android developers. Jadi mohon maaf bila dalam penyampaian artikel ini kurang begitu bisa dimengerti. Saya juga minta koreksi kepada developer-developer lainnya, karena tak ada gading yang tak retak, jadi saya pasti ada salahnya :D
Dan selanjutnya, artikel ini juga tidak langsung membuat anda menjadi expert. Gunakan artikel ini sebagai acuan bagaimana step membuat kernel android (pertama) anda :D
Oh iya, saya tidak akan menjelaskannya dengan banyak. Saya hanya akan memberikan gambaran bagaimana step membuat kernel anda. Tentang fitur-fitur kernel anda, silahkan anda eksplor sendiri ya :)
So let's begin with the requirements :
- An Android Device. Jelas, anda perlu smartphone android anda.
- A linux-distribution OS. Saya sarankan memakai Ubuntu karena menurut saya paling mudah :)
- Linux Packages. Akan saya jelaskan apa saja yang dibutuhkan (commonly/mostly)
- Kernel Sources. Tentu saja, anda butuh source kernel android anda.
- And Toolchains.Gunanya buat ngecompile kernel kita nantinya.
Android Device
Anda perlu melihat-lihat android anda, tipe chip yang digunakan. Silahkan anda browsing chip hp anda terlebih dahulu :)Linux Distro
Kebanyakan sesama developer yang saya tanyai menggunakan Ubuntu. Sebenarnya sah-sah saja menggunakan distro lain, tapi saya lebih prefer ke Ubuntu sih. Oh iya, perlu diingat, wajib memiliki arsitektur 64bit. Bukan hanya computer hostnya saja yang menggunakan 64bit, tapi distro linuxnya juga ya :)Linux Packages
Package yang digunakan untuk mengcompile sebuah kernel terdiri dari : git-core, gnupg, flex, bison, gperf, libsdl-dev, libesd0-dev, libwxgtk2.6-dev, build-essential, zip, curl, libncurses5-dev, zlib1g-dev, ia32-libs, lib32z1-dev, lib32ncurses5-dev, gcc-multilib, dan g++-multilib. Saya tidak akan menjelaskannya kepada anda, tetapi anda perlu mencari tahu sendiri fungsi package tersebut.Kernel Sources
Tentunya anda perlu mencari source kernel terlebih dahulu. Apakah anda akan mencari factory-kernel, ataukah anda mencari kernel orang lain.Beberapa vendor smartphone menyediakannya, jadi silahkan anda explore sendiri ya. Beberapa websitenya sebagai berikut :
http://www.htcdev.com/
http://opensource.samsung.com/
http://developer.sonymobile.com/wpor...ads/opensource
http://www.lg.com/global/support/ope...opensource.jsp
Kalau anda bertanya "Mediatek gimana?", jujur saya harus mengatakan kepada anda bahwa mediatek tidak pernah merilis source kernelnya secara langsung. Beberapa memang tersedia dan tersebar luas (melalui website Acer).
Toolchains
Anda bisa menggunakan berbagai macam toolchains. Sebelum anda mengguanakan toolchains, silahkan sesuaikan dengan chip smartphone anda.LET'S START
Building Environment
- Install packages yang telah saya sediakan di atas. Kalau ada yang versi terbaru, anda bisa menggunakannya. Seingat saya, packages tersebut memerlukan space sekitar 140 mb.
- Buatlah directory baru. Dalam hal ini kita membuat direktori androidkern.
- Ketikkan "git clone git://github.com/toolchains/anda.git toolchains". Akan ada folder baru yang bernama toolchains.
- Ekstrak source kernel anda. Anggap lokasi kernel anda adalah ~/androidkern/fajarkernel
Adding some patchs and modifications
Inilah bagian dimana anda akan disibukkan dengan editing dan editing. Untuk menambahkan fitur-fitur dalam kernel anda, silahkan anda mencari-cari di github. Atau anda bisa melihat kernel buatan developer lainnya, sehingga anda bisa mengaplikasikannya ke smartphone anda.Seperti di awal artikel, saya tidak akan menjelaskan fitur-fitur kernel anda. Jadi silahkan eksplor sendiri ya. Beberapa fitur kernel tersedia di github beserta penjelasan dan cara apply fitur ke dalam kernel anda :)
Configurations
Ada 2 cara untuk mendapatkan konfigurasi dasar dari kernel yang akan anda buat. Yang pertama melalui kernel yang sedang anda pakai. Yang kedua melalui source kernel anda.Kernel yang sedang dipakai
- Koneksikan smartphone anda ke computer anda
- Buka terminal anda
- Alihkan ke lokasi kernel anda
- Ketik "adb pull /proc/config.gz"
- Lalu ketikkan "gunzip config.gz"
- Ketik lagi "mv config arch/arm/configs/<your_config_name>_defconfig"
Source kernel
Biasanya beberapa source sudah menyediakannya dalam folder arch/arm/configs. Silahkan anda browse kesana. Ada banyak file mungkin di sana. Carilah yang memiliki nama seperti chip anda, atau codename hp anda. Semisal anda memakain Qualcomm MSM8930, akan terdapat file dengan nama msm8930_defconfig. Atau jika anda memakai Xperia L, mungkin anda akan menemukan file dengan nama Taoshan_defconfig.Building the Kernel
Mari kita build kernel kita.- Buka terminal, dan pindahkan ke direktori kernel anda.
- Ketik "make config_defconfig ARCH=arm CROSS_COMPILE=~/androidkern/toolchains/toolchains-anda-"
- Ketik lagi "make menuconfig ARCH=arm CROSS_COMPILE=~/androidkern/toolchains/toolchains-anda-" dan silahkan ubah settingan kernel anda dari situ.
- Selanjutnya silahkan ketik "make -j4 ARCH=arm CROSS_COMPILE=~/androidkern/toolchains/toolchains-anda-"
Results
Successful
Jika kernel anda sukses dibuat, maka lokasi kernel anda akan berada di arch/arm/boot/zImage. Silahkan anda pack ssendiri, bisa menggunakan tool seperti Aniket Kernel Packer Tools dan lainnya.Anda juga perlu mengcopy modules yang ikut dibuild dengan kernel anda. Silahkan menggunakan command berikut untuk mempermudahnya :
A. Buka terminal
B. Pindahkan ke direktori kernel anda
C. Ketik "mkdir ../fajar_output"
D. Ketikkan "find . -name "*.ko" -exec cp {} ../fajar_output \;"
E. Akan ada folder baru bernama fajar_output. Disitulah lokasi modules anda berada :)
Failed
Terdapat error saat proses compile. Silahkan fix error tersebut, lalu gunakan command berikut untuk melakukan proses rebuild.A. Backup dulu konfigurasi anda yang telah anda ubah tadi (lewat menuconfig). Anda bisa melakukannya dengan mengetik "cp .config ../backupConfig"
B. Ketikkan lagi "make clean"
C. Lakukan fix error tadi.
D. Lalu ketik lagi "cp ../backupConfig .config"
E. Lalu ketik lagi "make -j4 ARCH=arm CROSS_COMPILE=~/androidkern/toolchains/toolchains-anda-"
Ada saran dari teman developer saya kalau menggunakan command -j1 akan sangat membantu dalam proses debugging, tetapi proses compile akan sangat terasa lama bergantung kecepatan prosesor komputer anda.
Sekian dulu postingan dari saya. Mungkin jika ada pertanyaan bisa langsung ditanyakan di kolom komentar :)
Nanti akan saya update dengan screenshoot tiap bagiannya :)
Conversion Conversion Emoticon Emoticon