Windows 10'da Android Çekirdeği Nasıl Oluşturulur

Appual'ın, Android Açık Kaynak Projesi'nden Özel Bir ROM Nasıl Oluşturulur gibi Android geliştirme konusunda birkaç harika rehberi var - ancak bu rehberler genellikle saf bir Linux oluşturma ortamına yöneliktir.

Bu kılavuzda, Windows 10'da nasıl bir Android çekirdeği oluşturulacağını göstereceğiz - evet, hala bir Linux oluşturma ortamı kullanıyor olacağız, ancak Windows 10'da bir Linux alt sistemi olacak. Android için geliştirmek isteyen kullanıcı, rehberimizi dikkatlice takip edin.

Bu kılavuzda, özellikle ARM ve MediaTek cihazları için bir çekirdeğin nasıl oluşturulacağını, özelliklerin eklenmesi ve Git kullanımına ilişkin temel bir genel bakış öğreneceğiz.

Gereksinimler

  • Windows 10 x64 (Fall Creator'ın güncellemesi ile)

Linux Ortamını Ayarlama

  1. Windows 10'da, Ayarlar> Güncelleme ve Güvenlik> Geliştiriciler İçin> Geliştiriciler Modu'nu etkinleştir seçeneğine gidin.
  2. Şimdi Denetim Masası> Programlar> Windows Özelliklerini Aç veya Kapat> Linux için Windows Alt Sistemini etkinleştir seçeneğine gidin.
  3. PC'nizi yeniden başlatın.
  4. Linux alt sistemini başlatın ve indirme işleminden geçmesine izin verin. Bir şifre belirleyin ve kaybetmeyin.
  5. Şimdi Windows uygulama mağazasına gidin ve Ubuntu'yu indirin.
  6. Windows 10 masaüstünde Ubuntu'yu başlatın; kullanıcı adı ve şifre isteyecektir.
  7. Ubuntu'da yerel terminali başlatın ve aşağıdaki komutu yazın: apt-get update
  8. Bu, uygulamalar ve bağımlılıklar için tüm depoları güncellemeye devam edecektir.
  9. Terminal tipinde bir sonraki: sudo apt-get install -y build-essential çekirdek paketi libncurses5-dev bzip2
  10. Tüm bağımlılıkların doğru kurulup kurulmadığını kontrol etmek için, terminale 'gcc' yazın (tırnak işaretleri olmadan).
  11. “Gcc” zaten kuruluysa, “gcc: ölümcül hata: giriş dosyası yok” görmelisiniz.
  12. Şimdi terminalde 'make' yazabilirsiniz. Eğer “make” zaten kurulu ise, “make: *** 'yi belirtilmiş bir hedef yok ve makefile bulunamadı. durdurmak."
  13. Daha sonra 'git' yazın ve iff “git” zaten kurulu ise, bir sürü temel git komutunu görmelisiniz.
  14. Şimdi bazı araç zincirlerine ihtiyacımız var (GCC, Linaro ve bir avuç özel takım da dahil olmak üzere çeşitli türler var). Bazı cihazlar farklı takım zincirleri gerektirebilir, örneğin, tüm cihaz çekirdekleri GCC ile önyüklenebilir veya derlenmez.

ARM Cihazları İçin

Bunun için GCC 4.7'yi kullanacağız.

  1. Linux terminalini açın ve şunu yazın: mkdir kernel
  2. Şimdi yazın: cd çekirdeği
  3. ('çekirdek' olmak zorunda değildir, bu sadelik uğruna, ne istersen onu adlandırabilirsin.)
  4. Şimdi yazın: git clone //android.googlesource.com/platform/prebuilts/gcc/linux-x86/arm/arm-eabi-4.7

ARM 64 Cihazları İçin

ARM 64 cihazları için 64 bit bir çekirdek derleyicisine ihtiyacınız var, örneğin aarch64.

Cihazınız için Kaynak Dosyaları Alma

Çekirdek kaynağınızı barındıran bir GitHub deposu bulmanız gerektiğinden bu çok zor bir bölüm. Elbette araştırmanız gerekecektir, büyük olasılıkla XDA forumlarında bulunabilir.

İşte bir örnek çekirdek kaynağı Git.

Sol üst tarafta, “Şube: Tamamlandı xxxx” ifadesini görmelisiniz.

Genellikle “Test”, “Beta”, “Son Sürüm” vb. İle ayrılan bir çekirdek / projenin farklı sürümleri vardır.

Çekirdek klasörleri tipik olarak aşağıdaki gibidir:

  • / arch / arm / configs : Bu, aygıt için valiler vb. gibi çeşitli yapılandırma dosyaları içerir.
  • / output / arch / arm / boot / : Bu, zimage'in depolanacağı yerdir.
  • build.sh : Oluşturma işlemini kolaylaştıracak bir komut dosyası.
  • /arm-cortex-linux-gnueabi-linaro_5.2-2015.11-2 : Bu genellikle çekirdek kaynağına yerleştirilmiş bir alet zinciridir, bu yüzden bulmayı kolaylaştırır.

Çekirdek kaynağınızı indirmeniz gerekecek.

Linux terminalini açın ve daha önce oluşturduğunuz çekirdek klasörde olduğunuzdan emin olun (cd çekirdek).

Ardından terminal yazınız: “git klonu“ github çekirdeğinin URL'si ”-b“ dalın adı ”

Örneğin: “git clone //github.com/atxoxx/android_ke…amsung_msm8974 -b xenomTW”

Çekirdeği İnşa Etmek

Kolaylaştırmak için, dosya gezgini içindeki konuma gidebilirsiniz. / Home / user ID / kernel (veya çekirdek klasörünü ne adlandırdıysanız) olmalıdır.

Alet zinciri ve çekirdek kaynağı için içeride iki klasör görmelisiniz. Çekirdek kaynak klasörünün içine gidin.

ARM Cihazları İçin

Bir terminalde aşağıdaki komutları yazın:

 #! / bin / bash dışa aktarma ARCH = kol dışa aktarma CROSS_COMPILE = mkdir çıktı make -C $ (pwd) O = çıktı "defconfig adı ve gerekirse değişken" make -j4 -C $ (pwd) O = çıktı 

Gelecekte daha kolay hale getirmek için bu komutların neler yaptıklarına bir genel bakış.

  • #! / bin / bash: Komut dosyasına kabuk komutunda çalışmasını söyler
  • export ARCH = arm: Hangi çekirdek mimarisinin tür olduğunu tanımlama (Örneğin arm64 vb.)
  • export CROSS_COMPILE = : Alet zincirinin yerini bulun. Tam yolla eşleşmelidir ve sondaki çizgi gerçekten zorunludur.
  • mkdir output: Bu, derlenmiş zimage'in kaydedilmesi için bir dizin oluşturur.
  • make -C $ (pwd) O = output : Çekirdek derlemesini yönlendirmek için defconfig öğesinin tanımlanması.
  • make -j4 -C $ (pwd) O = çıktı : Oluşturma işlemi başladığında, -j # denemek ve derlemek için ne kadar hızlı olduğunu söyler. Genelde, bu numarayı CPU'nuza göre belirlersiniz. Örneğin, -j32'ye bütçe CPU'sunda ayarlamak muhtemelen büyük dengesizliklere neden olacaktır.
  • cp çıkışı / arch / arm / boot / Image $ (pwd) / arch / arm / boot / zImage : Bu, görüntüyü ikinci bir yola taşımak içindir.

Başka bir örnek:

 #! / bin / bash ihracatı ARCH = kol ihracatı CROSS_COMPILE = $ (pwd) /arm-cortex-linux-gnueabi-linaro_5.2-2015.11-2/bin/arm-cortex-linux-gnueabi- mkdir çıkışı make -C $ (pwd) O = çıkış msm8974_sec_defconfig VARIANT_DEFCONFIG = msm8974_sec_ks01_skt_defconfig SELINUX_DEFCONFIG = selinux_defconfig yapmak /j / kol / önyükleme / arş / kol / önyük 

ARM 64 Cihazları İçin

 #! / bin / bash export ARCH = arm64 export CROSS_COMPILE = "takım zincirinize giden yol" ("nameofarch-something-" gibi bir şey ile bitmek zorundadır) mkdir output make -C $ (pwd) O = output "defconfig ismi ve gerekirse değişken "make -j4 -C $ (pwd) O = çıktı 

Mediatek (MTK) Cihazları İçin

 #! / bin / bash export CROSS_COMPILE = "alet zincirinize giden yol" ("nameofarch-bir şey-" gibi bir şeyle bitmek zorundadır) - ARCH = arm ARCH_MTK_PLATFORM = make "defconfig ismini veriniz ve gerekirse" make -j4 ismini veriniz 

Çekirdek mimariniz için gerekli adımları tamamladığınızda, terminali yazabilirsiniz: sudo bash build.sh

Daha sonra kullanıcı şifrenizi gireceksiniz ve derleme işlemi başlayacaktır.

Bir süre alabilir ancak genellikle çok uzun sürmez, bir çekirdeği derlemek Android ROM'un tamamını derlemeye benzemez. Bu gerçekten CPU'ya bağlıdır - örneğin, 8GB RAM'e sahip bir AMD Phenom X4 3.4GHz'in baştan sona derlenmesi yaklaşık 10 dakika sürmelidir.

Tamamlandığında, “zimage hazır” gibi bir mesajla sizi bilgilendirmelidir.

ARM ve ARM64 Cihazları

Zimage'inizi bulmak için “/ Output / arch / arm / boot /” kısmına gidin.

Mediatek Cihazları

Zimage'inizi bulmak için “/ arch / arm / boot /” ya gidin.

Çekirdek yapılarının tümü bir Zimage dosyasına neden olmaz, bazen başka resim formatları olarak oluşturulabilir.

Önemli: Tekrar derleyecekseniz, derleme işlemine tekrar başlamadan önce komutları temizlemeniz ve mrproper yapmanız önerilir.

Çekirdek Önyükleme Yapma

Seçmeniz için iki seçenek var.

Anykernel yöntemini kullanabilirsiniz (bu XDA iş parçacığında XDA user @ osm0sis tarafından tanımlandığı gibi). Öğreticinin tamamını okumalısınız, ancak adımların bir özeti aşağıdaki gibidir:

  1. Köşe zImage yerleştirin (dtb ve / veya dtbo, özel cihazlar gerektiren cihazlar için de buraya gelmelidir, her biri orijinal değilse geri dönecektir)
  2. Gerekli tüm ramdisk dosyalarını / ramdisk içine ve modülleri / modülleri içine yerleştirin (tam yol / / modül / sistem / lib / modüller gibi)
  3. Gerekli tüm yama dosyalarını (genellikle komutlarla gelen kısmi dosyalar) / patch içine yerleştirin
  4. Çekirdeğinizin adını, önyükleme bölümünün konumunu, içerilen ramdisk dosyalarının izinlerini eklemek için anykernel.sh dosyasını değiştirin ve gerekli ramdisk değişikliklerinde kullanılan yöntemleri kullanın (isteğe bağlı olarak, banner ve / veya sürüm dosyalarını, bunların flash sırasında gösterilmesi için köke yerleştirin)
  5. `zip -r9 UPDATE-AnyKernel2.zip * -x .git README.md * yer tutucu`

Kullanabileceğiniz diğer yöntem, boot.img dosyasını aynı ROM'dan (CM, TouchWiz, EMUI vb. Gibi) ve aynı Android sürümünden açmaktır. Daha sonra Zimage'i değiştirirsiniz. Yine, bu gerçekten karmaşık bir süreç ve tam öğreticiyi okumalısınız, ancak adımların bir özeti:

  1. Sıkıştırılmış.
  2. “Unpackimg” komut satırını kullanın veya görüntüyü sürükleyip bırakın. Bu, görüntüyü böler ve ramdisk'i bir alt dizine açar.
  3. Ramisk'i istediğiniz gibi değiştirin.
  4. Repackimg toplu betiği giriş gerektirmez ve basitçe tüm orijinal görüntü bilgisini kullanarak (ayrıca bölünmüş ve kaydedilmiş) tüm yeni resim değiştirilmiş ramdisk ile önceden ayrılan zImage'ı yeniden birleştirir.
  5. Temizleme toplu iş komut dosyası, klasörü split_img + ramdisk dizinlerini ve paketlenmiş yeni ramdisk veya görüntü dosyalarını kaldırarak ilk durumuna sıfırlar.

Çekirdeğinizi yanıp sönmeden önce, stok boot.img'inizin bir yedeğini oluşturmalı ve ardından Android sisteminizin önyüklenmesini sağlayıp sağlamadığını görmek için çekirdeğinizi flaş etmelisiniz.

Çekirdeğinize Özellikler Ekleme

Çekirdeğinize özellikler eklemek onu renklendirmenin harika bir yoludur. CPU yöneticileri, IO zamanlayıcıları, GPU'yu overclock etme, ses geliştirmeleri vb. Gibi ince ayar yapabileceğiniz birçok şey var.

Bir vali eklemek için bir örnek burada (bu vali kod adı Intellimm).

İlk 2 metin kutusunda “arch / arm / configs /” “msm8974_sec_defconfig” ve “cm_msm8974_sec_defconfig” öğelerinin değiştirildiğini görebiliriz.

Bu dosyaların 140 ve 141. satırları arasında bu metin eklendi: “CONFIG_CPU_FREQ_GOV_INTELLIMM = y”

(Bu satır, çekirdeğinizi derlerken Intellimm'i etkinleştirmek içindir.)

Aynı teknik diğer metin kutuları için de geçerlidir (eklenmiş ve silinmiş olanlar ve konumu)

Eklediğiniz özelliklere bağlı olarak, daha fazla veya daha az dosya değiştirilebilir, eklenebilir veya silinebilir.

Özetlemek gerekirse, bir Taahhüt, yapılan tüm değişiklikleri ve diğer her şeyi görmenizi sağlar!

Genel İpuçları ve Püf Noktaları

Çekirdek adı ve sürümü nasıl değiştirilir:

Basit bir yöntem:

Defconfig dosyanızdaki bu satırı düzenleyin:

 "CONFIG_LOCALVERSION =" - "sonra - defconfig dosyasında 

Örnek: CONFIG_LOCALVERSION = ”- XenomTW-3.2.6 ″

Gelişmiş yöntemler:

Çekirdek kaynağınızın kök klasöründeki Makefile dosyasına gidin.

Bu satırları ekle:

 CONFIG_LOCALVERSION = "sizin adınıza çekirdek" LOCALVERSION = "sürümünüzün adı" 

Sürüm, PatchLevel, Sublevel veya Extraversion satırlarını değiştirmeyin.

Alternatif yöntem:

Scripts / mkcompile_h dosyasına gidin ve şu satırları ekleyin:

 LINUX_COMPILE_BY = "Sizin adınıza" "LINUX_COMPILE_HOST =" Sizin adınıza / adınıza " 

PATH sorunlarını çözme:

“Yolunuz doğru mu?” Hatasıyla karşılaşırsanız, bunu Linux terminalinde deneyin:

 "export PATH =" pathtotoolchainlocation "/ bin: $ PATH" 

Ubuntu klasörlerinize Windows 10'dan erişme

Ubuntu’ya giden yolunuz tipik olarak:

C: \ Kullanıcılar ”NAME” \ AppData \ Local \ Packages \ CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc \ LocalState \ rootfs \ home

Ancak, dosyaları doğrudan Windows'dan düzenlememelisiniz, çünkü bunlar normalde izinleri kırarlar - izinleri Linux terminalinden sıfırlamanız gerekir.

Ilginç Haberler