Hazırlıklar
Not: İndirme boyutu 10GB civarı veya daha fazla, işlemler için gerekli alan 25GB(tek bir derleme için) ve toplamda ihtiyacınız olacak net kapasite 80GB olacaktır.
Her şeyden önce Ubuntu'nun 64 bit versiyonlarından birini kurmanız gerekir. 32 bit versiyonu bu işlemler için kullanılabilir değil. İki seçenek var ya gerçek kurulum yada sanal kurulum. Gerçek kurulumda sadece Ubuntu kullanabilir yada Ubuntu ile Windows'u aynı anda kullanabilirsiniz. Sanal kurulumda ise VirtualBox veya başka bir sanal makine programı kullanabilirsiniz.
Gerçek Kurulum: Ubuntu Kurulumu
Sanal Kurulum (VirtualBox): VirtualBox Kurulumu ve Kullanımı
Kurulum bitince sol üst köşedeki simgeyi tıklayın ve Software Updater yazın. Software Updater programını açıp tüm güncellemeleri yapın ve bilgisayarı yeniden başlatın. Netten türkçe dil yüklemeyi de araştırabilirsiniz.
Aşağıdaki tüm komutlar Terminal denen kod penceresine yazılacaktır. İsterseniz yine sol üst köşeye tıklayın ve terminal yazın veya Ctrl+Alt+T yaparak terminali açın. Alttaki işlemler sırasında kullanılacak kodları buradan kopyalayıp, Terminal ekranınafarenin sağ tuşunu kullanarak yapıştır yapın!
Dikkat! "sudo" ile başlayan komutlardan sonra kullanıcı şifrenizi isteyebilir. Oturum şifrenizi yazın ve Enter'layın. (Şifrenizi yazarken ekranda şifrenizi göremezsiniz. Buna takılmadan şifrenizi yazıp devam edin.)
Herhangi bir adımda "Do you want to continue [Y/n]?" tarzı bir yazı gelirse "y" tuşuna basıp Enter'layın.
Derleme yapabilmeniz için cihaz kod adınız bilmelisiniz. Mesela Optimus G'nin kod adı e970. Ayrıca cihaz(device), üretici(vendor) ve kernel depolarını(repo) XDA'dan bulmalısınız. Bu depolara nasıl ulaşabileceğinizi konu içinde aktaracağım.
Örnek olarak Optimus G(e970)'nin cihaz kaynak kodlarının adresi: CyanogenMod/android_device_lge_e970 · GitHub
Derleme Araçlarının Kurulumu
JDK, Python,Git ve Android SDK derleme sırasında kullanacağımız araçlardır. Bunlardan jdk(java) ve python uygulamaların yazıldığı dillerdir. Git ise kaynak kodları indirmede kullanılacak araçtır. Android SDK'nın da bir kenarda bulunması fena olmaz. O yüzden önce bunları kurmalıyız.
- Java JDK Kurulumu
Java kütüphanelerinin içerir. Kurmak için:
Kod:
sudo add-apt-repository ppa:webupd8team/java
Kod:
sudo apt-get update
Kod:
sudo apt-get install oracle-java7-installer
Kod:
sudo apt-get install oracle-java6-installer
Kod:
sudo apt-get install python
Daha öncede dediğim gibi Git kaynak kodları indirebileceğimiz araçtır. Birde yardımcı paketlerimiz var. Bunlarda araçları kullanabilmek için gerekli.
Kod:
sudo apt-get install git-core gnupg flex bison gperf build-essential \ zip curl zlib1g-dev zlib1g-dev:i386 libc6-dev lib32ncurses5-dev \ ia32-libs x11proto-core-dev libx11-dev libx11-dev:i386 libreadline6-dev:i386 \ lib32z1-dev lib32z-dev libgl1-mesa-dev g++-multilib gcc-multilib mingw32 libssl-dev \ tofrodos python-markdown libxml2-utils xsltproc readline-common \ libreadline6-dev libreadline6 lib32readline-gplv2-dev libncurses5-dev \ lib32readline5 lib32readline6 libreadline-dev libreadline6-dev libreadline6-dev:i386 \ libreadline6:i386 bzip2 libbz2-dev libbz2-1.0 libghc-bzlib-dev lib32bz2-dev \ libsdl1.2-dev libesd0-dev squashfs-tools pngcrush schedtool libwxgtk2.6-dev
Kod:
sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
Android cihazınızı bilgisayar üzerinden yönetmeye yarayan araçlardır. Kurulması zorunlu değil fakat bulunsa ilerde kullanmanız gerekirse iyi olur.
Kod:
sudo add-apt-repository ppa:nilarimogard/webupd8
Kod:
sudo apt-get update
Kod:
sudo apt-get install android-tools-adb android-tools-fastboot
Şimdi bir dosya düzenleyip bunun içine usb ayarlarını kaydedeceğiz. İlk önce bize gerekli olan programı indirelim.
Kod:
sudo apt-get install gksu
Kod:
gksudo gedit /etc/udev/rules.d/51-android.rules
Kod:
#Foxconn SUBSYSTEM==usb, SYSFS{idVendor}==0489, MODE=0666 #Garmin-Asus SUBSYSTEM==usb, SYSFS{idVendor}==091E, MODE=0666 #Google SUBSYSTEM==usb, SYSFS{idVendor}==18d1, MODE=0666 #HTC SUBSYSTEM==usb, SYSFS{idVendor}==0bb4, MODE=0666 #Huawei SUBSYSTEM==usb, SYSFS{idVendor}==12d1, MODE=0666 #K-Touch SUBSYSTEM==usb, SYSFS{idVendor}==24e3, MODE=0666 #KT Tech SUBSYSTEM==usb, SYSFS{idVendor}==2116, MODE=0666 #Kyocera SUBSYSTEM==usb, SYSFS{idVendor}==0482, MODE=0666 #Lenevo SUBSYSTEM==usb, SYSFS{idVendor}==17EF, MODE=0666 #LG SUBSYSTEM==usb, SYSFS{idVendor}==1004, MODE=0666 #Motorola SUBSYSTEM==usb, SYSFS{idVendor}==22b8, MODE=0666 #NEC SUBSYSTEM==usb, SYSFS{idVendor}==0409, MODE=0666 #Nook SUBSYSTEM==usb, SYSFS{idVendor}==2080, MODE=0666 #Nvidia SUBSYSTEM==usb, SYSFS{idVendor}==0955, MODE=0666 #OTGV SUBSYSTEM==usb, SYSFS{idVendor}==2257, MODE=0666 #Pantech SUBSYSTEM==usb, SYSFS{idVendor}==10A9, MODE=0666 #Philips SUBSYSTEM==usb, SYSFS{idVendor}==0471, MODE=0666 #PMC-Sierra SUBSYSTEM==usb, SYSFS{idVendor}==04da, MODE=0666 #Qualcomm SUBSYSTEM==usb, SYSFS{idVendor}==05c6, MODE=0666 #SK Telesys SUBSYSTEM==usb, SYSFS{idVendor}==1f53, MODE=0666 #Samsung SUBSYSTEM==usb, SYSFS{idVendor}==04e8, MODE=0666 #Sharp SUBSYSTEM==usb, SYSFS{idVendor}==04dd, MODE=0666 #Sony Ericsson SUBSYSTEM==usb, SYSFS{idVendor}==0fce, MODE=0666 #Toshiba SUBSYSTEM==usb, SYSFS{idVendor}==0930, MODE=0666 #ZTE SUBSYSTEM==usb, SYSFS{idVendor}==19D2, MODE=0666
Kod:
sudo chmod a+r /etc/udev/rules.d/51-android.rules
Repo denilen araç git içinde çalışan bir tür depo indirme ve güncelleme aracıdır. İlk önce bir klasör oluşturup buraya repo dosyasını indireceğiz.
mkdir komutu yeni klasörler oluşturacaktır. "mkdir klasör_adi" şeklinde yazılır. Altta klasör adının başındaki "~/" klasörün açılacağı yerdir. Bu şekilde bırakırsanız home dizinine açılır.
Birinci kodla "bin" klasörü oluşacak. Üçüncü kod ile bin klasörüne repo dosyasını indireceğiz. repo dosyası kaynak kod indirirken kullanılacak araçtır.
Kod:
mkdir ~/bin
Kod:
PATH=~/bin:$PATH
Kod:
curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
Kod:
chmod a+x ~/bin/repo
"android" klasörü derlenecek romun kaynak kodları için oluşturuluyor. Siz isterseniz farklı bir ad verip işlemleri ona göre yapabilirsiniz.
"cd" komutu sizi bir klasöre veya dizine sokar.
Kod:
mkdir android
Kod:
cd android
(Bu bölüm isteğe bağlı)
İlk derlemede yapılan işlemlerin sanuçlarını yedekleyerek sonraki derlemelerinizde derlemenin daha hızlı gerçekleşmesini sağlar.
1) Ucbirim(terminal) açın. (CTRL+ALT+T)
2) gedit.bashrc yazıp enterlayın.
3) Alttaki kodu ekleyin.
Kod:
export USE_CCACHE=1 export CCACHE_DIR=/android/prebuilts/misc/linux-x86/ccache
Kaynak Kodları Toplama
- Rom Kaynak Kodları
Rom kaynak kodlarını indirmek için git kullanacağız. Git uygulamasını kullanmak için ilk önce adınızı ve email adresinizi bildirmelisiniz. Bu yüzden kendimize bir Git hesabı açalım. Aşağıdaki kodlarda kendi bilgilerinizi girin.
Kod:
git config --global user.email email_adresizin
Kod:
git config --global user.name isminiz
repo init: repo başlatma kodu.
-u: url
-b: bölüm
Düzen şu şekilde:
repo init -u bulut_bağlantı_adresi -b bölüm
Kod:
repo init -u git://github.com/CyanogenMod/android.git -b cm-11.0

