Rehber Custom Rom Nasıl Portlanır ? 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ı
312
Puanları
63
Hocam bu SUR-Master nedir nereden bulacağız. Ben system.new.dat.br açan çok tool gördüm, kapatan da gördüm ama sağlıklı bir system.transfer.list üretemedikleri için hiçbir işe yaramıyor. Bir paket oluşuyor ancak telefona yüklemek mümkün olmuyor. Çünkü system.transfer.list bozuluyor.
Gerçekten güzel bir araç otomatik açıp kapatıyor, ancak gözlemlediğim şu ki açtın romu düzenleme yaptın zipledi. Sonra üzerinden zaman geçit birdaha düzenledin kapattı bazen imaj dosyasını düzgün kapatmadigi icin twrpde hata alabiliyorsun. Öneri olarak düzenle kapat zipi, sonra project 1 i sil düzenlenmiş zipi birdaha aç
 

CANPARD

Kıdemli Üye
Kıdemli Üye
MIUI Sever
SMS Onaylı
Adım
1
Cihazım
Redmi note 10
Konum
İÇEL
Katılım
8 Aralık 2017
Konular
14
Mesajlar
396
Tepkime puanı
201
Puanları
58
Merhaba MIUI Türkiye kullanıcıları
Bu yazımda Qualcomm işlemcili farklı bir cihazın yazılımını kendi cihazımıza nasıl uyarlayabileceğimizi anlatacağım.

Anlatıma geçmeden önce bir önceki yazımda anlattığım derleme işlemi ile portlama işlemi arasındaki farka göz atalım. Derleme işlemi devasa büyüklükte paketlenmemiş açık kaynak kodları ile cihaz kaynak kodlarınızın harmanlanmasıdır. Portlama işlemi ise derlenmiş iki yazılımın (sizin cihazınız ve hedef cihaz) birbiri ile uyumlu hale getirilmesi olarak düşünülebilir.

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


ROM portlamak, derleme işlemine kıyasla stabilitesi düşük bir işlemdir. Boot ettiğiniz (çalıştırdığınız) her yazılım hatalar ile birlikte gelecektir. Son kısımda bu hataların çözümlerine göz atacağız. ROM Portlamayı adım adım inceleyecek olursak ;

A-) Boot etme ( çalıştırma )
8=) Hata Giderme
C-) Cihaz bilgilerini girme

Bu adımları nasıl gerçekleştirebileceğimize yakından bakacağız. Öncelikle portlama işlemi için gerekli araçlara bakalım.

1-) Cihazımız ve cihazımıza ait custom/stock rom
2-) Hedef cihazımız ve hedef cihazımıza ait custom/stock rom
( Cihazımızın işlemcileri aynı veye benzer tabanda olmalı / Örneğin cihazımız Snapdragon 730 işlemcisi ise hedef cihazımızda Snapdragon 730 olmalı, alt-orta segmentte bazı işlemcilerin tabanları/lib dosyaları aynı olduğu için boot işlemi gerçekleşebilir, uyuma göz atmanız gerekmektedir Önreğin Snapdragon 410/ 600 serisi uyumu)
3-) NotePad++
4-) 7Zip / Winrar
5-) Android Image Kitchen ( AIK )
6-) Windows veya Linux İşletim Sistemine Sahip Bilgisayar
7-) Aşağıda belirttiğim dosyalara göre System.img Unpack Repack ( Açma ve Kapatma ) , system.new.dat.br 'den system.new.dat ve system.img dönüştürme aracı vs.

Not: Seçeceğimiz custom/stock romların Android sürümü birbiri ile aynı olacaktır aksi takdir kernel uyumsuzluğu nedeni ile yazılım başlatılmayacaktır.


Öncelikle Android cihazlarımıza yüklediğimiz ROM'ların içeriğine göz atalım, klasörleri tanıyalım.

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


Burada belirttiğim dosya ve klasörler ROM'dan ROM'a farklılık gösterebilmektedir. Örneğin "system.new.dat.br - system.patch.dat - system.transfer.list" üçlüsü yerine system.img veya system.new.dat ve system.transfer.list " dosyaları bulunabilir. Firmware-update klasörü bulunmayabilir.

Otamatik olaram br, img dosyalarınızı açıp kapayabileceğiniz bir araç öneriyim.
SUR-Master

firmware-Update :
Cihaza özel donanım imajlarının bulunduğu kısımdır. Portlayacağınız ROM'dan kesinlikle silmeniz gerekmektedir. Eğer bu şekilde portladığınız zipi TWRP'den flaşlarsanız cihazınız hardbrick olacaktır.

META-INF:
Bu klasörün içerisinde bulunan META-INF/com/google/android/updater-script dosyası bizim için önem arz ediyor. Bu dosya TWRP'ye nelerin yapılacağını söyleyen komut dizilerini içeriyor. Bu dosyanın üzerinde düzenleme yaparak TWRP'ye neler yapacağını söyleyeceğiz.

