Rehber Custom Rom Nasıl Derlenir ? Detaylı ve basit anlatım

drasonli17

Deneyimli Üye
Deneyimli Üye
MIUI Sever
SMS Onaylı
Adım
Ömer
Cihazım
Mi 9T
Konum
Ankara
Katılım
1 Aralık 2019
Konular
19
Mesajlar
155
Tepkime puanı
314
Puanları
63
Merhaba xiaomi türkiye forumu üyeleri ;

Bu yazımda cihazlarınız için nasıl Custom Rom geliştirebileceğinizi anlatacağım. İlgi duyan arkadaşlara umarım yardımcı olabilirim.
Öncelikle kısaca Android Açık Kaynak Kodları ile nasıl yazılım birleştireceğinizi özetlemek istiyorum.

Google tarafından yayınlanan Android Açık Kaynak Projesi (Android Open Source Project) tüm geliştiricilere açıktır. Çeşitli özelleştirmeler ile AOSP yazılımları farklı üreticilerin denetimine girer. Örneğin LineageOS, Resurrection Remix, Pixel Experience. Geliştiriciler bu kaynak kodları kendi cihazlarının kaynak kodları ile harmanlayarak "cihaza özel yazılımlar" üretir. Kısaca görsel olarak özetlemek gerekir ise ;
Resimleri görmek için giriş yapmanız gerekmektedir.


Konuya geçmeden önce ben gerçekleştireceğim adımları LineageOS custom rom derlemek üzerine devam ettireceğim sizlerde benzer işlemleri kendi cihazınız için deneyimleyebilirsiniz.

İhtiyaç Listesi :

A- ) Linux Dağıtımına sahip bir makine ( Ubuntu 18.04 64 bit , 4 çekirdek 8GB RAM 110 GB dahili depolama alanı kullanıyorum )


Not : Sanal makine veya kendi bilgisayarınızda bu işlemi yapmak biraz can sıkıcıdır sebebi ise kaynak kodların boyutu 30-60GB boyutları arasında değişmektedir ve "repo" olarak adlandırdığımız kaynak kodları indirmek ve derlemek hata aldığında sıfırlayıp tekrar 30-60GB dosya indirmek zor olacaktır. Bu nedenle sanal makineleri sunucular üzerinden edinmenizi şiddetle tavsiye ediyorum.

Burada iki adet çözüm yolu önerebilirim.

1- Google Cloud Platform ( Kayıt olmak için kredi kartı bilgilerinizi girmeniz gerekmektedir ( 1 dolarlık kesinti alıyor ve sistem içerinde harcıyabileceğiniz 300 dolar kredi veriyor, çift doğrulama sistemine geçildiği için Microsoft Azure servisini kullanabilirsiniz. )

2- Microsof Azure ( Özellikle öğrenci iseniz gerçekten büyük nimet. Öğrenci mailiniz (edu.tr) ile kaydolduğunuzda ücretsiz olarak kullanabiliyorsunuz. Halihazırda aylık 317 TL'lik Ubuntu Premium SSD sunumunu kullanıyorum. Sunucuya bağlanmak için ise Putty programını indirip, sunucu IP adresi, kullanıcı adı-şifre girerek aşamalara devam edebilirsiniz.)


8=) Linux için Java

Linux dağıtımlarının verdiğimiz komutlar sonucunda bize çıktı verebilmesi için javaya ihtiyacımız var. Derleyeceğiniz Android sürümlerine göre java versiyonu değişkenlik gösterebilir.

Örnek olarak java 8'i sistemimize aşağıdaki kod ile kuralım.

sudo apt install openjdk-8-jdk

Java'nın kurulup kurulmadığını ise aşağıdaki kod ile kontrol edebilirsiniz.

java -version


C-) ROM kaynak kodları, cihaz kaynak kodları


Burada derlemek istediğimiz yazılımın kaynağını ve cihaz kaynak kodlarını Github üzerinde araştıracağız. Örnek olarak kendimize LineageOS custom romunu seçelim.


Resimleri görmek için giriş yapmanız gerekmektedir.


Burada işaretlediğim kısımları tanıyalım.

Yukarıda bulunan mavi kısım
: Burası branch olarak tanımlanır. İleride göreceğimiz -b komutunun hedef yeridir. Bu kısımı klasör olarak görebiliriz. Hangi klasör yolunu hedefliyoruz.
Lineage 17.1 Android 10 tabanlı bir custom romdur. Derlemek istediğimiz ( Cihazımızın kaynak kodları Android 10 ile uyumlu ise ) yazılım bu ise bu klasör yolunu seçebiliriz. Cihaz kaynak kodlarımız Android Pie tabanlı ise bu branchı ( klasörü ) seçmememiz gerekmektedir.