Bulut bağlantı adresi romun github adresidir. Mesela:
Kod:
Cyanogenmod: https://github.com/CyanogenMod/android.git -b Bölüm CarbonDev: https://github.com/CarbonDev/android.git -b Bölüm Liquid Smooth: https://github.com/LiquidSmooth/android.git -b Bölüm AOSP: https://android.googlesource.com/platform/manifest.git -b Bölüm AOKP: http://github.com/AOKP/platform_manifest.git -b Bölüm AOSPA: http://github.com/ParanoidAndroid/manifest.git -b Bölüm PAC-Man: http://github.com/PAC-man/android.git -b Bölüm

- Cihaz Kaynak Kodları
Hazırlıklar kısmında cihaz(device), üretici(vendor) ve kernel depolarına(repo) ihtiyacınız olduğunu belirtmiştim. Bu depoların linklerine XDA sitesinde kendi cihazınızın bölümündeki konulardan bulabilirsiniz veya google amcaya başvurarak da halledebilirsiniz. Ayrıca cihazınızın kod adını da öğrenmelisiniz. Mesela Motorola Moto G: Falcon
Cihaz kaynak kodlarını(device, vendor, kernel vb.), romun kaynak kodlarına(CM,AOSP,AOKP,AOSPA vb.) eklemek için iki yol var, local manifest dosyası oluşturmak veya git clone komutu kullanmak. Daha basit olduğu için local manifest yöntemini anlatacağım.
Local manifest dosyası içinde rom kaynak kodlarını toplarken kullandığımız şekle benzer kodlar içerir. Bu kodlar cihazın kendine özel yazılımını depolardan indirir.
Bir local manifest dosyası şu şekildedir;
Kod:
<?xml version="1.0" encoding="UTF-8"?> <manifest> <project name="team-moto-g/android_kernel_motorola_msm8226" path="kernel/motorola/msm8226" remote="github" revision="cm-11.0" /> <project name="team-moto-g/android_device_motorola_falcon_umts" path="device/motorola/falcon_umts" remote="github" revision="cm-11.0" /> <project name="team-moto-g/proprietary_vendor_motorola_falcon_umts" path="vendor/motorola/falcon_umts" remote="github" revision="cm-11.0" /> <project name="team-moto-g/android_hardware_qcom_media-msm8226" path="hardware/qcom/media-msm8226" remote="github" revision="cm-11.0" /> <remove-project name="CyanogenMod/android_build" /> <project name="team-moto-g/android_build" path="build" remote="github" revision="cm-11.0" /> </manifest>