System.new.dat.br - system.patch.dat - system.transfer.list : Bu dosyalama yapısı sürekli değişim halindedir. Güncel olarak kullanılan dosyalama türü şu anda system.new.dat.br formatıdır. Bu dosyayı öncelikle system.new.dat'a daha sonra system.img'ye dönüştürdükten sonra unpack /açma işlemini gerçekleştirebiliriz. Bu dosya sistem cihazınızın ana dizinine dosya göndermenizi sağlar. Dosyayı açtığınızda örneğin şu klasörleri görebilirsiniz.

system/priv-app/Chrome/chrome.apk
/init.rc

system.new.dat.br klasörünü açanTve yükleyen TWRP bu dosyanın içinde bulunan Chrome Tarayıcısını sistem uygulaması olarak sisteme yüklüyor. Bir diğer klasörde ise ana dizinde bulunan init.rc dosyası değiştiriliyor/ekleniyor. Belirttiğim gibi sizin hedef veya ana rom dosyanızda dosyalama tipi farklı olabilir yapacağınız işlemler sonucu bu dosyayı açıp kapattıktan sonra tekrar zip dosyanıza aktardığınızda sıkıntı olmayacaktır.

vendor: Nispeten eski cihazlarda rastlamadığımız vendor imaj/br dosyaları Android'in yeni çözümü olarak düşünülebilir. EFS/IMEI GPS,sensör ve diğer donanım parçalarının yazılım entegrasyonu yerine ayrı bir alanda çalışmasına olanak sağlar. Android sürümü uyumlu iki ROM dosyanız bulunuyor ise cihazınızdan vendor dosyasını silmeyerek , hedef romdaki vendor dosyasını silerek bu işlemi deneyebilirsiniz.

-

Dosyaları kısaca tanıdığıma göre yapacağımız işlemlere geçelim. Yapacağımız işlemler boot.img dosyasını düzenlemek, hataları gidermek ve ince ayarları yapmak.

A-) Boot.img ve Updater-script dosyasını düzenlemek


Boot.img dosyası yazılımınızı, donanımıza entegre ederek sistemi açan ana imaj dosyasıdır. Yapacağımız küçük değişiklikler ile yazılımı başlatmayı başarabiliriz. Bunun için öncelikle Android Image Kitchen programımızı/zip dosyamızı indirelim. İndirmek için tıklayınız.

Not: Android Image Kitchen boot ve recovery.img dosyalarını Windows ve Linux işletim sistemlerinde açma ve kapama işlemini gerçekleştiren araç/tooldur. Eğer boot.img dosyanız açılmıyor/eksik açılıyor ise internet üzerinde aratacağınız farklı bir araç ile deneyebilirsiniz. Ancak genellikle üreticiler boot.img dosyasını imzalarlar/şifrelerler de diyebiliriz. Bu nedenle boot.img unsign tool yazarak gerekli araçları indirerek bu imzayı kaldırmanız gerekebilir, ancak bu işlemler genellikle başarısızlık ile sonuçlanır.

Masaüstüne iki adet klasör açalım. Ben adlarını kolay anlamam için klasör adlarının birine "Base/Taban" diğerine "Port/Hedef" adlandırmasını veriyorum. Her iki klasörün içerisine Android Image Kitchen zipinin içindeki dosyaları aktaralım.

Base/Taban klasörümün içerisine kendi cihazımın rom dosyasının içindeki boot.img dosyasını aktaralım. Port/Hedef klasörüne ise hedeflediğimiz cihazın yazılımın içindeki boot.img dosyasını aktaralım.

Her iki dosyada da boot.img dosyasını tutarak unpackimg.bat dosyasının üstüne sürükleyelim. İşlem başlayacak split_img adında klasör yaratılacaktır. Bu dosyanın içerisinde bulunan boot.img-zImage ve boot.img-dtb dosyalarını Base/Taban'dan Port/Hedef/split_img klasörünün içerisine aktaralım.

Bu işlem çoğu custom romu port etmek için yeterli olacaktır, ancak boot.img üzerinde düzenlemelerimize devam edelim. Base ve Port / ramdisk klasörünün içeriğine girelim ve fstab.qcom dosyalarını Notepad++ ile açalım.
Hedef romdaki aşağıdaki kodlar arasındaki satırların tümünü silelim, base fstab.qcom dosyamızdaki ilgili yerdeki kodlar ile değiştirelim. Eğer boot işlemi (repack işleminden sonra aşağıda anlatıcam) gerçekleşmez ise fstab.qcom dosyasını tamamen değiştirmeyi deneyebilirsiniz.

/dev/block/bootdevice (dahil)
/device(s) (dahil değil)


