Android 10'da kök dosya sistemi artık kullanılamayacak
ramdisk.img
alanına dahil edilir ve bunun yerine
system.img
(yani system.img
her zaman
(BOARD_BUILD_SYSTEM_ROOT_IMAGE
ayarlanmışsa). Cihazlar
Android 10 ile kullanıma sunuluyor:
- Kök olarak sistem bölüm düzeni kullan ( hiçbir seçenek olmadan derleme) sağlar.
- dm-Doğrusal için gerekli olan bir ramdisk kullanılmalıdır.
BOARD_BUILD_SYSTEM_ROOT_IMAGE
değerifalse
olarak ayarlanmalıdır. Bu ayar yalnızca RAM disk kullanan cihazları birbirinden ayırt etmek için kullanılır disket kullanılmayan (ve sabit disk yerinesystem.img
doğrudan ekleyebilirsiniz).
Kök olarak sistem yapılandırmasının anlamı Android 9 ile Android 9 arasında farklılık gösterir
Android 10. Android 9 kök olarak sistemde
yapılandırma, BOARD_BUILD_SYSTEM_ROOT_IMAGE
şuna ayarlandı:
true
; bu, derlemeyi kök dosya sistemini
system.img
'yi, ardından system.img
adlı dosyayı kök dosya olarak ekleyin.
sistemidir (rootfs). Cihazlar için bu yapılandırma zorunludur
Bu özellik, Android 9 ile kullanıma sunulacak ancak
Android 9 ve Android'in daha düşük sürümlerini çalıştıran cihazlar için. Android'de
10 kök olarak sistem yapılandırmasıyla, derleme her zaman
$TARGET_SYSTEM_OUT
ve $TARGET_ROOT_OUT
birleşir
system.img
; bu yapılandırma, tüm cihazlar için varsayılan davranıştır
Android 10 yüklü halde.
Android 10, destekle ilgili başka değişiklikler yapıyor dinamik bölümleri olarak ayarlayın. kablosuz olarak (OTA) güncelleme yapılmasını sağlayan bir kullanıcı alanı bölümlendirme bölümler oluşturabilir, yeniden boyutlandırabilir veya kaldırabilirsiniz. Bu değişiklik kapsamında, artık çalıştırılan cihazlara mantıksal sistem bölümünü ekleyemeyecek. Android 10'da yüklü olduğu için bu işlem, sahne başlangıcı.
Aşağıdaki bölümlerde, başarılı bir web sitesi için kök olarak sistem gereksinimleri yalnızca sisteme yönelik OTA'lar, cihazların kök olarak sistem kullanılacak şekilde güncellenmesi için rehberlik sağlar. (bölüm düzeni değişiklikleri ve dm-verity çekirdek gereksinimleri dahil). Örneğin, RAM'deki değişikliklerle ilgili ayrıntılar, bkz. Ramdisk Bölümler.
Yalnızca sisteme yönelik OTA'lar hakkında
Android sürümlerinin güncellenmesini sağlayan yalnızca sistem OTA'ları
Diğer değişiklikleri değiştirmeden system.img
ve product.img
kök olarak sistem bölüm düzeni gerektirir. Android çalıştıran tüm cihazlar
10. kök olarak sistem bölümü düzeni
yalnızca sisteme özgü OTA'ları etkinleştirin.
system
bölümünü rootfs olarak ekleyen A/B cihazları, zaten kök olarak sistem kullanıyor ve sistem OTA'larını desteklemek için değişiklik gerektirmiyor.system
bölümünü şuraya ekleyen A/B olmayan cihazlar:/system
, kullanmak için güncellenmelidir bir kök olarak sistem bölümü düzeni oluşturun.
A/B ve A/B olmayan cihazlarla ilgili ayrıntılar için şuraya bakın: A/B (Sorunsuz) Sistem Güncellemeleri.
Tedarikçi firma yer paylaşımını kullanma (<=AOSP 14)
Tedarikçi firma yer paylaşımı, değişiklikleri vendor
üzerinde yer paylaşımlı olarak ayarlamanıza olanak tanır.
bölümü gösterilir. Tedarikçi firma yerleşimi, tedarikçi firma modüllerinden oluşan
vendor
üzerine yerleştirilen product
bölümü
mevcut modüllerin değiştirilmesi ve eklenmesi gerekir.
Cihaz başlatıldığında init
işlemi ilki tamamlar
sahne ekleme ve varsayılan özellikleri okur. Sonra arama yapar
/product/vendor_overlay/<target_vendor_version>
ve bağlantı noktaları
karşılık gelen vendor
bölüm dizinindeki her bir alt dizin
aşağıdaki koşullar karşılanırsa:
/vendor/<overlay_dir>
mevcut./product/vendor_overlay/<target_vendor_version>/<overlay_dir>
./vendor/<overlay_dir>
ile aynı dosya bağlamına sahip.init
öğesinin şu dosya bağlamına eklenmesine izin veriliyor:/vendor/<overlay_dir>
.
Tedarikçi firma yer paylaşımını uygulama
Tedarikçi firma yer paylaşımı dosyalarını
/product/vendor_overlay/<target_vendor_version>
Bu dosyalar
Cihaz başlatıldığında vendor
bölümünü yer paylaşımlı olarak değiştirir ve dosyaları değiştirir
aynı ada sahip olmalı ve tüm yeni dosyaları eklemelisiniz. Tedarikçi firma yer paylaşımı dosyaları kaldıramaz
"vendor
" bölümünden görebilirsiniz.
Tedarikçi firma yer paylaşımı dosyaları, hedef dosyalarla aynı dosya bağlamına sahip olmalıdır
vendor
bölümünde yer alırlar. Varsayılan olarak,
/product/vendor_overlay/<target_vendor_version>
dizini
vendor_file
bağlama sahip. Dosya içeriği uyuşmazlıkları varsa
arasında, tedarikçi firma bindirme dosyaları ile değiştirdikleri dosyalar arasında seçim yapmak için,
Cihaza özgü gizlilik politikası. Dosya bağlamı, dizin düzeyinde ayarlanır. Öğe
bir tedarikçi firma yer paylaşımı dizininin dosya bağlamı, hedef dizinle eşleşmiyorsa
ve cihaza özel ayarda doğru dosya bağlamı belirtilmemişse
tedarikçi firma yer paylaşımı dizininin hedef dizine yerleştirilmediğini gösterir.
Tedarikçi firma yer paylaşımını kullanmak için çekirdek,
CONFIG_OVERLAY_FS=y
Ayrıca, çekirdek
4.4 veya sonraki bir sürümü ya da "overlayfs:
override_creds=off option bypass creator_cred"
ile yama uygulanmış bir sürüm.
Tedarikçi firma yer paylaşımı uygulama örneği
Bu prosedür, üst kısımda bulunan tedarikçi firma katmanının
dizinler: /vendor/lib/*
, /vendor/etc/*
ve
/vendor/app/*
.
-
Önceden oluşturulmuş tedarikçi firma dosyalarını
device/<vendor>/<target>/vendor_overlay/<target_vendor_version>/
:device/google/device/vendor_overlay/28/lib/libfoo.so device/google/device/vendor_overlay/28/lib/libbar.so device/google/device/vendor_overlay/28/etc/baz.xml device/google/device/vendor_overlay/28/app/qux.apk
-
Önceden oluşturulmuş tedarikçi firma dosyalarını
product/vendor_overlay
inçdevice/google/device/device.mk
:PRODUCT_COPY_FILES += \ $(call find-copy-subdir-files,*,device/google/device/vendor_overlay,$(TARGET_COPY_OUT_PRODUCT)/vendor_overlay)
-
Hedef
vendor
bölümü dosyaları ise dosya bağlamlarını tanımlayınvendor_file
dışında bağlamlara sahip. Çünkü/vendor/lib/*
,vendor_file
bağlamını kullanıyor. Bu, örneği bu dizini içermez.Şunları ekleyin:
device/google/device-sepolicy/private/file_contexts
:/(product|system/product)/vendor_overlay/[0-9]+/etc(/.*)? u:object_r:vendor_configs_file:s0 /(product|system/product)/vendor_overlay/[0-9]+/app(/.*)? u:object_r:vendor_app_file:s0
-
init
işleminin, tedarikçi firma yer paylaşımını dosyaya eklemesine izin vervendor_file
dışındaki bağlamlar. Çünküinit
işleminin zatenvendor_file
bağlamına ekleme izni var. bu örnek,vendor_file
politikasını tanımlamamaktadır.Şunları ekleyin:
device/google/device-sepolicy/public/init.te
:allow init vendor_configs_file:dir mounton; allow init vendor_app_file:dir mounton;
Tedarikçi firma yer paylaşımını doğrulama
Tedarikçi firma yer paylaşımı yapılandırmasını doğrulamak için dosyaları
/product/vendor_overlay/<target_vendor_version>/<overlay_dir>
.
ve dosyaların Google Drive'daki dosyaların üzerine yerleştirilip yerleştirilmediğini
/vendor/<overlay_dir>
.
userdebug
derlemelerinde Atest için bir test modülü vardır:
$ atest -v fs_mgr_vendor_overlay_test
Kök olarak sisteme güncelleme
A/B olmayan cihazları kök olarak sistemi kullanacak şekilde güncellemek için
boot.img
ve system.img
için bölümlendirme şeması, ayarlandı
dm-verity'yi yükseltin ve cihaza özgü kök dizindeki başlatma bağımlılıklarını kaldırın.
klasörlerini tıklayın.
Bölümleri güncelleme
/boot
, A/B cihazlarından farklı olarak
recovery bölümü,
A/B olmayan cihazlar /recovery
bölümünü korumalıdır
Bunlar, yedek alan bölümüne sahip olmadıklarından ayrıdır. (örneğin,
boot_a
ile boot_b
) arasında). /recovery
ise
A/B olmayan cihazdan kaldırıldı ve A/B şemasına benzer hale getirildi, kurtarma modu
/boot
bölümünde yapılan başarısız bir güncelleme sırasında bozulabilir. Örneğin,
bu nedenle, /recovery
bölüm
ayrı bir bölümlendirme (ör. A/B olmayan cihazlar için /boot
) ile
kurtarma görüntüsünün ertelenen bir şekilde güncellenmeye devam etmesinin
Android 8.1.0 veya önceki sürümleri çalıştıran cihazlardakilerle aynıdır).
Aşağıdaki tabloda A/B olmayan cihazlar için görüntü bölümü farklılıkları listelenmektedir Android 9 öncesi ve sonrası.
Resim | Ramdisk (9'dan önce) | Kök olarak sistem (9'dan sonra) |
---|---|---|
boot.img |
Bir çekirdek ve ramdisk.img içerir:
ramdisk.img -/ - init.rc - init - etc -> /system/etc - system/ (mount point) - vendor/ (mount point) - odm/ (mount point) ... |
Yalnızca normal başlatma çekirdeği içerir. |
recovery.img |
Kurtarma çekirdeği ve kurtarma içerir
ramdisk.img |
|
system.img |
Şunları içerir:
system.img -/ - bin/ - etc - vendor -> /vendor - .... |
Birleştirilmiş orijinal system.img ve
ramdisk.img :
system.img -/ - init.rc - init - etc -> /system/etc - system/ - bin/ - etc/ - vendor -> /vendor - ... - vendor/ (mount point) - odm/ (mount point) ... |
Bölümlerin kendisi değişmez; hem ramdisk hem de kök olarak sistem kullanımı şu bölüm şemasını eklemeniz gerekir:
/boot
/system
/system
/recovery
/vendor
vb.
Dm-verity'yi ayarlama
Kök olarak sistemde çekirdek, system.img
komutunun altına eklemelidir
/
(ekleme noktası)
dm-verity yoluyla iletişim kurun. AOSP, aşağıdaki dm-verity'yi destekler
system.img
uygulamaları.
vboot 1.0
vboot 1.0 için çekirdek,
Android'e özel
meta veri,
/system
, ardından şuna dönüştür:
dm-verity'yi ayarlamak için dm-verity parametrelerini
bu çekirdek yamalarını inceleyin.
Aşağıdaki örnekte,
çekirdek komut satırı:
ro root=/dev/dm-0 rootwait skip_initramfs init=/init dm="system none ro,0 1 android-verity /dev/sda34" veritykeyid=id:7e4333f9bba00adfe0ede979e28ed1920492b40f
vboot 2.0
vboot 2.0 için
(AVB), bootloader'ın
external/avb/libavb; daha sonra
/system
için hashtree açıklayıcısı, dönüşüm gerçekleştirir
şuraya
dm-verity parametrelerini özelleştirir ve son olarak parametreleri
çekirdek komut satırından değiştirebilirsiniz. (/system
öğesinin hashtag tanımlayıcıları
/vbmeta
veya /system
üzerinde olabilir.)
vboot 2.0, aşağıdaki çekirdek yamalarını gerektirir:
- https://android-review.googlesource.com/#/c/kernel/common/+/158491/
- kernel 4.4 yamalarını kullanın. çekirdek 4.9 yamaları vb.
Aşağıdaki örnekte, çekirdek komut satırı:
ro root=/dev/dm-0 rootwait skip_initramfs init=/init dm="1 vroot none ro 1,0 5159992 verity 1 PARTUUID=00000016-0000-0000-0000-000000000000 PARTUUID=00000016-0000-0000-0000-000000000000 4096 4096 644999 644999 sha1 d80b4a8be3b58a8ab86fad1b498640892d4843a2 8d08feed2f55c418fb63447fec0d32b1b107e42c 10 restart_on_corruption ignore_zero_blocks use_fec_from_device PARTUUID=00000016-0000-0000-0000-000000000000 fec_roots 2 fec_blocks 650080 fec_start 650080"
Cihaza özel kök klasörleri kullan
Kök olarak sistem ile, genel sistem imajından
(GSI) cihazda yanıp söner (ve çalıştırılmadan önce)
Tedarikçi Firma Test Paketi testleri), herhangi bir
cihaza özel kök klasörler BOARD_ROOT_EXTRA_FOLDERS
ile eklendi
kök dizin içeriğinin tamamı
GSI olarak kullandığınızdan emin olun. Bu klasörlerin kaldırılması cihazın
Cihaza özel kök klasörlere bir bağımlılık varsa önyüklenemez hale gelir
(örneğin, ekleme noktaları olarak kullanılırlar).
Bu sorunu önlemek için BOARD_ROOT_EXTRA_FOLDERS
parametresini kullanarak şu işlemleri yapmayın:
cihaza özel kök klasörler ekleyin. Cihaza özel montaj düzeneği belirtmeniz gerekiyorsa
puan, /mnt/vendor/<mount point>
kullanın (
değişiklik listeleri) inceleyin. Tedarikçiye özgü bu ekleme noktaları,
hem fstab
cihaz ağacında doğrudan belirtilir (ilk aşama için
mount) ve /vendor/etc/fstab.{ro.hardware}
dosyasını
(fs_mgr
tarafından oluşturulduğu için)
/mnt/vendor/*
) otomatik olarak eklenir.