Geliştirici eng.stk ile Röportaj Bölüm 1: Kökenler ve Çekirdek Geliştirme

Yakın zamanda blu_spark çekirdeğinin geliştiricisi eng.stk ile röportaj yaptık. Bu bölümde kendisine kökenlerini ve gelişim çalışmalarını soruyoruz.

Yakın zamanda XDA Kıdemli Üyesiyle röportaj yapma şansım oldu ingilizce stkblu_spark çekirdeğinin geliştiricisi. Nexus 5, OnePlus 3/T ve OnePlus 5T dahil olmak üzere forumlarımızdaki birçok cihazda mevcuttur. Bu bölümde eng.stk'ye geliştirmedeki kökenlerini ve blu_spark çekirdeğini nasıl geliştirdiğini soruyoruz.


Öncelikle kendinizi ve çekirdeğinizi tanıtın. Çekirdeğiniz kendisini rakiplerinden nasıl farklılaştırıyor? Çekirdek değişiklikleri için tasarım felsefeniz nedir ve bunları nasıl gerçekleştiriyorsunuz?

Ben eng.stk'yim ve 2010'dan beri XDA'dayım. Çoğunuz beni code_blue ve blu_spark projelerimden tanıyorsunuz :)

XDA'ya bazı komut dosyaları, çeşitli araçlar ve çerçeve hack'leri yazarak başladım. Ayrıca bir sürü tema yaptım... Burada bulunduğum süre boyunca Purity ROM, Universal Kernel Manager, Kernel Adiutor ve son zamanlarda Magisk ve Tel Koruma
Sadece birkaç isim. Son zamanlarda bazı TWRP çalışmaları da yapıyorum (özellikle OnePlus cihazlarında), Magisk modülleri ve diğer araçlar/hack'ler [bunlar] çekirdek projelerimin yaşam döngüsü boyunca faydalıdır (yanlış hatırlamıyorsam XDA Portalında bazı şeyler vardı) doğru şekilde). blu_spark çekirdeği yalnızca bir çekirdek değil aynı zamanda çekirdek, araç zincirleri, kurtarma, tema, araçlar, komut dosyaları vb. arasında çok yönlü bir deneyim haline gelmeye başladı. Ancak çekirdek çalışması en çok keyif aldığım ve beni harekete geçiren şey.