Bu işlemler sonucunda boot.img dosyanızı tekrar tutarak bu sefer repackimg.bat dosyasını sürükleyin size image-new.img adında portlanmış boot imajı verecektir. Bu dosyanın adını boot.img olarak değiştirin ve hedef rom zipiniz içindeki boot.img ile yer değiştirin. Hedef ROM zipini TWRP üzerinden flaşlayın yazılımın açılıp açılmadığını kontrol edin. Eğer yazılım açılmıyorsa hedef romdan aldığınız unpack ettiğiniz boot.img dosyasında bulunan init.rc, uneventd.rc, file_contexts, init.target.rc dosyalarını base/taban rom ile karşılaştırın, eksik satırları giderip tekrar boot etmeyi deneyin.

Updater-Script düzenleme / anlama

Updater-script dosyası hedef rom dosyanızın META-INF/com/google/android klasörünün içerisinde bulunur. Yukarıdaki işlemler sonucu TWRP'de portladığınız yazılımı yüklerken hata alıyor iseniz sorun iki kaynaktan olabilir.

-META INF içerisinde bulunan updater-script kodlarında cihaza özel yazılım yapacağı kodların bulunması (aşağıda çözümüne göz atacağız)
-Hedef romun özel imza taşıyor olması ( Zip imzasını kaldırmak için Google'da zip unsign tool xda yazarak çözümlere göz atabilirsiniz.)


Bazı updater-script kodlarında

getprop("ro.product.device") == "davinci" || abort("E3004: This package is for \"davinci\" devices; this is a \"" + getprop("ro.product.device") + "\"."); veya get device kodları bulunur. Cihazınızın kod adı bununla eşleşmiyor ise TWRP'de yükleme yapılmaz bu nedenle bu satırları updater-scriptten silelim.

Örneğin hedef rom dosyanızda belirttiğim gibi system.new.dat.br - transfer.list - patch.dat - üçlüsü bulunuyor. Sizin updater-script kodunuzda bu dosyaları yüklemesini TWRP'ye öğreten şu kodlar bulunur.

ui_print("Patching system image unconditionally...");
block_image_update("/dev/block/bootdevice/by-name/system", package_extract_file("system.transfer.list"), "system.new.dat.br", "system.patch.dat") ||
abort("E1001: Failed to update system image.");

Buradaki kodları inceleyelim. ui_print("xxxxxxx") komutu sadece yazı göstermeye, kullanıcıya şu an ne yapıldığını TWRP ekranında gösteren komuttur.
Hemen alt satırda ise block_image_update komutu ile imaj dosyasını kaynak ve hedef göstererek güncelleme işlemi gerçekleştirilir. Kodun devamından şunu anlıyoruz.
ZIP içerisinde bulunan system.transfer.list"), "system.new.dat.br", "system.patch.dat dosyalarını, cihazın içerisindeki /dev/block/bootdevice/by-name/system dizinine aktar.

Bir örneği de boot.img dosyası için bakalım.


package_extract_file("boot.img", "/dev/block/bootdevice/by-name/boot");

Bu şekilde sizde dosya yapılarını değiştirseniz bile yazacağınız script kodları ile zipi farklı şekilde flaşlamanın yollarını çözebilirsiniz.

8=) Hata Giderme

Yazılımı portladığınızda ve cihazınızda açıldığında birçok hata ile karşı karşıya kalacaksınız/kalabilirsiniz. Wi-Fi açılmama/kapanmama, RIL/IMEI sorunu, Mobil Veri Sorunu, Kamera Açılmama/ Video kaydetmeme gibi gibi gibi. Tonlarca hata sizi bekliyor ve bu çözümleri cihazınızın stock/custom romunda bulunan dosyalar ile çözümlemeye çalışacağız.

NOT: Söylemem gerekirki portlamanın en güzel kısmı burası iken en zorlu kısmı da burasıdır. Yapacağınız işlemlerde cihaz boot olmayabilir/yazılım çalışmayabilir açılış ekranı dönebilir. Bu yüzden işlemleri tek tek deneyin flaşlayın açılmazsa yaptığınız işlemi geri alın başka çözümler arayın. Böylelikle yazılımın neden boot olmadığını anlayabilirsiniz.

Hedef ve taban romunuzda system.new.dat.br üçlüsü var ve bunu unpack/açıp repack/kapatmak istiyorsanız google'a how to system.new.dat.br unpack/repack yazarak veya system.img imajı var how to unpack system.img xda yazarak belirtilen araçları/toolları kullanabilirsiniz.

Hedef klasörünün içerisinde bulunan system/bin klasöründe eksik bulunan dosyaları base/taban romunuzdan giderin.

Hata çözümleri :

Sensör :

boot.img içindeki aşağıdaki dosyaların eksik satırlarına göz atın.

uneventd.qcom.rc
uneventd.rc

Aşağıdaki dosyaları base/port ile değiştirin
system/lib/hw/sensors.msm****.so (veya sensors.lsm6db0.so)
system/lib64/hw/sensors.msm****.so (veya sensors.lsm6db0.so)
system/lib/libsensorservice.so
system/lib64/libsensorservice.so