Kırmızı Kısım : Kırmızı alanda yer alan URL, Ubuntu'ya hedef belirttiğimiz rom kaynak kod adresidir. Bunu şuna benzetebiliriz, faremiz ile bir bağlantının üzerine geldiğimizde mouse işaretçisi farklı bir görünüm alır, iki kez tıkladığımızda ise bağlantı açılır. Kırmızı kısım mouse işaretçisinin farklı bir görünüm aldığı sisteme hedef belirttiğimiz alandır.

Mavi Kısım : Mavi alandaki "repo sync" komutu ile Ubuntu'ya kırmızı alanda belirttiğim hedefteki dosyaları sistemime çek komutu olarak düşünülebilir.

-

Cihaz kaynak kodları

Cihazınızın kaynak kodları, üreticinin (Xiaomi) geliştiriciler ile paylaştığı cihazın ana donanım bilgilerinin uyarlandığı kaynak kodlarıdır. Bu alanda dört adet kaynak koda ihtiyacımız var.

1-) Device
2-) Kernel
3-) Vendor
4-) Common ( her cihaz için gerekli değildir )

Cihazların kod adları bulunmaktadır, bu kod adlar ile Github üzerinden cihazlarınızın kaynak kodlarını bulabilirsiniz. Örnek bir denemeyi Mi 9T cihazı üzerinde araştıralım. Google'a Mi 9T/Redmi K20 'nin kod adı olan davinci 'yi device kernel vendor common , github etiketleri ile araştıralım karşımıza örnek olarak şu sonuçlar çıkacaktır.

Kernel :
Device :
gibi.

Kaynak kodları elde ederken yukarıda bahsettiğim branch kısımında Android versiyon bilgilerinin rom kaynağı ile bir olduğundan emin olun.

Son notlar :
İleride anlatacağım aşamalarda bazı temel Linux kodları kullanacağız. Anlamak açısından faydalı olacağı için kodların neyin karşılığı olduğunu yazmak istiyorum.

cd : istediğiniz klasörün içerisine girmenizi sağlar. Örneğin sistem klasörü var ve buraya girmek istiyorum. cd sistem. Ana dizindeyim sistemin içerisindeki omer klasörüne girmek istiyorum. cd sistem/omer komutu ile erişim sağlayabilirsiniz.

mkdir : Bu komut dosya yaratmak için kullanılır. drason isiminde bir klasör yaratmak istiyorum. mkdir drason komutu kullanabilirsiniz.

ls : Bulunduğunuz klasör/dizindeki dosyaları göstermeyi sağlar

mv : Dosyayı yeniden adlandırmak istediğinzde bu komutu kullanırız. Örnek olarak drason.txt dosyasını drasonli17.txt olarak değiştirelim. Kullanacağımız komut mv drason.txt drasonli17.txt

nano:
Nano komutu windows üzerindeki not defteri olarak düşünülebilir, metin düzenleyici görüntüleyicidir. Örnek olarak drason.mk dosyasının içerisinde ne var bakalım ve düzenleyelim. nano drason.mk kodu ile dosyanın içeriğine göz atabiliriz.

sudo: Java kurarken bu kodu kullandık çünkü sistemin sahibi olarak bilgisayara iş yaptırmak istiyoruz. Bunu windows'ta yönetici olarak çalıştır komutu ile benzeşleştirebiliriz.


Başlayalım

1-) Ubuntu sistemimize yukarıda bahsettiğim şekilde Java kuralım.
2-) ROM dosyamız için bir klasör adı oluşturalım ( hataların yaşanmaması için türkçe karakter kullanmayalım ) . Örnek olarak lineage seçiyorum.


mkdir lineage

3- ) Dosyamızın içerisine girip rom kaynağımızı sistemize çekelim

cd lineage
repo init -u git://github.com/LineageOS/android.git -b lineage-17.1


Not : Burada kullandığımız -b komutu branch yani hedef klasörü temsil eder. Yukarı kısımda bulunan resimdeki mavi kısımdaki yazı hedef klasörümüz olan lineage-17.1 işaret ediyor.

repo sync

Burada veriler çekilmeye başlar, internet, işlemci, bellek hızınıza göre süre değişkenlik gösterebilir. Genellikle 20-30 dakika içerisinde tamamlanır 30-60GB arasında veri çekilebilir bu yüzden sistem harddiskiniz 100GB olursa yeterli olacağını düşünüyorum. . Sistem e-mail ve adınızı sorabilir lütfen istenilen verileri giriniz, ayarlamak için ise aşağıdaki kodu kullanabilirsiniz.

git config --global user.email "drason@miuiturkiye.net"
git config --global user.name "omersanli17"

4- ) Cihaz kaynak kodlarımızı çekelim