Fırsat bulduğumda etrafta dolaşmaktan ve bazı kodlar/komut dosyaları oluşturmaktan her zaman keyif aldım (elektronik oyuncakları parçalarına ayırmak ve kuzenimin Commodore 64'ünde temel kodlama yapmak eğlenceliydi). Benim için kodlama bir amaca ulaşmak için bir araç değil, yalnızca diğerleri gibi belirli bir amaca ulaşmak için kullanılan bir araçtır. Daha ciddi işlerimin çoğu ve çalışmalarımın temelleri ergenlik dönemimde/yirmili yaşlarımın başında Linux'u keşfettiğimde atıldı. Daha sonra, üniversite zamanlarında bir yerlerde, Android benim için mantıklı bir sonraki adımdı: Donanım veya yazılımın birçok şeyle oynanabildiği, gerçekten tamircilerin hayali.

Blu_spark'ı tanımlayacak en iyi kelimeler optimizasyon ve kararlılıktır. Bunu kullanan insanlar ona güvenebileceklerini biliyorlar. Çekirdek yapılarım bir bakıma 'dolu', bu yüzden kutudan çıkan bazı şeyleri çıkarmama eğilimindeyim ve insanların seçebilmesi için her şeyi isteğe bağlı tutuyorum. Çok fazla şey eklemekten hoşlanmıyorum, sadece her alan için en iyi olduğunu düşündüğüm şeyi değiştiriyorum veya ekliyorum. CPU frekans sürücüsü, IO zamanlayıcı, ağ protokolleri, dosya sistemleri vb. veya belirli parametreler için bazı ayarlanabilir ayarlarda değişiklik yapın veya mümkün olan en iyi sonucu elde etmek için bazı sürücüleri yukarı akış yönünde değiştirin. Ayrıca mimariden en iyi sonucu elde etmek için özel yapım alet zincirleri de yapıyorum (Linaro'dan, GCC'ye harika bir yaklaşım).

Sonuç olarak çoğu kişi, çekirdeği cihaza yükledikleri andan itibaren blu_spark'ta olduklarını biliyor. Daima yeni şeyler ve mümkün olan en iyi kullanıcı deneyimini sunmanın yollarını arıyorum. Güvenli bir şekilde.

Bize blu_active valinizden bahsedin! Nedir, ne işe yarar ve neden özeldir?

İnsanların bazen blu_active ile blu_spark'ı karıştırdığını biliyorum. blu_active, yaptığım işin geri kalanıyla karşılaştırıldığında sadece küçük bir kısım.

CPU yöneticisi temel olarak sistemin ihtiyaçlarına göre CPU frekanslarının yukarı veya aşağı gitmesine karar verir. Vali, başlangıcından bu yana birçok değişiklik ve mutasyon geçirdi. Yaptığım her şey gibi, ihtiyaçlarımı karşılayan bir şeye ihtiyacım vardı. En sevdiğim vali olan interaktif valiye dayanıyor. Başlangıçta üzerine sadece bazı yukarı yönlü şeyler koydum, ancak daha sonra CAF güncellemeleri veya diğer valilerde gördüğüm ve faydalı bulduğum mantık gibi başka şeyler eklemeye başladım. Ayrıca HMP uyumluluğu ve başka özellikler de ekledim.

En son sürüm Google'ın Linux 4.4 Android şubesini temel alıyor ve bazı yukarı akış ve CAF düzeltmeleri de içeriyor ancak eskisinden çok daha yalın. Sahip olduklarınızı sonuna kadar kullanın, sahip olmadıklarınızı kaldırın. Bir yandan iyileştirmeye çalışırken, bir yandan da stok ayarlarından daha iyi pil elde etmeye çalışıyorum, tüketimi azaltıyorum performans (gerçek hayattaki performans, sentetik malzemelerle değil, gözleriniz ve parmaklarınızla hissettiğiniz performans) aletler).

Zamanın bir noktasında, insanların performansla basit bir şekilde oynayabilmesi için basit bir ayarlanabilirlik istedim. Fastlane böyle doğdu :). Mantık, Honda VTEC'in çalışma şekline biraz benziyor: belirli bir eşikten itibaren zamanlamalarla oynamak. Böylece, basit bir anahtar ve değişken bir eşik değeri ile insanlar daha doğrudan ve agresif bir işlemci frekansı ölçeklendirmesine sahip olabilir. Hedef yükleri atlayarak sistem yüküne göre er ya da geç girmesini sağlamak. HMP ile tamamen uyumludur ve üzerinde çalıştığı her cihaz için ince ayarlar yapılarak insanların ihtiyaçlarına göre küme başına ince ayarlar yapılabilir.

OEM'lerin sağladığı hangi yerleşik mekanizmaları veya ince ayarları beğeniyorsunuz/beğenmiyorsunuz? yani Qualcomm'un giriş desteği.

HAL'lerde (Donanım Soyutlama Katmanları), sabit kodlanmış çerçeve öğelerinde vb. ayarlanan bazı kullanıcı alanı güçlendirmeleri ve diğer ayarlamalar bazen can sıkıcı olabilir. Tabii ki, çekirdek geliştiricilerinin Nexus 5'te bunlardan bazılarını çözdüğü biliniyor, örneğin çoğumuz mpdecision'dan kurtulduk ve özel bir hotplug aldık - o zamanlar blu_plug'umuz vardı. Diğer bazı cihazlarda kötü termal yönetim ve sıcaklık seviyeleri, azaltma frekansı vb. için sysfs ile özel bir termal kontrol vardı. Daha yeni bazı cihazlarda pil, çekirdeklerin çıkarılması ve "düşük seviyelerde" olan diğer şeyler hakkında, cihaz kullanımında gerçek bir kazanç sağlamayan bazı katı politikalar vardır. Hatta bazen kullanıcı deneyimini bile mahvediyordu, bu yüzden CTL ve BCL teknolojilerini ehlileştirmek gerekiyordu.