Ses Sorunu
Aşağıdaki dosyaları/klasörleri base/taban romundan hedef port romu ile değiştirin.

system/lib/hw/
audio.primary.msm****.so
audio.primary.default.so
system/lib64/hw/
audio.primary.msm****.so
audio.primary.default.so

Kulaklık, ahize sorunu
Aşağıdaki dosyaları/klasörleri base/taban romundan hedef port romu ile değiştirin. Eksik dosyaları karşılaştırın.

system/etc/
mixer_paths.xml

Tuşların çalışmama sorunu
Aşağıdaki dosyaları/klasörleri base/taban romundan hedef port romu ile değiştirin. Eksik dosyaları karşılaştırın.
system/usr/keylayout/
goodix.kl
gpio-keys.kl
Generik.kl

Video sorunu
system/etc/firmware/
venus. ile başlayan tüm dosyaları değiştirin

Bildirim Ledi sorunu
Aşağıdaki dosyaları baseden porta aktarın

system/lib/hw/lights.msm***.so
system/lib64/hw/lights.msm***.so

Titreşim Sorunu
Aşağıdaki dosyaları baseden porta aktarın

system/lib/libhardware_legacy.so
system/lib64/libhardware_legacy.so

Radyo Sorunu
Aşağıdaki dosyaları baseden porta aktarın

system/lib/qcomfm_jni.so
system/lib64/qcomfm_jni.so

Wifi Sorunu
Aşağıdaki dosyaları baseden porta aktarın

system/lib/modules/wlan.ko
system/lib/libwcnss_qmi.so
system/lib64/libwcnss_qmi.so

NOT: Uygulamalarda çökme alıyorsanız bu biraz zor olacaktır. İlgili apk dosyaları system/app veya system/priv-app içeirsinden bulabilir apk dosyaları düzenleyip imzalayıp tekrar deneyebilirsiniz veya sorun çıkaran apkları system klasöründen silip alternatif uygulamları klasör içerisinde system/app klasörüne gönderebilirsiniz.


C-) Cihaz Bilgilerini girme

Bu işlemin son kısmı olarak düşünülebilir, artık herşey tamam; cihaz hakkında bulunan cihaz adını değiştirmek, bölge ve saat ayarlarının varsılayan değerlerini değiştirmek kalıyor. Bunun için system/build.prop dosyasını açıyoruz.

Cihaz modelinin yer aldığı kısımları / brand: model / kendi cihazımızın adı ile değiştiriyoruz. Örnek olarak

ro.product.brand=Google
ro.product.model=Nexus 7
Örneğin Nexus 7 Portladığımız cihazın adıydı bunu drason ile değiştirelim, böylece telefon hakkında kısmında cihaz adı omer drason olarak gözükecek.
ro.product.brand=omer
ro.product.model=drason

Dili değiştirmek istediğimizde ise

ro.product.locale.language=en
ro.product.locale.language=tr

olarak değiştirmemiz yeterli olacaktır. Aynı şekilde varsayılan zil sesi, bildirim sesi, saati varsıylan değerlerini ilgili satırladan bulup değiştirebilirsiniz.


Umarım geliştirici olmak isteyen arkadaşlara yardımcı olur. Basit bir anlatımla Snapdragon cihazlara nasıl rom portlanabileceğini göstermeye çalıştım. Yazımın miuiturkiye.net adresinden farklı alanlarda paylaşılmasının ahlaki açıdan uygun olmadığı düşüncesindeyim. Emeğin karşılığı olarak beğenirseniz sevinirim.

İyi forumlar
drasonli17
Çok faydalı bir konu olmuş eline sağlık
 

ROCKSTAR~

Yeni Üye
Yeni Üye
MIUI Sever
SMS Onaylı
Adım
Selim Atabay
Cihazım
Redmi S2
Konum
Yok
Katılım
18 Kasım 2019
Konular
3
Mesajlar
14
Tepkime puanı
0
Puanları
1
Hocam elimde Redmi S2 cihazım var,
İşlemcisi sd625 64bit rom destekliyor
Ama orijinal ve EU romları 32bit yapılmış,
Bu cihaza nasıl 64bit portlayabilirim,
Şimdiden teşekkürler .
 

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ı
312
Puanları
63
Hocam elimde Redmi S2 cihazım var,
İşlemcisi sd625 64bit rom destekliyor
Ama orijinal ve EU romları 32bit yapılmış,
Bu cihaza nasıl 64bit portlayabilirim,
Şimdiden teşekkürler .
XDA'da onlarcxca 64 bit rom var kerrnelleri baz alarak port deneyebilirsin, kimovil üzerinden sdm625 cihazların listesine bakabilirsin.
Bknz;
 

acemimerakli

