Tiz özellikli cihazlarda ilk aşamanın montaj özelliğinin etkinleştirilmesi gerekir:
init
, Güvenlik açısından Geliştirilmiş Linux'u yükleyebilir
(SELinux) system
ve
vendor
bölüm. Bu erişim, çekirdeğin yüklenmesini de sağlar.
en kısa sürede güncellemeniz gerekir.
Erken ekleme işlemini gerçekleştirmek için Android'in
dahil edilir. Android 8.0 ve sonraki sürümler montajı destekler
/system
, /vendor
veya /odm
daha erken
init
'in ilk aşaması (SElinux başlatılmadan önce).
Fstab girişleri
Android 9 ve önceki sürümlerde cihazlar şunun için fstab
girişi belirtebilir:
erken eklenen bölümler cihaz ağacı
yer paylaşımları (DTO). Android 10 ve sonraki sürümlerde
cihazlar erken eklenen bölümler için fstab
giriş belirtmelidir
ilk aşamada bir fstab
dosyası kullanarak
ramdisk'tir. Android
10, aşağıdaki fs_mgr
flag'lerini sunar
fstab
dosyasında kullanılmak üzere:
first_stage_mount
, bir bölümün eklendiğini gösterir ilk aşamaya göre hazırlanır.logical
, bunun bir dinamik bölümlendirme.avb=vbmeta-partition-name
,vbmeta
bölüm. İlk aşama başlatma bu bölümü başlatır önce yuvarlak olması gerekir. Aşağıdaki durumlarda bu işaretin bağımsız değişkeni atlanabilir girişinvbmeta
bölümü önceden önceki satırda başka birfstab
girişi daha var.
Aşağıdaki örnektefstab
system
, vendor
ve product
bölümleri
mantıksal (dinamik) bölümler olarak gösterilir.
#<dev> <mnt_point> <type> <mnt_flags options> <fs_mgr_flags> system /system ext4 ro,barrier=1 wait,slotselect,avb=vbmeta_system,logical,first_stage_mount vendor /vendor ext4 ro,barrier=1 wait,slotselect,avb=vbmeta,logical,first_stage_mount product /product ext4 ro,barrier=1 wait,slotselect,avb,logical,first_stage_mount
Bu örnekte, tedarikçi firma şunu kullanarak vbmeta
bölümünü belirtir:
fs_mgr
işareti avb=vbmeta
, ancak product
Tedarikçi firma zaten eklendiğinden vbmeta
bağımsız değişkenini atlar
vbmeta
ekler.
Android 10 ve sonraki sürümleri çalıştıran cihazlar
Ramdisk ve vendor
içinde fstab
dosyası
bölüm.
Ramdisk
Ram diskteki fstab
dosyasının konumu, cihazın nasıl
ramdisk kullanır.
Önyükleme ram diskine sahip cihazlar fstab
öğesini yerleştirmelidir
dosyasını yüklemenizi öneririz. Cihazda hem bir önyükleme ram diski hem de bir
kurtarma belleğinde, kurtarma ram diskinde değişiklik yapılmasına gerek yoktur. Örnek:
PRODUCT_COPY_FILES += device/google/<product-name>/fstab.hardware:$(TARGET_COPY_OUT_RAMDISK)/fstab.$(PRODUCT_PLATFORM)
Kurtarma işlemini ramdisk olarak kullanan cihazların
androidboot.force_normal_boot=1
çekirdek komut satırı parametresinden
Android'de mi başlatacağınıza yoksa kurtarma işlemine mi devam edeceğinize karar verir. Cihazlar
Android 12 veya sonraki bir sürümün yüklü olduğu cihazlarda
5.10 veya sonraki çekirdek sürümleri,
androidboot.force_normal_boot=1
parametresinden yararlanın. İçinde
bu cihazlarda, başlangıçtaki ilk aşamanın sonunda bir kök değiştirme işlemi
Erken ekleme bölümlerini eklemeden önce /first_stage_ramdisk
Bu nedenle cihazlar, fstab
dosyasını
$(TARGET_COPY_OUT_RECOVERY)/root/first_stage_ramdisk
. Örnek:
PRODUCT_COPY_FILES += device/google/<product-name>/fstab.hardware:$(TARGET_COPY_OUT_RECOVERY)/root/first_stage_ramdisk/fstab.$(PRODUCT_PLATFORM)
Satıcı
Tüm cihazlar, fstab
dosyasının bir kopyasını şuraya yerleştirmelidir:
/vendor/etc
. Bunun nedeni, başlangıçtaki ilk aşamanın
bileşenlerinin erken takılmasını tamamladıktan sonra ramdisk
/system
konumundaki ekleme noktasını şuraya taşımak için kök işlemini değiştirin
/
. fstab
hizmetine erişmesi gereken sonraki tüm işlemler
dosyaları bu nedenle /vendor/etc
içindeki kopyayı kullanmalıdır. Örnek:
PRODUCT_COPY_FILES += device/google/<product-name>/fstab.hardware:$(TARGET_COPY_OUT_VENDOR)/etc/fstab.$(PRODUCT_PLATFORM)
Bölümlendirmeleri erken ekle, VBoot 1.0
VBoot 1.0 ile erken ekleme bölümleri için gereksinimler şunları içerir:
- Cihaz düğümü yolları,
by-name
sembolik bağlantılarını kullanmalıdırfstab
ve cihaz ağacı girişleri. Örneğin,/dev/block/mmcblk0pX
ile bölümlendirmek için, bölümlerin cihaz düğümüne de/dev/block/…./by-name/{system,vendor,odm}
. PRODUCT_{SYSTEM,VENDOR}_VERITY_PARTITION
ve için verilen yollar Şunun için cihaz yapılandırmasında:CUSTOM_IMAGE_VERITY_BLOCK_DEVICE
ürün (yanidevice/oem/project/device.mk
)by-name
içinde belirtilen ilgili blok cihaz düğümlerinifstab
/devicetree girişi. Örnek:PRODUCT_SYSTEM_VERITY_PARTITION := /dev/block/…./by-name/system PRODUCT_VENDOR_VERITY_PARTITION := /dev/block/…./by-name/vendor CUSTOM_IMAGE_VERITY_BLOCK_DEVICE := /dev/block/…./by-name/odm
.- Cihaz ağacı yer paylaşımları aracılığıyla yapılan girişler,
fstab
dosya parçası. Örneğin,/vendor
dosyasını cihaz ağacına,fstab
dosyası ekle o girişi tekrar etmemelidir. verifyatboot
gerektiren bölümlerde kaçınmamalısınız erken eklenebilir (bunu yapmak desteklenmez).- Doğrulanmış bölümlerin doğrulama modu/durumu
androidboot.veritymode
seçeneği kullanılarakkernel_cmdline
(mevcut şart).
Devicetree'yi erken ekle, VBoot 1.0
Android 8.x ve sonraki sürümlerde init
, devicetree'yi ayrıştırır ve
bölümü erkenden eklemek için fstab
giriş oluşturur
ilk aşama. fstab
girişi şu biçimdedir:
src mnt_point type mnt_flags fs_mgr_flags
Devicetree özellikleri şu biçimi taklit edecek şekilde tanımlanır:
fstab
giriş, şu değerin altında olmalıdır: cihaz ağacında/firmware/android/fstab
ve bir uyumlu dizeandroid,fstab
olarak ayarlandı./firmware/android/fstab
altındaki her düğüm tek erken bağlantıfstab
girişi. Bir düğümde aşağıdakiler bulunmalıdır özellikleri tanımlıyor:dev
, etiketi temsil eden cihaz düğümüne işaret etmelidir bölümby-name
type
,fstab
dosya)mnt_flags
, ekleme işaretlerinin virgülle ayrılmış listesi olmalıdır (fstab
dosyada olduğu gibi)fsmgr_flags
, Androidfs_mgr flags
listesi olmalıdır (fstab
dosyalarında olduğu gibi)
- A/B bölümlerinde
slotselect fs_mgr
seçeneği olmalıdır. - dm-verity'nin etkin olduğu bölümlerde
verify fs_mgr
olmalıdır. seçeneğini belirleyin.
Örnek: N6P'de /system ve /vendor
Aşağıdaki örnekte system
için cihaz ağacını erkenden ekleme gösterilmektedir
ve Nexus 6P'de vendor
bölüm:
/ { firmware { android { compatible = "android,firmware"; fstab { compatible = "android,fstab"; system { compatible = "android,system"; dev = "/dev/block/platform/soc.0/f9824900.sdhci/by-name/system"; type = "ext4"; mnt_flags = "ro,barrier=1,inode_readahead_blks=8"; fsmgr_flags = "wait,verify"; }; vendor { compatible = "android,vendor"; dev = "/dev/block/platform/soc.0/f9824900.sdhci/by-name/vendor"; type = "ext4"; mnt_flags = "ro,barrier=1,inode_readahead_blks=8"; fsmgr_flags = "wait"; }; }; }; }; };
Örnek: Pixel'de /vendor
Aşağıdaki örnekte /vendor
için cihaz ağacını erkenden ekleme gösterilmektedir
(şuna tabi bölümler için slotselect
eklemeyi unutmayın:
A/B):
/ { firmware { android { compatible = "android,firmware"; fstab { compatible = "android,fstab"; vendor { compatible = "android,vendor"; dev = "/dev/block/platform/soc/624000.ufshc/by-name/vendor"; type = "ext4"; mnt_flags = "ro,barrier=1,discard"; fsmgr_flags = "wait,slotselect,verify"; }; }; }; }; };
Bölümleri erkenden ekleme, VBoot 2.0
VBoot 2.0, Android Doğrulanmış Başlatma'dır (AVB). Erkenden proje başlatma belgesine VBoot 2.0 ile ekleme bölümleri şunlardır:
- Cihaz düğümü yolları,
by-name
sembolik bağlantılarını kullanmalıdırfstab
ve cihaz ağacı girişleri. Örneğin,/dev/block/mmcblk0pX
kullanarak bölümlere ayırarak, bölümlerin cihaz düğümünün adı ve cihaz düğümünün/dev/block/…./by-name/{system,vendor,odm}
. - Sistem değişkenleri (ör.
PRODUCT_{SYSTEM,VENDOR}_VERITY_PARTITION
veCUSTOM_IMAGE_VERITY_BLOCK_DEVICE
) DEĞİLDİR VBoot 2.0 için gereklidir. Bunun yerine, VBoot 2.0'da kullanıma sunulan derleme değişkenleri (BOARD_AVB_ENABLE := true
dahil) tanımlanmalıdır; - tam yapılandırma, AVB için sistem entegrasyonu oluşturun. - Cihaz ağacı yer paylaşımları aracılığıyla yapılan girişler,
fstab
dosya parçası. Örneğin,/vendor
dosyasını cihaz ağacına,fstab
dosyası ekle o girişi tekrar etmemelidir. - VBoot 2.0, erken ekleme durumunda
verifyatboot
desteklemez etkinleştirilip etkinleştirilmediğini kontrol edin. - Doğrulanmış bölümlerin doğrulama modu/durumu
androidboot.veritymode
kullanarakkernel_cmdline
seçeneğinin yanındaki kutuyu işaretleyin (mevcut gereklilik). Aşağıdaki düzeltme eklerini eklemeyi unutmayın: Ortalama görüntüleme süresi:
Devicetree'yi erken ekle, VBoot 2.0
VBoot 2.0 için devicetree'deki yapılandırma VBoot 1.0, şu istisnalar vardır:
fsmgr_flag
,verify
yerineavb
.- AVB meta verisi içeren tüm bölümler
Cihaz ağacı, bölüm erken eklenmese bile (örneğin,
/boot
) bilgileri gösterilir.
Örnek: N5X'te /system ve /vendor
Aşağıdaki örnekte,
Nexus 5X'te system
ve vendor
bölümleri. Not:
/system
, AVB ile eklendi ve/vendor
: olmadan eklenir.- Nexus 5X'te
/vbmeta
bölümü olmadığından üst düzey vbmeta,/boot
bölümünün sonunda bulunur (ayrıntılar için AOSP değişiklik listesine bakın)./ { firmware { android { compatible = "android,firmware"; vbmeta { compatible = "android,vbmeta"; parts = "boot,system,vendor"; }; fstab { compatible = "android,fstab"; system { compatible = "android,system"; dev = "/dev/block/platform/soc.0/f9824900.sdhci/by-name/system"; type = "ext4"; mnt_flags = "ro,barrier=1,inode_readahead_blks=8"; fsmgr_flags = "wait,avb"; }; vendor { compatible = "android,vendor"; dev = "/dev/block/platform/soc.0/f9824900.sdhci/by-name/vendor"; type = "ext4"; mnt_flags = "ro,barrier=1,inode_readahead_blks=8"; fsmgr_flags = "wait"; }; }; }; }; };
Örnek: Pixel'de /vendor
Aşağıdaki örnekte Pixel'e erkenden /vendor
kurulumu gösterilmektedir.
Not:
- vbmeta girişte daha fazla bölümlendirme belirtilir çünkü bu bölümler şunlardır: AVB tarafından korunur.
- Yalnızca
/vendor
olsa bile tüm AVB bölümleri dahil edilmelidir. başlar. - A/B'ye tabi bölümler için
slotselect
eklemeyi unutmayın./ { vbmeta { compatible = "android,vbmeta"; parts = "vbmeta,boot,system,vendor,dtbo"; }; firmware { android { compatible = "android,firmware"; fstab { compatible = "android,fstab"; vendor { compatible = "android,vendor"; dev = "/dev/block/platform/soc/624000.ufshc/by-name/vendor"; type = "ext4"; mnt_flags = "ro,barrier=1,discard"; fsmgr_flags = "wait,slotselect,avb"; }; }; }; }; };