Friday, May 17, 2013

[TUTORIAL] Compile GT-S5360 Kernel Part 1

PENGERTIAN :
  • Kernel atau bisa juga disebut boot.img adalah : .... googling aja deh, yar ente ada usaha dikit
  • disini aku kasi tutor untuk membuat sendiri kernel dari samsung source. tutor ini aku rangkum dari berbagai tuts linggis (butuh waktu 2 minggu untuk mencapai sukses build kernel, maklum.. elmu pas pasan)
  • WARNING - BERMAIN MAIN DENGAN KERNEL DAPAT MENYEBABKAN HARDBRICK (GAK BISA MASUK RECOVERY - PALING PARAH, MATOT) DWYOR




BAHAN :
  • OS linux (ubuntu recomended or turunannya - aku pake linux-mint 12 x86) cara install googling ajah, terlalu panjang kalo dibahas dalem dokumen ini. setelah install linux, buka terminal dan install libcurse , ketik "sudo apt-get install libncurses-dev" tanpa tanda petik
  • Sourcery G++ Lite 2009q3-68 toolchain (34,3 MB) download dimari  : http://www.mentor.com/embedded-software/sourcery-tools/sourcery-codebench/editions/lite-edition/request?id=e023fac2-e611-476b-a702-90eabb2aeca8&downloadlite=scblite2012&fmpath=/embedded-software/sourcery-tools/sourcery-codebench/editions/lite-edition/form tar isi ajah registerasinya, link download di kirim ke email (pilih yang arm-2009q3-68-arm-none-eabi-i686-pc-linux-gnu.tar.bz2)
  • samsung open source (135 MB)  : http://opensource.samsung.com/index.jsp;jsessionid=4DD9564D1E88AF1815A522967E25C72Fambil aja yang GT-S5360_GB_opensource_update2.zip. extrak dan dapet 2 file, salah satunyaGT-S5360_kernel.tar.gz
  • tambahan link source gayoung :https://www.facebook.com/groups/galyoungers/permalink/373440792713159/?comment_id=373578582699380
  • mkbootimg with md5support, mkbootimg4GT-S5360.tar (35,2 KB), cek dimari : http://forum.xda-developers.com/showpost.php?p=22224170&postcount=241. ekstrak tar dapet folder mkbootimg
  • split_bootimg.pl (6 KB) ambil dimari : http://code.google.com/p/zen-droid/downloads/detail?name=split_bootimg.pl
  • mkbootimg with md5support include split_bootimg.pl and mkbootfs (46 KB) :http://www.mediafire.com/?4viz5knkxki23d4
  • boot.img stockrom - 5an MB (ambil ajah dari instalan stockrom - aku pake punya DXLE1)