Tecrübeli Üye
Tecrübeli Üye
MIUI Sever
SMS Onaylı
Adım
Özkan
Cihazım
mi5
Konum
bursa
Katılım
20 Ekim 2016
Konular
2
Mesajlar
515
Tepkime puanı
231
Puanları
58
Merhaba MIUI Türkiye kullanıcıları
Bu yazımda Qualcomm işlemcili farklı bir cihazın yazılımını kendi cihazımıza nasıl uyarlayabileceğimizi anlatacağım.

Anlatıma geçmeden önce bir önceki yazımda anlattığım derleme işlemi ile portlama işlemi arasındaki farka göz atalım. Derleme işlemi devasa büyüklükte paketlenmemiş açık kaynak kodları ile cihaz kaynak kodlarınızın harmanlanmasıdır. Portlama işlemi ise derlenmiş iki yazılımın (sizin cihazınız ve hedef cihaz) birbiri ile uyumlu hale getirilmesi olarak düşünülebilir.

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


ROM portlamak, derleme işlemine kıyasla stabilitesi düşük bir işlemdir. Boot ettiğiniz (çalıştırdığınız) her yazılım hatalar ile birlikte gelecektir. Son kısımda bu hataların çözümlerine göz atacağız. ROM Portlamayı adım adım inceleyecek olursak ;

A-) Boot etme ( çalıştırma )
8=) Hata Giderme
C-) Cihaz bilgilerini girme

Bu adımları nasıl gerçekleştirebileceğimize yakından bakacağız. Öncelikle portlama işlemi için gerekli araçlara bakalım.

1-) Cihazımız ve cihazımıza ait custom/stock rom
2-) Hedef cihazımız ve hedef cihazımıza ait custom/stock rom
( Cihazımızın işlemcileri aynı veye benzer tabanda olmalı / Örneğin cihazımız Snapdragon 730 işlemcisi ise hedef cihazımızda Snapdragon 730 olmalı, alt-orta segmentte bazı işlemcilerin tabanları/lib dosyaları aynı olduğu için boot işlemi gerçekleşebilir, uyuma göz atmanız gerekmektedir Önreğin Snapdragon 410/ 600 serisi uyumu)
3-) NotePad++
4-) 7Zip / Winrar
5-) Android Image Kitchen ( AIK )
6-) Windows veya Linux İşletim Sistemine Sahip Bilgisayar
7-) Aşağıda belirttiğim dosyalara göre System.img Unpack Repack ( Açma ve Kapatma ) , system.new.dat.br 'den system.new.dat ve system.img dönüştürme aracı vs.

Not: Seçeceğimiz custom/stock romların Android sürümü birbiri ile aynı olacaktır aksi takdir kernel uyumsuzluğu nedeni ile yazılım başlatılmayacaktır.


Öncelikle Android cihazlarımıza yüklediğimiz ROM'ların içeriğine göz atalım, klasörleri tanıyalım.

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


Burada belirttiğim dosya ve klasörler ROM'dan ROM'a farklılık gösterebilmektedir. Örneğin "system.new.dat.br - system.patch.dat - system.transfer.list" üçlüsü yerine system.img veya system.new.dat ve system.transfer.list " dosyaları bulunabilir. Firmware-update klasörü bulunmayabilir.

Otamatik olaram br, img dosyalarınızı açıp kapayabileceğiniz bir araç öneriyim.
SUR-Master

firmware-Update :
Cihaza özel donanım imajlarının bulunduğu kısımdır. Portlayacağınız ROM'dan kesinlikle silmeniz gerekmektedir. Eğer bu şekilde portladığınız zipi TWRP'den flaşlarsanız cihazınız hardbrick olacaktır.

META-INF:
Bu klasörün içerisinde bulunan META-INF/com/google/android/updater-script dosyası bizim için önem arz ediyor. Bu dosya TWRP'ye nelerin yapılacağını söyleyen komut dizilerini içeriyor. Bu dosyanın üzerinde düzenleme yaparak TWRP'ye neler yapacağını söyleyeceğiz.

System.new.dat.br - system.patch.dat - system.transfer.list : Bu dosyalama yapısı sürekli değişim halindedir. Güncel olarak kullanılan dosyalama türü şu anda system.new.dat.br formatıdır. Bu dosyayı öncelikle system.new.dat'a daha sonra system.img'ye dönüştürdükten sonra unpack /açma işlemini gerçekleştirebiliriz. Bu dosya sistem cihazınızın ana dizinine dosya göndermenizi sağlar. Dosyayı açtığınızda örneğin şu klasörleri görebilirsiniz.

system/priv-app/Chrome/chrome.apk
/init.rc

system.new.dat.br klasörünü açanTve yükleyen TWRP bu dosyanın içinde bulunan Chrome Tarayıcısını sistem uygulaması olarak sisteme yüklüyor. Bir diğer klasörde ise ana dizinde bulunan init.rc dosyası değiştiriliyor/ekleniyor. Belirttiğim gibi sizin hedef veya ana rom dosyanızda dosyalama tipi farklı olabilir yapacağınız işlemler sonucu bu dosyayı açıp kapattıktan sonra tekrar zip dosyanıza aktardığınızda sıkıntı olmayacaktır.

