Android 12'de bootconfig özelliği,
Android 11 ile kullanılan androidboot.*
çekirdek cmdline seçenekleri
ve daha düşük. Bootconfig özelliği, bir yapılandırmanın iletilmesi için
hakkında daha fazla bilgi edinin.
Bu özellik, Android için yapılandırma parametrelerini ayırmak üzere bir yol sağlar
için de aynı değeri sunar. Uzun androidboot.*
çekirdeği taşınıyor
parametrelerini eklemeniz, çekirdek cmdline üzerinde alan oluşturur ve
daha sonra genişlemek için
kullanabileceğiniz bir üründür.
Hem çekirdek hem de Android kullanıcı alanı, bootconfig
öğesini desteklemelidir.
- Bu desteğe sahip ilk sürüm: Android 12
- Şu desteğe sahip ilk çekirdek sürümü: 12-5.4.xx çekirdek
12-5.10.xx ile başlatılan yeni cihazlar için bootconfig özelliğini uygulayın çekirdek sürümü. Cihazları yeni sürüme geçiriyorsanız bu API'yi uygulamanız gerekmez.
Örnekler ve kaynak
Bu bölümdeki örnekleri ve kaynak kodunu görüntülerken biçimin
bootconfig
kodunun biçiminden yalnızca biraz farklı
kernel cmdline komutu
Ancak kullanımınız açısından aşağıdaki fark önemlidir:
- Parametreler ile değil, yeni satır çıkış sırası
\n
ile ayrılmalıdır alanlar'a dokunun.
Bootloader örneği
Bootloader örneği için Cuttlefish U önyükleme referansı bootloader'ına bakın hakkında bilgi edindiniz. Referanstaki iki kaydetme aşağıda listelenmiştir. İlk artışlar başlatma üstbilgisi sürümü desteğini en son sürüme güncelleyin. Bu örnekte ilk olarak sürüm desteğini bir sonraki sürüm 4'e kaydeder (veya günceller). İkinci iki şey yapar: bootconfig işlemeyi ekler ve parametrelerin çalışma zamanında:
- Başlatma başlığı sürümü desteğini en son v4'e yükseltin sürümü) tıklayın.
- Bootconfig'i ekle hakkında daha fazla bilgi edinin.
Derleme örneği
Oluşturmak için yapılan mkbootimg
değişiklikleri gösteren bir derleme örneği için
Tedarikçi firma başlatma başlığı v4 ile vendor_boot.img
, bkz. mkbootimg changes for
bootconfig
.
Aşağıdakileri yapmak için Mürekkep balığı değişikliklerini görün:
- Tedarikçi firma başlatma üst bilgisi sürümünü kullanma (veya bu sürüme yükseltme) sürüm 4'teki sürümlerdir.
- Çekirdek cmdline'ına bootconfig ekleyin ve seçilen parametreleri bootconfig'e gidin.
Uygulama
İş ortakları, bootloader'larına destek eklemeli ve derleme sürelerini taşımalıdır
Çekirdek cmdline'ından bootconfig'e androidboot.*
parametreleri
dosyası olarak kaydedebilirsiniz. Bu değişikliği uygulamanın en iyi yolu aşamalı olarak yapmaktır. bkz.
Artımlı uygulama ve doğrulama bölümü
inceleyebilirsiniz.
/proc/cmdline dosyasında androidboot.*
için arama yapan değişiklikleriniz varsa
bu parametreleri /proc/bootconfig
dosyasına yönlendirin. ro.boot.*
özellikleri yeni bootconfig
değerleriyle ayarlandığı için
bu özellikleri kullanan kod için bazı değişiklikler yapıyoruz.
Derleme değişiklikleri
İlk olarak, başlatma başlığı sürümünüzü sürüm 4'e yükseltin:
- BOARD_BOOT_HEADER_VERSION := 3
+ BOARD_BOOT_HEADER_VERSION := 4
bootconfig
çekirdeği cmdline parametresini ekleyin. Bu işlem, çekirdekte
bootconfig bölümüne gidin:
BOARD_KERNEL_CMDLINE += bootconfig
Bootconfig parametreleri,
BOARD_BOOTCONFIG
değişkeni; çekirdek cmdline'ının
BOARD\_KERNEL\_CMDLINE
.
androidboot.*
parametreleri, aşağıdakine benzer şekilde olduğu gibi taşınabilir:
- BOARD_KERNEL_CMDLINE += androidboot..selinux=enforcing
+ BOARD_BOOTCONFIG += androidboot..selinux=enforcing
Bootloader değişiklikleri
Bootloader, çekirdeğe atlamadan önce initramfs
öğesini ayarlar. Çekirdek
başlatma yapılandırması
bootconfig bölümünü arar ve bunun en sonunda
Beklenen fragmanla initramfs,
.
Bootloader, vendor_boot.img
düzen bilgilerini tedarikçi firmadan alır
başlığı ekleyin.
Şekil 1. Android 12 bootconfig bellek ayırma
Bootloader, bellekte bootconfig bölümünü oluşturur. Bootconfig bölümü şunları içerir:
- Parametreler
- 4 B boyutu
parameters size
- 4 B boyutu
parameters checksum
- 12 B bootconfig sihirli dizesi (
#BOOTCONFIG\n
)
Parametreler iki kaynaktan gelir: Derleme sırasında bilinen parametreler ve bilinmeyen parametreler olabilir. Bilinmeyen parametreler eklenmelidir.
Derleme zamanında bilinen parametreler, vendor_boot
öğesinin sonuna paketlenir
görüntüsüne bakalım. Bölümün boyutu depolanır (bayt olarak)
vendor_bootconfig_size
tedarikçi firma başlatma başlığı alanına girin.
Derleme sırasında bilinmeyen parametreler yalnızca bootloader'ı tıklayın. Bunlar, bootconfig parametreleri bölümünün sonuna eklenmelidir. başlamadan önce izlemelisiniz.
bootconfig fragmanı uygulandıktan sonra herhangi bir parametre eklemeniz gerekirse fragmanın üzerine yazıp tekrar uygulayabilirsiniz.
Artımlı uygulama ve doğrulama
Bootconfig özelliğini adım adım uygulamak için aşağıdaki adımları izleyin: bu bölümde bulabilirsiniz. bootconfig parametreleri eklendi.
Aşağıda, doğrulamalı artımlı uygulama için adımlar verilmiştir:
- Bootloader'ı ve derleme ayarlarını yapın, ardından aşağıdakileri yapın:
- Yeni bir bootconfig eklemek için
BOARD_BOOTCONFIG
değişkenini kullanın parametresinden sonra bir değer girin. - Cihazın, çekirdek cmdline parametrelerini olduğu şekilde tutun. düzgün şekilde başlatılabilir. Bu, hata ayıklama ve doğrulama sürecini kolaylaştırmaktadır.
- Yeni bir bootconfig eklemek için
/proc/bootconfig
içeriğini kontrol ederek çalışmanızı doğrulayın. Doğrula gösterildikten sonra yeni eklenen parametreyi görürsünüz.-
androidboot.*
parametrelerini çekirdek cmdline'ındanBOARD_BOOTCONFIG
değişkenini ve bootloader'ı kullanarak bootconfig'i açın. - Her bir parametrenin
/proc/bootconfig
içinde bulunduğunu VE/proc/cmdline
bölgesinde değiller. Bunu doğrulayabilirseniz uygulamanız, başarılı oldu.
OTA'yı yeni sürüme ve eski sürüme geçirmeyle ilgili dikkat edilmesi gereken noktalar
ya da farklı çekirdek sürümlerini kullanıyorsanız özel bir dikkat gösterilmelidir.
Android 12, bootconfig'e sahip ilk sürümdür destek. Bundan önceki herhangi bir sürüme geçiyorsanız çekirdek cmdline parametreleri bootconfig yerine kullanılmalıdır.
12-5.4 ve sonraki çekirdek sürümleri bootconfig'i destekler. Eski sürüme geçiyorsanız 11-5.4 dahil olmak üzere, çekirdek cmdline parametreleri kullanılır.
Android 11 ve önceki sürümlerden Android 12 ve sonraki sürümlere yükseltmeler çekirdek cmdline parametreleridir. Aynı durum çekirdek sürümlerini yükseltme için de geçerlidir.
Sorun giderme
Beklenen parametreleri görmüyorsanız doğrulama adımını gerçekleştirirken
/proc/bootconfig
kullanıyorsanız logcat
dosyasındaki çekirdek günlüklerini kontrol edin. Her zaman bir günlük vardır
Çekirdek destekliyorsa bootconfig için giriş var.
Örnek günlük çıkışı
$ adb logcat | grep bootconfig
02-24 17:00:07.610 0 0 I Load bootconfig: 128 bytes 9 nodes
Bir hata günlüğü döndürülmesi, dosyanın yüklenmesinde bir sorun olduğu anlamına gelir. bootconfig'e gidin. Farklı hata türlerini görmek için init/main.c olarak ayarlayın.