Ayrıca, bu bir şey olduğunda cihazlardaki şifrelemeyi kaldırdığımı da hatırlıyorum, SELinux yinelemelerindeki tüm değişiklikler, önceki hack'lerin farklı bir şekilde çalışmasını sağlayan değişiklikler getirdi... Son zamanlardaki bazı Android güvenlik değişiklikleri sürekli karşılaşılan bir zorluktur. Bunlar arasında AVB (bazı parçalar çoğunlukla dm-verity olarak bilinir) bulunur. Diğer bazı değişiklikler, daha önce sahip olduğumuz yerlere erişimimiz olmadığı için taşınması gereken ayarlanabilir ve sysfs yerlerine yönelik kısıtlamalar getirmiştir. Bu kısıtlamaların çoğu, stok ROM'lar için daha uygundur (işimin çoğunu burada yapıyorum), normalde yolu açar ve özel ROM'lar söz konusu olduğunda (kısıtlamaların daha düşük olduğu yerlerde) işi kolaylaştırır.

Qualcomm Snapdragon 820 ve 835 gibi son SoC'lerde, bazı OEM'ler kullanıcı alanından memnuniyetle karşılanan ve sistemdeki kör noktalarla mücadele eden bazı güçlendirmeler eklediler; tüm OEM ürünleri kötü değildir. Çekirdek kaynağına gelince, kaynak ne kadar temiz ve belgelenmişse o kadar iyidir.

Başka hangi özellikleri eklemek istersiniz? Gelişmiş renk kontrolü vb. gibi.

Normalde kişisel olarak kullanmadığım veya yararlı bulmadığım şeyleri eklemiyorum. Blu_active'in yanı sıra yapmaktan hoşlandığım şeyler arasında mimari optimizasyonlar ve düzeltmeler, kripto güncellemeleri, IO planlaması ve diğerleri yer alıyor depolama/dosya sistemi özellikleri, KCAL, USB hızlı şarj, titreşim gücü, pil/bildirim LED kontrolü, Wakelock engelleyiciler, WireGuard, vesaire. Daha önce de söylediğim gibi her zaman özel yapım araç zinciriyle yapıyorum.

Çekirdeğiniz için hangi test yöntemini kullanıyorsunuz? Kullanıcı raporlarını, kıyaslamaları veya başka herhangi bir özel rutini kullanıyor musunuz?

Geliştirdiğim her telefon bana aittir, dolayısıyla herhangi bir değişiklik her zaman benim tarafımdan test edilir. Uzun süre boyunca her cihazı günlük olarak kullandığım için, bana uygun olmayan hiçbir şeyin başkasına da uygun olmaması gerekir. Bir yapıyı herkese açık olarak yayınladığımda, benden ve yararlı geri bildirim sağlayacağına güvendiğim diğer bazı kişilerden zaten çok sayıda test alınmıştır. Bazen bazı kullanıcıların her şeyin sürekli olması gerektiği gibi çalışmasından sıkıldığını biliyorum, ancak her şeyden önce istikrara değer veriyorum: Her zaman kendimi ilk etapta bir kullanıcının yerine koyarım.

İşleri sentetik testlere değil, gerçek hayattaki kullanım durumuna göre yürütüyorum. Bu tür yazılımlar arka ofisteki makineler için değil, insanlar için yapılmıştır. Başlangıç ​​noktası, tüm cephelerde her zaman hisse senedi deneyiminden daha iyidir, ancak Antutu'nun en son yüksek puanına gerçekten o kadar değer vermiyorum. Çekirdeklerim bu tür bir kıyaslamaya göre ayarlanabilir, ancak bu benim nihai hedefim değil. Örneğin, IO depolama testi gibi daha doğrudan bazı kıyaslamalara değer veriyorum. Örneğin yakın zamanda yapılan bazı değişiklikleri öne sürmenin hızlı bir yolunu sağlayabilirler.

Testlerimi stok ROM'larla yapıyorum, böylece işler için istikrarlı bir temele sahip olabilirim. Özel ROM'lar için özel derlemeler yapıyorum, ancak özel ROM'ların ek ekstralar, gecelikler ve hatta değişken doğası nedeniyle bazı özelliklerde uygulama farkı var, hepsini kapsamak ve herkese uygun desteği vermek imkansız, Ne yazık ki.

Ayrıca bazen belirli bir şeyi test etmek için veya yapıları Beta ROM'lara veya geliştirici önizlemelerine başlattığımda beta yapılar da oluşturuyorum. Bunu Nexus ve OnePlus cihazlarında yaptım, insanlar bazen bazı şeyleri test etmeyi severler :)


Bölüm 2'ye göz atın: F2FS, EAS ve Gelecek vaat eden Çekirdek Geliştiricileri için İpuçları