vendor: Nispeten eski cihazlarda rastlamadığımız vendor imaj/br dosyaları Android'in yeni çözümü olarak düşünülebilir. EFS/IMEI GPS,sensör ve diğer donanım parçalarının yazılım entegrasyonu yerine ayrı bir alanda çalışmasına olanak sağlar. Android sürümü uyumlu iki ROM dosyanız bulunuyor ise cihazınızdan vendor dosyasını silmeyerek , hedef romdaki vendor dosyasını silerek bu işlemi deneyebilirsiniz.

-

Dosyaları kısaca tanıdığıma göre yapacağımız işlemlere geçelim. Yapacağımız işlemler boot.img dosyasını düzenlemek, hataları gidermek ve ince ayarları yapmak.

A-) Boot.img ve Updater-script dosyasını düzenlemek


Boot.img dosyası yazılımınızı, donanımıza entegre ederek sistemi açan ana imaj dosyasıdır. Yapacağımız küçük değişiklikler ile yazılımı başlatmayı başarabiliriz. Bunun için öncelikle Android Image Kitchen programımızı/zip dosyamızı indirelim. İndirmek için tıklayınız.

Not: Android Image Kitchen boot ve recovery.img dosyalarını Windows ve Linux işletim sistemlerinde açma ve kapama işlemini gerçekleştiren araç/tooldur. Eğer boot.img dosyanız açılmıyor/eksik açılıyor ise internet üzerinde aratacağınız farklı bir araç ile deneyebilirsiniz. Ancak genellikle üreticiler boot.img dosyasını imzalarlar/şifrelerler de diyebiliriz. Bu nedenle boot.img unsign tool yazarak gerekli araçları indirerek bu imzayı kaldırmanız gerekebilir, ancak bu işlemler genellikle başarısızlık ile sonuçlanır.

Masaüstüne iki adet klasör açalım. Ben adlarını kolay anlamam için klasör adlarının birine "Base/Taban" diğerine "Port/Hedef" adlandırmasını veriyorum. Her iki klasörün içerisine Android Image Kitchen zipinin içindeki dosyaları aktaralım.

Base/Taban klasörümün içerisine kendi cihazımın rom dosyasının içindeki boot.img dosyasını aktaralım. Port/Hedef klasörüne ise hedeflediğimiz cihazın yazılımın içindeki boot.img dosyasını aktaralım.

Her iki dosyada da boot.img dosyasını tutarak unpackimg.bat dosyasının üstüne sürükleyelim. İşlem başlayacak split_img adında klasör yaratılacaktır. Bu dosyanın içerisinde bulunan boot.img-zImage ve boot.img-dtb dosyalarını Base/Taban'dan Port/Hedef/split_img klasörünün içerisine aktaralım.

Bu işlem çoğu custom romu port etmek için yeterli olacaktır, ancak boot.img üzerinde düzenlemelerimize devam edelim. Base ve Port / ramdisk klasörünün içeriğine girelim ve fstab.qcom dosyalarını Notepad++ ile açalım.
Hedef romdaki aşağıdaki kodlar arasındaki satırların tümünü silelim, base fstab.qcom dosyamızdaki ilgili yerdeki kodlar ile değiştirelim. Eğer boot işlemi (repack işleminden sonra aşağıda anlatıcam) gerçekleşmez ise fstab.qcom dosyasını tamamen değiştirmeyi deneyebilirsiniz.

/dev/block/bootdevice (dahil)
/device(s) (dahil değil)


Bu işlemler sonucunda boot.img dosyanızı tekrar tutarak bu sefer repackimg.bat dosyasını sürükleyin size image-new.img adında portlanmış boot imajı verecektir. Bu dosyanın adını boot.img olarak değiştirin ve hedef rom zipiniz içindeki boot.img ile yer değiştirin. Hedef ROM zipini TWRP üzerinden flaşlayın yazılımın açılıp açılmadığını kontrol edin. Eğer yazılım açılmıyorsa hedef romdan aldığınız unpack ettiğiniz boot.img dosyasında bulunan init.rc, uneventd.rc, file_contexts, init.target.rc dosyalarını base/taban rom ile karşılaştırın, eksik satırları giderip tekrar boot etmeyi deneyin.

Updater-Script düzenleme / anlama

Updater-script dosyası hedef rom dosyanızın META-INF/com/google/android klasörünün içerisinde bulunur. Yukarıdaki işlemler sonucu TWRP'de portladığınız yazılımı yüklerken hata alıyor iseniz sorun iki kaynaktan olabilir.

