Secara ringkas, ilmu pengaturcaraan tidak diperlukan sama sekali untuk compile kernel Android. Tetapi, ia sangat membantu jika anda menghadapi masalah ketika proses compilation.
Berikut beberapa kemahiran yang perlu anda tahu:
1- Cara guna git.
2- Cara kernel Android berfungsi
3- Cara guna Linux menggunakan command line.
Disebabkan kernel Android berasal dari Linux, dengan beberapa keunikan seperti Bionic libraries, maka sekiranya anda pernah compile kernel Linux, maka caranya tidak jauh berbeza dengan kernel Android.
Cuma, disebabkan anda kena compile kernel Android ni dari komputer desktop/laptop anda, anda perlu melakukan proses "cross compiling" kerana ia melibatkan senibina pemprosesan yang berlainan, yakni dari hos x86/x_64 kepada ARM.
Untuk compilation kernel Android, penggunaan sistem operasi Linux dari distro Ubuntu 64 bit sahaja digalakkan. 32bit distro, mengikut pembacaan saya tidak boleh digunakan.
Proses muat turun kod sumber Android (source code)
Ada beberapa kod sumber yang boleh anda guna untuk proses kompilasi.. tetapi yang paling asasi ialah kod sumber dari git Android.
Untuk tutorial ini saya menggunakan contoh LG Nexus 4 (nama kod "mako")
Gunakan git;
git clone https://android.googlesource.com/kernel/msm.git
Satu direktori bernama "msm" akan dibentuk. Kalau anda mahu gunakan nama sendiri untuk direktori/folder itu, gunakan
git clone https://android.googlesource.com/kernel/msm.git nama-yg-anda-nak
Toolchain
Kemudian, anda perlukan toolchain (compiler silang platform) yang digunakan untuk compile kod sumber yang anda muat turun sebentar tadi ke di atas Intel x64 (64 bit) kepada ARM
Gunakan git lagi;
git clone https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.7Di sini anda perlu gunakan command "export" untuk mengemaskini kedudukan PATH yang anda ingin;
cd msm
export ARCH=arm
export SUBARCH=arm
najmi@vostro:~$ pwd /home/najmi/msm najmi@vostro:~$ export CROSS_COMPILE=$PWD/arm-linux-androideabi-4.7/bin/arm-linux-androideabi- najmi@vostro:~$ echo $CROSS_COMPILE /home/najmi/arm-linux-androideabi-4.7/bin/arm-linux-androideabi-
Kemudian dalam direktori "msm" tadi; laksanakan arahan ini, sekiranya Nexus 4, defconfig nya adalah mako, sekiranya Nexus 5, "hammerhead":
make mako_defconfig
Kemudian, berasaskan "core" CPU host komputer anda, gunakan arahan "make" . Nilai "-j" disertakan dengan jumlah "core" yang anda ada.
make -j4
Kernel: arch/arm/boot/Image is ready AS arch/arm/boot/compressed/head.o CC arch/arm/boot/compressed/misc.o CC arch/arm/boot/compressed/decompress.o GZIP arch/arm/boot/compressed/piggy.gzip CC arch/arm/boot/compressed/string.o SHIPPED arch/arm/boot/compressed/lib1funcs.S SHIPPED arch/arm/boot/compressed/ashldi3.S AS arch/arm/boot/compressed/lib1funcs.o AS arch/arm/boot/compressed/ashldi3.o AS arch/arm/boot/compressed/piggy.gzip.o LD arch/arm/boot/compressed/vmlinux OBJCOPY arch/arm/boot/zImage Kernel: arch/arm/boot/zImage is ready
Sekiranya proses compilation tidak mengalami masalah, anda akan dapat satu file yang diperlukan, iaitu zImage.
Tuan, nak tanye..... ini utk compile base on stock fw mako ke? or boleh gune utk based on aosp,cm?
ReplyDeleteini utk AOSP.
ReplyDeletekalo cyanogen lain sikit je.
instead of
"make mako_defconfig"
guna
"make cyanogen_mako_defconfig