Şimdi kopyaladığımız kodları .repo/local_manifests/local_manifest.xml içine yapıştıracağız. Önce dosya yolunu oluşturalım.
Kod:
mkdir .repo/local_manifests
Kod:
touch .repo/local_manifests/local_manifest.xml
İkinci kod asıl indirme işlemimizdir. Baya uzun sürecektir. 10gb veya daha fazla indirme yapabilir. Bu kod aslında android klasörünün içindeki dosyalara bakar. Sonrada birinci kodda yazdığınız linkteki dosyalara bakar ve eksik olanları indirir. Fakat siz ilk defa kullandığınız için hepsini indirecektir.
Kod:
cd adroid repo sync
Kaynak Kodların Hazırlanması
Rom derleme başlığında yer alan "lunch" komutuyla önümüze gelen listede kullandığınız cihazın adının yer alması için gerekli olan bir işlem var. Eğer Rom Derleme bölümündeki "lunch" komutundan sonra cihaz adınızı listede görüyorsanız bu bölümü geçin.
- CyanogenMod
Aşağıdaki satırı vendor/cm/vendorsetup.sh dosyasına ekleyin.
cm_cihazkodadı-userdebug
Örnek:
Kod:
cm_falcon-userdebug
gedit device/üretici/cihazkodadı/cm.mk
Nexus 4(mako) için örnek
Kod:
touch device/lge/mako/cm.mk nano device/lge/mako/cm.mk
Kod:
## Specify phone tech before including full_phone $(call inherit-product, vendor/cm/config/gsm.mk) # Inherit some common CM stuff. $(call inherit-product, vendor/cm/config/common_full_phone.mk) # Enhanced NFC $(call inherit-product, vendor/cm/config/nfc_enhanced.mk) # Inherit device configuration $(call inherit-product, device/lge/mako/full_mako.mk) ## Device identifier. This must come after all inclusions PRODUCT_DEVICE := mako PRODUCT_NAME := cm_mako PRODUCT_BRAND := google PRODUCT_MODEL := Nexus 4 PRODUCT_MANUFACTURER := LGE # Enable Torch PRODUCT_PACKAGES += Torch
-AOKP
add_lunch_combo aokp_cihazkodadı-userdebug
Kod:
add_lunch_combo aokp_falcon-userdebug
cihazkodadı.mk dosyası oluşturalım.
gedit vendor/aokp/products/cihazkodadı.mk
LG Optimus G için örnek
Kod:
touch vendor/aokp/products/geeb.mk gedit vendor/aokp/products/geeb.mk
Kod:
# Inherit AOSP device configuration for geeb $(call inherit-product, device/lge/geeb/full_geeb.mk) # Inherit AOKP common bits $(call inherit-product, vendor/aokp/configs/common.mk) # Inherit GSM common stuff $(call inherit-product, vendor/aokp/configs/gsm.mk) # Setup device specific product configuration PRODUCT_NAME := aokp_geeb PRODUCT_BRAND := google PRODUCT_DEVICE := geeb PRODUCT_MODEL := Optimus G PRODUCT_MANUFACTURER := LGE
Alttaki kodu yazın.
Kod:
gedit vendor/aokp/products/AndroidProducts.mk
$(LOCAL_DIR)/cihazkodadı.mk \
Optimus G için
Kod:
$(LOCAL_DIR)/geeb.mk \
Kaynak Kodların Düzenlenmesi
Bu bölüm isteğe bağlı
Altta linkini verdiğim konuda derleme araçları ve kavramları hakkında bilgi verilmiş ve çeşitli düzenlemeler anlatılmıştır. Bu bölüm isteğe bağlı
Repo Aracı, manifest, local_manifest ve Diğer Kavramlar
ROM Derleme
Kod:
. build/envsetup.sh
Kod:
lunch