-META INF içerisinde bulunan updater-script kodlarında cihaza özel yazılım yapacağı kodların bulunması (aşağıda çözümüne göz atacağız)
-Hedef romun özel imza taşıyor olması ( Zip imzasını kaldırmak için Google'da zip unsign tool xda yazarak çözümlere göz atabilirsiniz.)


Bazı updater-script kodlarında

getprop("ro.product.device") == "davinci" || abort("E3004: This package is for \"davinci\" devices; this is a \"" + getprop("ro.product.device") + "\"."); veya get device kodları bulunur. Cihazınızın kod adı bununla eşleşmiyor ise TWRP'de yükleme yapılmaz bu nedenle bu satırları updater-scriptten silelim.

Örneğin hedef rom dosyanızda belirttiğim gibi system.new.dat.br - transfer.list - patch.dat - üçlüsü bulunuyor. Sizin updater-script kodunuzda bu dosyaları yüklemesini TWRP'ye öğreten şu kodlar bulunur.

ui_print("Patching system image unconditionally...");
block_image_update("/dev/block/bootdevice/by-name/system", package_extract_file("system.transfer.list"), "system.new.dat.br", "system.patch.dat") ||
abort("E1001: Failed to update system image.");

Buradaki kodları inceleyelim. ui_print("xxxxxxx") komutu sadece yazı göstermeye, kullanıcıya şu an ne yapıldığını TWRP ekranında gösteren komuttur.
Hemen alt satırda ise block_image_update komutu ile imaj dosyasını kaynak ve hedef göstererek güncelleme işlemi gerçekleştirilir. Kodun devamından şunu anlıyoruz.
ZIP içerisinde bulunan system.transfer.list"), "system.new.dat.br", "system.patch.dat dosyalarını, cihazın içerisindeki /dev/block/bootdevice/by-name/system dizinine aktar.

Bir örneği de boot.img dosyası için bakalım.


package_extract_file("boot.img", "/dev/block/bootdevice/by-name/boot");

Bu şekilde sizde dosya yapılarını değiştirseniz bile yazacağınız script kodları ile zipi farklı şekilde flaşlamanın yollarını çözebilirsiniz.

8=) Hata Giderme

Yazılımı portladığınızda ve cihazınızda açıldığında birçok hata ile karşı karşıya kalacaksınız/kalabilirsiniz. Wi-Fi açılmama/kapanmama, RIL/IMEI sorunu, Mobil Veri Sorunu, Kamera Açılmama/ Video kaydetmeme gibi gibi gibi. Tonlarca hata sizi bekliyor ve bu çözümleri cihazınızın stock/custom romunda bulunan dosyalar ile çözümlemeye çalışacağız.

NOT: Söylemem gerekirki portlamanın en güzel kısmı burası iken en zorlu kısmı da burasıdır. Yapacağınız işlemlerde cihaz boot olmayabilir/yazılım çalışmayabilir açılış ekranı dönebilir. Bu yüzden işlemleri tek tek deneyin flaşlayın açılmazsa yaptığınız işlemi geri alın başka çözümler arayın. Böylelikle yazılımın neden boot olmadığını anlayabilirsiniz.

Hedef ve taban romunuzda system.new.dat.br üçlüsü var ve bunu unpack/açıp repack/kapatmak istiyorsanız google'a how to system.new.dat.br unpack/repack yazarak veya system.img imajı var how to unpack system.img xda yazarak belirtilen araçları/toolları kullanabilirsiniz.

Hedef klasörünün içerisinde bulunan system/bin klasöründe eksik bulunan dosyaları base/taban romunuzdan giderin.

Hata çözümleri :

Sensör :

boot.img içindeki aşağıdaki dosyaların eksik satırlarına göz atın.

uneventd.qcom.rc
uneventd.rc

Aşağıdaki dosyaları base/port ile değiştirin
system/lib/hw/sensors.msm****.so (veya sensors.lsm6db0.so)
system/lib64/hw/sensors.msm****.so (veya sensors.lsm6db0.so)
system/lib/libsensorservice.so
system/lib64/libsensorservice.so


Ses Sorunu
Aşağıdaki dosyaları/klasörleri base/taban romundan hedef port romu ile değiştirin.

system/lib/hw/
audio.primary.msm****.so
audio.primary.default.so
system/lib64/hw/
audio.primary.msm****.so
audio.primary.default.so

Kulaklık, ahize sorunu
Aşağıdaki dosyaları/klasörleri base/taban romundan hedef port romu ile değiştirin. Eksik dosyaları karşılaştırın.

system/etc/
mixer_paths.xml

Tuşların çalışmama sorunu
Aşağıdaki dosyaları/klasörleri base/taban romundan hedef port romu ile değiştirin. Eksik dosyaları karşılaştırın.
system/usr/keylayout/
goodix.kl
gpio-keys.kl
Generik.kl

Video sorunu
system/etc/firmware/
venus. ile başlayan tüm dosyaları değiştirin

Bildirim Ledi sorunu
Aşağıdaki dosyaları baseden porta aktarın

system/lib/hw/lights.msm***.so
system/lib64/hw/lights.msm***.so

Titreşim Sorunu
Aşağıdaki dosyaları baseden porta aktarın