PREPARATION :
  • buat folder di HOME dengan nama "android" tanpa tanda petik. (arahkan terminal ke home dan ketik di terminal "mkdir android")
  • copikan ke dalam folder "android" file downloadan tadi, yaitu arm-2009q3-68-arm-none-eabi-i686-pc-linux-gnu.tar.bz2 ; GT-S5360_Kernel.tar.gz ; folder mkbootimg dan split_bootimg.pl(ini taro di folder /mkbootimg/mkbootimg/*)
  • arahkan terminal ke folder android (ketik "cd android" di terminal)
  • buat folder baru di dalam folder android dengan nama "kernel" (ketik "mkdir kernel")
  • arahkan terminal ke dalam folder "kernel" (ketik "cd kernel")
  • ekstrak GT-S5360_Kernel.tar.gz dengan cara ketik di terminal "tar -xvf ../GT-S5360_Kernel.tar.gz" maka di dalam folder kernel akan ada folder "common" dan "modules"
  • kembalikan terminal ke folder "android" (ketik "cd ..")
  • ekstrak  arm-2009q3-68-arm-none-eabi-i686-pc-linux-gnu.tar.bz2 (ketik "tar -xvf arm-2009q3-68-arm-none-eabi-i686-pc-linux-gnu.tar.gz2") maka akan ada folder baru dengan judul "arm-2009q3" di dalam folder android.
  • file arm-2009q3-68-arm-none-eabi-i686-pc-linux-gnu.tar.bz2 dan GT-S5360_Kernel.tar.gz bisa di delete untuk menambah free space (lakukan melalui explorer ajah, gak pake ketik di terminal)
  • buka file "Makefile" di dalam folder /kernel/common/* menggunakan gedit. cari 2 baris yang berawalan kata ARCH dan CROSS_COMPILE dan edit menjadi : "ARCH ?=arm" dan "CROSS_COMPILE ?=/home/<user name>/android/arm-2009q3/bin/arm-none-eabi-" tanpa tanda petik. dan jangan lupa ganti "<username>" dengan user name linux yang kamu pakai.  CROSS_COMPILE baris bawahnya biarkan ajah gak sah di edit, cukup 2 baris aja. dan simpan.
  • persiapan sudah selesai....

BONGKAR boot.img stockrom :
  • copi "boot.img" ori ke dalem folder "mkbootimg"
  • arahkan terminal ke dalem folder "mkbootimg" (ketik "cd mkbootimg")
  • split kernel dengan perintah "perl ./mkbootimg/split_bootimg.pl boot.img" maka tar ada 2 file baru, yaitu boot.img-kernel dan boot.img-ramdisk.gz
  • buat folder baru dengan nama "ramdisk" (ketik "mkdir ramdisk") lalu arahkan terminal ke dalam folder "ramdisk" (ketik "cd ramdisk")
  • ekstrak "boot.img-ramdisk.gz" (ketik "gzip -dc ../boot.img-ramdisk.gz | cpio -i") tar dalam folder "ramdisk" akan ada file dan folder baru hasil ekstrakan yaitu "init.rc" "recovery.rc" dan temen2nya. disini kita hanya pakai isi dari ramdisk. (kernel nanti kita build dari source)
  • silahkan pindahkan atau hapus 3 file di dalem folder mkbootimg, yaitu "boot.img" ; "boot.img-kernel" dan "boot.img-ramdisk.gz". tujuannya biar gak bingung nantinya saat compile boot.img
  • bongkar boot.img selesai....

MENGAKTIFKAN FITUR init.d :
  • buka file init.rc di dalam folder ramdisk menggunakan gedit
  • search kode ini "## for datarouter" lalu kopikan kode berikut di bawah "#    chown system system /dev/dun" nya :
  • "start sysinit"
  • "on property:cm.filesystem.ready=1"
  • search kode ini "service media /system/bin/mediaserver" lalu kopikan kode ini di atasnya :
  • "service sysinit /system/bin/logwrapper /system/xbin/busybox run-parts /system/etc/init.d"
  • "disabled"
  • "oneshot"
  • simpan. dan fitur init.d sudah di set dan siap di build. (jangan lupa buat folder "init.d" di /system/etc/*)

MENGAKTIFKAN FITUR swap :
  • buka file "bcm21553_totoro_05_defconfig" di dalam folder "/kernel/common/arch/arm/config/*" menggunakan gedit.
  • search kode ini "# CONFIG_SWAP is not set" edit kodenya menjadi :
  • "CONFIG_SWAP=y"
  • dan tambahkan di bawahnya kode ini "CONFIG_RAMZSWAP=m"
  • simpan... untuk mengecek apakah fitur swap sudah di set. maka
  • arahkan terminal ke "home" dengan mengertik "cd ../.."
  • arahkan terminal ke folder "common" (ketik "cd kernel/common")
  • lalu ketik perintah di terminal "make bcm21553_totoro_05_defconfig" (perintah ini adalah untuk menset build "kernel" memakai config "bcm21553_totoro_05_defconfid" nanti ada keterangan totoro dah di set
  • kemudian ketik perintah "make menuconfig" akan muncul window baru (seperti setup bios kalo di windows)
  • lihat di general setup, nanti untuk fitur swap akan ada tanda "*" di depan "swap" dan "m" di depan ramzswap. ini menunjukkan swap udah di set.
  • kalo oke, keluar dari window (press tombol esc 2 kali)
  • lakukan lagi perintah "make bcm21553_totoro_05_defconfig" untuk memastikan bahwa totoro yang menjadi rujukan config.
  • kernel siap di build... (jangan lupa untuk mepartisi sdcard dengan linux swap. dan taro script swap di folder "/system/etc/init.d/*" - di sini aku pake partisi ketiga "dev/block/mmcblk0p3") bila linux swap di 2 partisi ajah maka kodenya menjadi "dev/block/mmcblk0p2"
  • caranya buat script swap on adalah, buat file baru dengan nama "09swapon" dan di dalamnya kopikan kode berikut :
  • "#!/system/bin/sh"
  • "#"
  • "echo 60 > /proc/sys/vm/swappiness;"
  • "swapon /dev/block/mmcblk0p3;"
  • "# done..."
  • simpan

MENGAKTIFKAN FITUR ext 4 :
  • buka file "bcm21553_totoro_05_defconfig" di dalam folder "/kernel/common/arch/arm/config/*" menggunakan gedit.
  • search kode ini "# CONFIG_EXT4_FS is not set" edit kodenya menjadi :
  • "CONFIG_EXT4_FS=y"
  • tambahin kode ini bawahnya : "CONFIG_EXT4_FS_XATTR=y" dan " CONFIG_EXT4_FS_POSIX_ACL=y" sebenarnya sich gak seberapa paham sich fungsinya buat apa, tapi gak ada salahnya di tambahin, hehehehe...
  • lihat kode dibawahnya, apabila sudah "CONFIG_JBD=y" maka biarkan, kalo masih "# CONFIG_JBD is not set" maka edit jadi "CONFIG_JBD=y"
  • simpan... untuk mengecek apakah fiturext4 sudah di set. maka
  • lalu ketik perintah di terminal "make bcm21553_totoro_05_defconfig" (perintah ini adalah untuk menset build "kernel" memakai config "bcm21553_totoro_05_defconfid" nanti ada keterangan totoro dah di set
  • kemudian ketik perintah "make menuconfig" akan muncul window baru (seperti setup bios kalo di windows)
  • lihat di bagian file system, nanti untuk fitur ext4 akan ada tanda "*" di depan "ext4 file system" . ini menunjukkan ext4 udah di set.
  • kalo oke, keluar dari window (press tombol esc 2 kali)
  • lakukan lagi perintah "make bcm21553_totoro_05_defconfig" untuk memastikan bahwa totoro yang menjadi rujukan config.
  • kernel siap di build... | agar ext4 fitur di kernel dapat di pakai, maka ada file yang harus di edit dalam ramdisk, yaitu :
  • init.rc : buka file init.rc di dalam folder ramdisk menggunakan gedit
  • cari kode berikut "export LOOP_MOUNTPOINT /mnt/obb"
  • tambahkan di bawahnya kode "export SD_EXT_DIRECTORY /sd-ext"
  • cari kode berikut "mount rfs /dev/stl9 /system check=no"
  • tambahkan diatasnya kode ini "mount ext4 /dev/stl9 /system"
  • cari kode berikut "#   mount rfs /dev/stl11 /data nosuid nodev check=no"
  • tambahkan di bawahnya kode ini "mount ext4 /dev/block/stl10 /cache nosuid nodev noatime nodiratime barrier=1 data=ordered noauto_da_alloc"
  • cari kode berikut "mount rfs /dev/stl11 /data nosuid nodev crypt check=no"
  • tambahkan di atasnya kode ini "mount ext4 /dev/block/stl11 /data nosuid nodev noatime nodiratime barrier=1 data=ordered noauto_da_alloc"
  • simpan... selanjutnya buka file recovery.rc dengan menggunakan gedit
  • cari kode ini "mkdir /sdcard"
  • tambahkan di atasnya kode ini "mkdir /sd-ext"
  • cari kode ini "mount rfs /dev/stl9 /system remount"
  • tambahkan di bawahnya kode ini (kode berikut agar stock recovery support ext4) :
  • "mount ext4 /dev/stl9 /system"
  • "mount ext4 /dev/stl9 /system rw remount"
  • "mount ext4 /dev/block/stl11 /data nosuid nodev"
  • "chown system system /data"
  • "chmod 0771 /data"
  • "mount ext4 /dev/block/stl10 /cache nosuid nodev"
  • "mount ext4 /dev/block/stl9 /system rw remount"
  • simpan... dan boot.img siap di build..

MENGAKTIFKAN FITUR FIREWALL :
  • buka file "bcm21553_totoro_05_defconfig" di dalam folder "/kernel/common/arch/arm/config/*" menggunakan gedit.
  • cari kode kode berikut di bawah ini kalo masih dalam bentuk "# CONFIG_BLABLA_BLA is not set" maka rubah kodenya menjadi bentuk seperti di bawah, kalo udah sama dengan kode di bawah ya biarkan saja, ini kodenya :
  • "CONFIG_NETFILTER_NETLINK=y"
  • "CONFIG_NETFILTER_NETLINK_LOG=y"
  • "CONFIG_NETFILTER_XT_MATCH_OWNER=y"
  • "CONFIG_IP_NF_TARGET_REJECT=y"
  • "CONFIG_IP_NF_TARGET_LOG=y"
  • "CONFIG_IP_NF_TARGET_ULOG=y"
  • simpan dan kernel siap di build...
  • kalo mau ngecek, caranya ketik di terminal "menu config"
  • gunakan aplikasi firewall android untuk menggunakan fitur ini

MENGAKTIFKAN FITUR CIFS dan VPN :
  • buka file "bcm21553_totoro_05_defconfig" di dalam folder "/kernel/common/arch/arm/config/*" menggunakan gedit.
  • cari kode kode berikut di bawah ini kalo masih dalam bentuk "# CONFIG_BLABLA_BLA is not set" maka rubah kodenya menjadi bentuk seperti di bawah, kalo udah sama dengan kode di bawah ya biarkan saja, ini kodenya :
  • "CONFIG_CIFS=y"
  • "CONFIG_TUN=y"
  • simpan dan kernel siap di build...
  • kalo mau ngecek, caranya ketik di terminal "menu config"
  • gunakan aplikasi CIFS dan VPN untuk menggunakn fitur ini.

MENGAKTIFKAN FITUR A2SD:
  • aktifkan fitur init.d dulu.(HARUS)
  • buka file init.rc di dalam folder ramdisk menggunakan gedit
  • cari kode berikut "# chown system system /dev/dun"
  • tambahkan di bawahnya hingga jadi seperti ini:
  • "start sysinit"
  • "start a2sd"
  • "on property:cm.filesystem.ready=1"
  • "class_start default"
  • kemudian cari kode berikut "service media /system/bin/mediaserver"
  • tambahkan diatasnya tiga baris kode berikut :
  • "service a2sd /system/bin/logwrapper /system/bin/sh /system/bin/a2sd"
  • "disabled"
  • "oneshot"
  • save.. jangan lupa dinstall script DT nya untuk menggunakan ini.. (udh  d tes pake dtapps2sd2.7.5.2.1.. sejauh ini masih work.:).

BUILD KERNEL YANG UDAH DI SET
  • terserah mana2 fitur yang mau diaktifkan seperti di atas, tergantung kebutuhan agan2 ajah.
  • arahkan terminal ke folder "android/kernel/common/"
  • ketik "make bcm21553_totoro_05_defconfig"
  • ketik lagi "make bcm21553_totoro_05_defconfig" (ini untuk mastikan ajah kalo kernel ambil configurasi dari file tersebut
  • ketik "make"
  • silahkan tunggu, lumayan lama proses buildnya. ngupi2 dulu ataw ngudut.. bubu juga boleh. hehehheh....
  • kalo lancar gak ada majalah, maka kernel sudah di build, dalam hal ini filenya berjudul "zImage" lokasinya ada di "/android/kernel/common/arch/arm/boot/*"
  • congrat... kamu dah berhasil membuat kernel..

COMPILE BOOT.IMG
  • seperti di atas, kita dah punya "zImage" atau nama lainnya "boot.img-kernel"
  • copi file "zImage" di atas ke dalem folder "mkbootimg"
  • untuk compile "boot.img" terlebih dulu kita packing file-file yang sudah kita edit dalam folder "ramdisk". caranya begini :
  • arahkan terminal ke folder "mkbootimg"
  • lalu ketik "mkbootimg/mkbootfs ramdisk | gzip > boot.img-ramdisk.gz"
  • muncul file baru di folder "mkbootimg", yaitu "boot.img-ramdisk.gz"
  • nah, dalam folder "mkbootimg" sekarang kita punya 2 file sebagai penyusun "boot.img" yaitu "zImage" dan "boot.img-ramdisk.gz" sekarang saatnya kita compile jadi "boot.img"
  • ketik di terminal "md5sum zImage" (ini untuk mengecek md5sum kernel yang berguna untuk pengcompilean "boot.img")
  • tar nongol "1fd319aa60abc2abae2e5932bcb9fc77  zImage" (ini contoh, berbeda di setiap build kernel)
  • kemudian ketik di terminal "mkbootimg/mkbootimg --kernel zImage --ramdisk boot.img-ramdisk.gz --base 0x81600000 --kernelMD5 <hasil md5sum> -o boot.img"
  • dan bila lancar, maka kamu dapet satu file baru bernama "boot.img" inilah kernel hasil oprekan kamu, silahkan di flash ke HH lewat CWM.
  • untuk udin, ketik di terminal "tar -cf boot-sgy.tar boot.img", nah file tar ini yang di flash via udin.
  • done.. you got your own kernel

CATATAN PENTING :
  • bila menemukan error denied saat execute command terminal, ketik "chmod +x <folder yang berisi file yang akan di execute atau file yang akan diexecute>"
  • bila ada kendala, mari kita diskusikan bersama dalam koment, kita sama2 belajar, aku bukan mastah, dan kamu bukan nubie. :D...
  • untuk "Overclock, Undervolt kernel, add IO shedule and CPU Gorvernor" ... saya belum paham, wekekekekkeke..... jadi lum masuk ini tuts.. mudah2an segera di update tentang tuts itu, baik dari aku ataupun member lain yang lebih paham.
  • SELAMAT NGUPREK KERNEL, SIAPIN ICU YAK... HAHAHAHAHHA....
  • SOLUSI HARDBRICK (gak masuk recovery). taro "boot.img" yang masbro n sist paker sebelumnya (working "boot.img") di folder mana aja dalam root /home, terus buka terminal dan arahkan ke folder dimana "boot.img" ditaro. lalu ketik di terminal "tar -cf boot-sgy.tar boot.img". nanti dapet file tar dengan nama "boot-sgy.tar". lalu buka odin, colokin HH dalam kondisi download mode. (home + power + voldown, then volup). masukin file "boot-sgy.tar" ke dalam baris PDA. lalu flash. setelah sukses (pass) cabut HH dan nyalakan HH. viola...

THANKS FOR dan SUMBER TUTS :
  • zcop (xda) - http://forum.xda-developers.com/showthread.php?t=1467149
  • irfanbagus (xda) - http://forum.xda-developers.com/showpost.php?p=24747881&postcount=4
  • asad007 (xda) - http://forum.xda-developers.com/showpost.php?p=25093035&postcount=206
  • harish2074 (xda) - http://forum.xda-developers.com/showpost.php?p=22224170&postcount=241
  • mikstev (xda) - http://forum.xda-developers.com/showthread.php?t=1626406
  • ketut.kumajaya (xda too i think) - from zcop trit, dont know his tread yet. :P
  • MAROC-OS - (xda github) - http://github.com/Maroc-OS/Merruk-Technology/blob/master/Initramfs/recovery.rc
  • um fedy, heri n cuih (repencis dev) - hekekeke. sorry um, aku ngintip init.rc n recovery.rc kernelnya (mabok kemaren gak jadi2 ext4-nya)
  • M.Ridho Magribi, Ricky Firdaus, Rata Bila Bagi (member group) - hehehe... makasih udah temenin aku mabok kernel......


ORIGINAL THREAD IS HERE : 
https://www.facebook.com/groups/galyoungers/doc/409037182486853/
By Me

Berlanjut ke postingan berikutnya untuk part 2

11 comments:

  1. mkbootimg/mkbootimg --kernel zImage --ramdisk boot.img-ramdisk.gz --base 0x81600000 --kernelMD5 -o boot.img

    um ces gagal di sini trus tahap ini ajj
    kira" apany ya

    ReplyDelete
    Replies
    1. mkbootimg/mkbootimg --kernel zImage --ramdisk boot.img-ramdisk.gz --base 0x81600000 --kernelMD5 "angka md5sum" -o boot.img

      tuh angka md5sum di masukin, emang errornya apa pas di compile?

      Delete
  2. udah bisa um berkat ente jadi pinter & punya kernel dewek hihihi
    BTW kmn aja jarang nongol biasanya nongol trus

    ReplyDelete
  3. suhhu mao nanya

    mao punya kernel dewek di s2 GT-I9100 ,karena extensi dari fw bukan boot.img alias zimage itu gimana????? beda tutorial ya

    #help

    ReplyDelete
    Replies
    1. kalo lancar gak ada majalah, maka kernel sudah di build, dalam hal ini filenya berjudul "zImage" lokasinya ada di "/android/kernel/common/arch/arm/boot/*"

      congrat... kamu dah berhasil membuat kernel..

      dibaca gak nih tutor. hayoo ngaku...
      tuh hasil compilan namanya zImage.

      tinggal googling aja cara install zImage

      Delete
    2. WAKWAKWAKWAK AMPON SUHU ,,soalnya di firmware s2 bukan boot.img alias zimage jadi agak" bingung ..yowis baru paham awkawkawk
      #kangenmasa"devente

      ishhhhhhhh i love you

      Delete
  4. mastah,pake windows kagak bisa ya?

    ReplyDelete
  5. Bisa, tapi ribet sangat
    ƗƗɐƗƗɐ

    ReplyDelete
    Replies
    1. Q: add busybox di folder sbin gimana bang ces,

      Delete
  6. kalo buat windows gimana?
    hhe,maap

    ReplyDelete