Bu kısımda cihaz kaynak kodlarımızı ilgili bölümlere ileteceğiz.
Rom klasörümüze giriş yapalım. Örneğin cd lineage.
Bu örneğimde device kaynak kodunu çekeceğiz sizde benzer işlemleri diğer dosyalar için yapınız.

git clone -b ten device/xiaomi/davinci

Bu kodu inceleyelim, git clone ile Ubuntu'ya hangi siteden veri çekeceğini söylüyorum. -b komutu istediğim branchı yani dosya yolunu belirtiyor. Github üzerinde de görebileceğiniz üzere ten branchını belirtiyorum. ten kısımından sonra ise bu verilerin hangi alana gönderileceğini gösteriyorum dizinimin içerisine device klasörünün altında bulunan xiaomi klasörünün altındaki davinci klasörüne gitsin diyorum

Benzer işlemleri kernel, common ve vendor için tekrarlayınız.

Not: Common ve kernel kaynak kodları cihazın işlemci kod adı ile de araştırılabilir. Örneğin ; device_xiaomi_msm89xx-common

5- Düzenleme

Lineage için işlerimiz biraz kolay olacak ancak diğer AOSP tabanlı romlarda değiştirip düzenlememiz gerekecek alanlar bulunuyor. Burası bahsettiğim aşamaların önemli noktalarından. Öncelikle cihaz klasörümüzün içerisine girelim. Örnek olarak ;

cd device/xiaomi/davinci

Dosya içeriklerine göz atalım

ls
Bizleri aşağıdaki dosyalar karşılayacak. Burada rom adı kısmı değişkenlik gösterecektir. Biz bu kısımda Lineage derleyeceğimiz için lineage_davinci.mk olarak adlandırılacaktır. AOSP tabanlı farklı bir rom derliyorsanız yukarıda bahsettiğim mv komutu ile dosya adını rom adı ile değiştirmeniz gerekmektedir. Örnek mv romadı_davinci.mk lineage_davinci.mk

AndroidProducts.mk
romadı.dependencies
vendorsetup.sh
romadı_davinci.mk

Yukarıda belirtmiş olduğum dosyaları nano komutu ile açın ve rom ve cihaz adlarını cihazınıza ve seçtiğiniz kaynak romuna göre düzenleyin.

Örnek;
nano lineage_davinci.mk
PRODUCT_NAME := xxxxxx_drason

Bu satırda xxx kısmı rom adı, drason kısmı cihaz kod adını simgelemektedir, bu kısımda düzenlenmiş hali aşağıdaki gibi olacaktır.

PRODUCT_NAME := lineage_davinci

Düzenlediğiniz belgeleri kaydetmek için CTRL + O kısayolunu dosyadan çıkmak için CTRL + X kısayollarını kullanabilirsiniz.

6- Derleme


Son aşama olarak meyvelerimizi toplayalım, rom klasörümüze giriş yapalım ve şu komutları çalıştıralım

cd lineage ( rom klasörüne giriş )
. build/envsetup.sh
brunch cihazkodadı ( brunch davinci )

Derleme işlemi kendiliğinden başlayacaktır ve tamamlandığında TWRP üzerinden flaşlanabilir zip dosyası rom klasörünüze aktarılacaktır. ZIP dosyasını sunucunuzdan bilgisayarınıza indirebilir veya kolay olması açısından Mega eklentisini Ubuntu cihazınıza kurarak zip dosyanızı mega hesabınıza aktarabilirsiniz.

Not: Derleme esnasında birçok kullanıcı hata ile karşılaşmaktadır. Hataların büyük kısmı rom kaynak dosyaları, cihaz kaynak dosyalarının eksik çekilmesi/internet sorunundan kaynaklanan indirme problemleri ve düzenleme işlemlerinin eksik yapılmasıdır. Karşılaştığınız hataları Google'da aratarak veya forumlara ileterek çözüm arayışına girebilirsiniz.

En basit anlatımı ile Türkçe olarak sizlere aktarmaya çalıştım. Umarım ilgilenen arkadaşlara faydalı olur. Eksik veya eklenmesini istediğiniz alanları alt kısımda benim ile paylaşırsanız sevinirim. İçeriğin forum.miuiturkiye.net adresinden farklı alanlarda paylaşılmasının ahlaki açıdan uygun olmadığı görüşündeyim.

İlginiz için teşekkür ederim, emeğin karşılığı olarak beğenirseniz sevinirim.


İyi forumlar
drasonli17
 

Termux

Kıdemli Üye
Kıdemli Üye
MIUI Sever
SMS Onaylı
Adım
Onur
Cihazım
Mi 9 T
Konum
İstanbul
Katılım
7 Mart 2020
Konular
20
Mesajlar
366
Tepkime puanı
199
Puanları
58
Değerli bir paylaşım olmuş eline sağlık yakın zamanda imkanı olan arkadaşların paylaştığı romları deneyebiliriz.
 
Üst Alt