system/lib/libhardware_legacy.so
system/lib64/libhardware_legacy.so

Radyo Sorunu
Aşağıdaki dosyaları baseden porta aktarın

system/lib/qcomfm_jni.so
system/lib64/qcomfm_jni.so

Wifi Sorunu
Aşağıdaki dosyaları baseden porta aktarın

system/lib/modules/wlan.ko
system/lib/libwcnss_qmi.so
system/lib64/libwcnss_qmi.so

NOT: Uygulamalarda çökme alıyorsanız bu biraz zor olacaktır. İlgili apk dosyaları system/app veya system/priv-app içeirsinden bulabilir apk dosyaları düzenleyip imzalayıp tekrar deneyebilirsiniz veya sorun çıkaran apkları system klasöründen silip alternatif uygulamları klasör içerisinde system/app klasörüne gönderebilirsiniz.


C-) Cihaz Bilgilerini girme

Bu işlemin son kısmı olarak düşünülebilir, artık herşey tamam; cihaz hakkında bulunan cihaz adını değiştirmek, bölge ve saat ayarlarının varsılayan değerlerini değiştirmek kalıyor. Bunun için system/build.prop dosyasını açıyoruz.

Cihaz modelinin yer aldığı kısımları / brand: model / kendi cihazımızın adı ile değiştiriyoruz. Örnek olarak

ro.product.brand=Google
ro.product.model=Nexus 7
Örneğin Nexus 7 Portladığımız cihazın adıydı bunu drason ile değiştirelim, böylece telefon hakkında kısmında cihaz adı omer drason olarak gözükecek.
ro.product.brand=omer
ro.product.model=drason

Dili değiştirmek istediğimizde ise

ro.product.locale.language=en
ro.product.locale.language=tr

olarak değiştirmemiz yeterli olacaktır. Aynı şekilde varsayılan zil sesi, bildirim sesi, saati varsıylan değerlerini ilgili satırladan bulup değiştirebilirsiniz.


Umarım geliştirici olmak isteyen arkadaşlara yardımcı olur. Basit bir anlatımla Snapdragon cihazlara nasıl rom portlanabileceğini göstermeye çalıştım. Yazımın miuiturkiye.net adresinden farklı alanlarda paylaşılmasının ahlaki açıdan uygun olmadığı düşüncesindeyim. Emeğin karşılığı olarak beğenirseniz sevinirim.

İyi forumlar
drasonli17
hocam elinize sağlık, konuya meraklı arkadaşların işine yarayaracak bir manuel olmuş. çalışmalarınızın devamını dilerim.
 

ROCKSTAR~

Yeni Üye
Yeni Üye
MIUI Sever
SMS Onaylı
Adım
Selim Atabay
Cihazım
Redmi S2
Konum
Yok
Katılım
18 Kasım 2019
Konular
3
Mesajlar
14
Tepkime puanı
0
Puanları
1
XDA'da onlarcxca 64 bit rom var kerrnelleri baz alarak port deneyebilirsin, kimovil üzerinden sdm625 cihazların listesine bakabilirsin.
Bknz;
Merhabalar siteye baktim ama gosterilen bazi cihazlar yanlış örnek olarak redmi note 5 koymuşlar .

XDA ya bakmaya gerek yok ben romlarimi indirdim redmi 6 pro dan redmi s2 ye portlayacagim .

Ama bunu nasil yapacagimi bilmiyiyorum

Kendi çapımda birşeyler yaptım ama cihaz hala 32bit. neler yaptığımıda yazayım ;

System lib64 klasorunu taşıdım
Vendor lib64 klasorunu taşıdım
System/buildprop dosyasinda lib64 ü tanıttım
Vendor/buildprop dosyasinda lib64 ü tanıttım

Yukarida belittigim gibi romu telefona kurdum ama hala 32bit. Nerde bir eksikligim var bilmiyorum. Yardiminiz icin simdiden teşekkurler...
 

Kaan_M

°¯\_(ツ)_/¯°
Usta Üye
MIUI Sever
SMS Onaylı
Adım
Kaan
Cihazım
Xiaomi Mi 5
Meslek
Öğrenci
Yaş
18
Konum
İstanbul
Katılım
20 Mayıs 2020
Konular
56
Mesajlar
1.377
Tepkime puanı
1.783
Puanları
138
Çok güzel bir konu. Bir gün deneyebilirim.
 

Kaan_M

°¯\_(ツ)_/¯°
Usta Üye
MIUI Sever
SMS Onaylı
Adım
Kaan
Cihazım
Xiaomi Mi 5
Meslek
Öğrenci
Yaş
18
Konum
İstanbul
Katılım
20 Mayıs 2020
Konular
56
Mesajlar
1.377
Tepkime puanı
1.783
Puanları
138
drasonli17 hocam sizce buradaki rom portlanabilir mi mi5 için? Bu s7 için s9+ dan portlanmış bir rom.
 
Üst Alt