Listede telefonunuzun yanındaki numarayı yazıp Enter'layın.
İşlem bitince alttaki kodla zip paketini oluşturun.
Kod:
make -j# otapackage
Bu koddan sonra yarım saat beklersiniz tahminen. Tabi bilgisayara göre artıp azalabilir.
Her şey doğru giderse şunu göreceksiniz.

cm10.1 rom zip dosyanızı android/out/target/product/cihaz_kod_adı dizininde bulabilirsiniz.
Güncelleme Yapma
ROMlar sürekli güncelleme alırlar sizinde kaynak kodunuzu güncelleyip tekrar derleme yapmanız gerekir. Bu işlem ilki kadar uzun sürmez sadece yeni güncellemeleri çektiğimiz için çok küçük boyutludurlar. Bunun için alttaki kodları kullanın.
Kod:
cd android repo sync . build/envsetup.sh lunch
selamlar hocam şimdi derleme yaparken derleme yapacağımız kernelin source codu gcc versionu java versionu değişiyor kimi kernel üst version kullanırken kimi kernel alt version kullanıyor ve her kaynakta yazmıyor genelde xda forumlarındaki kernelleri derlemeye çalıştım çünki orjinal kernel baya yavan kalıyor onca düzenlemenin üstüne değiştireceğimi değiştirip make etmeye çalıştığımda birsürü hata alıyorum s8 G950F TR model telefonuma kvm eklentisi yapmaya çalıştım fakat başarılı olamadım bi türlü derleyemedim ilgimi çeken konu bu https://forum.xda-developers.com/galaxy-s8/help/arm-kvm-kernel-virtual-machine-enabled-t3772434
YanıtlaSilkerneli şu şekilde düzenledikten sonra kvm desteği geleceğini söylüyor
dd the following lines to file: arch/arm64/configs/exynos8895-dreamlte_defconfig
CONFIG_VIRTUALIZATION=y
CONFIG_KVM=y
CONFIG_KVM_MMIO=y
CONFIG_KVM_ARM_HOST=y
#from the command line type:
make clean
make mrproper
make exynos8895-dreamlte_defconfig
benim şuan kullandığım rom bu
https://forum.xda-developers.com/galaxy-s8/samsung-galaxy-s8--s8-cross-device-development/rom-lineageos-15-1-t3899829
LineageOS 16.0 un betası çalışacak şekilde hazırlanmış bi kernel var içinde
Source codu olarak verdiği bağlantı bu https://gitlab.com/exynos8895/android_kernel_samsung_universal8895
uğraştım ama yapamadım yardımcı olabilirseniz sevinirim türkçe güncel bi kaynak yok eskininde uygulamalar yöntemler değiştiği için bi önemi kalmıyor
bakın buda başka bi kernel bir çok roma uyum sağlayabilen global bi kernel
https://forum.xda-developers.com/galaxy-s8/samsung-galaxy-s8--s8-cross-device-development/kernel-tgpkernel-t3654423 soruce kodu aşşağıda
Source Code: https://github.com/TheGalaxyProject/
fakat adam source coduna şöyle bi not düşmüş
How to use
Adjust the toolchain path in build.sh and Makefile to match the path on your system.
Run build.sh with the following options, doesn't matter what order keep and silent are in.
For example: build.sh 950 -s
./build.sh will build TGPKernel
./build.sh -k will build TGPKernel and also copy the .img files to the .output folder
./build.sh -s will build TGPKernel but only display warning and errors in the log
./build.sh -ks will do both -k and -s at the same time
./build.sh 950 will only build the S8 Kernel
./build.sh 955 will only build the S8+ Kernel
When finished, the new files and logs will be created in the .output directory.
If Java is installed, the .zip file will be signed.
These commands can only be executed by themselves
./build.sh 0 will clear the workspace
./build.sh 00 will clear CCACHE
./build.sh configs will regenerate the stock dream(2)lte configs and overwrite the old ones
kusura bakmayın ama ben konuya biraz fransız kaldım yani