Android 10 ve sonraki sürümler, şu değere göre yeniden boyutlandırılabilir bölümleri destekler: fastboot uygulamasını bootloader'dan kullanıcı alanına taşıyın. Bu yer değiştirme, yanıp sönen kodun bakımı yapılabilir ve test edilebilir bir tek bir hızlı başlatmanın uyguladığı tedarikçiye özel kısımları olan ortak bir konum donanım soyutlama katmanı (HAL) Ayrıca Android 12, ve daha yüksek sürümler, ek bir fastboot komutuyla yanıp sönen RAM'leri destekler.
Fastboot ve kurtarma özelliklerini birleştirin
Kullanıcı alanı hızlı başlatma ve kurtarma benzer olduğundan bunları tek bir alanda birleştirebilirsiniz bölüm veya ikili programdır. Bu, daha az alan kullanmak, daha az depolama alanı daha az bölümü vardır ve fastboot ve kurtarma özellikleri, çekirdeği ve kitaplıklar hakkında bilgi edindiniz.
fastbootd
desteği için bootloader'ın yeni bir başlatma kontrol bloğu uygulaması gerekir
(BCB) komutu için boot-fastboot
yazın. fastbootd
moduna girmek için bootloader
BCB mesajının komut alanına boot-fastboot
yazar ve
BCB'nin recovery
alanında değişiklik yapıldı (kesilen herhangi bir kurtarma işleminin yeniden başlatılmasını sağlamak için)
görevler) seçebilirsiniz. status
, stage
ve reserved
alanları da değişmez.
Bootloader yüklenir ve şunu gördükten sonra kurtarma görüntüsünde başlatılır:
boot-fastboot
değerini girin. Kurtarma işlemi daha sonra BCB mesajını ayrıştırır
ve fastbootd
moduna geçer.
ADB komutları
Bu bölümde, fastbootd
entegrasyonu için adb
komutu açıklanmaktadır. İlgili içeriği oluşturmak için kullanılan
komutu tarafından yürütülmesine bağlı olarak farklı sonuçlar verir.
geri kazanılabilir.
Komut | Açıklama |
---|---|
reboot fastboot |
|
Fastboot komutları
Bu bölümde fastbootd
, entegrasyon için fastboot komutları açıklanmaktadır,
mantıksal bölümlerin yanıp sönmesine ve yönetilmesine ilişkin yeni komutlar dahil. Biraz
komutların farklı web süreçleri tarafından yürütülüp yürütülmediğine bağlı olarak
bootloader'ı veya fastbootd
tarafından değiştirildi.
Komut | Açıklama |
---|---|
reboot recovery |
|
reboot fastboot |
fastbootd modunda yeniden başlatılır. |
getvar is-userspace |
|
getvar is-logical:<partition> |
Belirtilen bölüm mantıksal bir bölümlendirme ise yes değerini döndürür
Aksi takdirde no .
Mantıksal bölümler aşağıda listelenen tüm komutları destekler. |
getvar super-partition-name |
Süper bölümün adını döndürür. Ad, mevcut zaman aralığını içeriyor son ek, süper bölüm bir A/B bölümüyse sonektir (genellikle değildir). |
create-logical-partition <partition> <size> |
Belirtilen ad ve boyutla mantıksal bir bölüm oluşturur. Ad mantıksal bölüm olarak zaten mevcuttur. |
delete-logical-partition <partition> |
Verilen mantıksal bölümü siler (bölümü etkili bir şekilde siler). |
resize-logical-partition <partition> <size> |
Mantıksal bölümü, içeriğini değiştirmeden yeni boyuta yeniden boyutlandırır. Yeniden boyutlandırma işlemini gerçekleştirmek için yeterli alan yoksa başarısız olur. |
update-super <partition> |
Süper bölüm meta verilerinde yapılan değişiklikleri birleştirir. Birleştirme yapılamıyorsa
(örneğin, cihazdaki biçim desteklenmeyen bir sürümse) bu
komutu başarısız olur. İsteğe bağlı bir wipe parametresi, cihazın
meta verileri kullanır. |
flash <partition> [ <filename> ] |
Bir dosyayı Flash bölümüne yazar. Cihaz kilitli durumda olmalıdır. |
erase <partition> |
Bir bölümü siler (güvenli silme için gerekli değildir). Cihaz şurada olmalıdır: kilitli değil durumunda. |
getvar <variable> | all |
Bootloader değişkenini veya tüm değişkenleri görüntüler. Değişkenin varsa bir hata döndürür. |
set_active <slot> |
Belirtilen A/B başlatma yuvasını A/B desteği için yuvalar, başlatılabilen yinelenen bölüm gruplarıdır
olabilir. Alanlar |
reboot |
Cihazı normal bir şekilde yeniden başlatır. |
reboot-bootloader (veya reboot bootloader ) |
Cihazı bootloader'da yeniden başlatır. |
fastboot fetch vendor_boot <out.img> |
Android 12 ve sonraki sürümlerde şu işlemleri yapmak için kullanabilirsiniz: yeni çıkan satıcı ramdisklerini destekleme
Tüm bölüm boyutunu ve parça boyutunu alır. Her yığın için verileri alır,
daha sonra verileri
Ayrıntılar için |
fastboot flash vendor_boot:default <vendor-ramdisk.img> |
Yanıp sönen satıcı RAM'lerini desteklemek için Android 12 ve sonraki sürümlerde kullanın. Bu, flash komutunun özel bir varyantıdır.
Ayrıntılar için bkz.
|
fastboot flash vendor_boot:<foo> <vendor-ramdisk.img> |
Android 12 ve sonraki sürümlerde kullanarak
yanıp sönen satıcı RAM'lerini desteklemelidir.
Ayrıntılar için bkz.
|
Fastboot ve bootloader
Bootloader bootloader
, radio
ve boot/recovery
uygulamalarını yükler
bunun ardından cihaz hızlı başlatma (kullanıcı alanı) olarak başlatılır ve yanıp söner
devre dışı bırakabilirsiniz. Bootloader aşağıdaki komutları desteklemelidir.
Komut | Açıklama |
---|---|
download |
Resmi yüklemek üzere indirir. |
flash recovery <image>/ flash boot <image>/ flash
bootloader <image>/ |
recovery/boot bölümünü ve bootloader'ı yanıp söner. |
reboot |
Cihazı yeniden başlatır. |
reboot fastboot |
Fastboot moduna geçmek için yeniden başlatılır. |
reboot recovery |
Kurtarma işlemi için yeniden başlatılır. |
getvar |
Kurtarma/başlatma işleminin yanıp sönmesi için gerekli bir bootloader değişkenini alır
bir resim (örneğin, current-slot ve
max-download-size ) tıklayın. |
oem <command> |
Komut, OEM tarafından tanımlanır. |
Dinamik bölümler
Bootloader, dinamik bölümlerin yanıp sönmesine veya silinmesine izin vermemelidir.
ve bu işlemler denenirse hata döndürmesi gerekir. Güçlendirme için
dinamik bölüm cihazları, fastboot aracı (ve bootloader) cihazın
veya bootloader modunda dinamik bölümü doğrudan yüklemek için. Örneğin,
Örneğin, system
, geriye dönük yapılmış cihazda dinamik bir bölümse
fastboot --force flash system
komutunun kullanılması, bootloader'ı etkinleştirir
(fastbootd
yerine) yükleyebilirsiniz.
Çevrimdışı modda şarj
Bir cihaz kapalı modda şarjı destekliyorsa veya başka bir şekilde özel bir
modunda olduğunda,
fastboot oem off-mode-charge 0
komutu
bu özel modları atlar ve böylece cihaz, kullanıcı basmış
güç düğmesine basın.
Fastboot OEM HAL'si
Bootloader'ı tamamen değiştirmek için fastboot'un mevcut tüm öğeleri işlemesi gerekir hızlı başlatma komutları. Bu komutların çoğu OEM'ler tarafından sağlanır ve belgelenmiş olsa da özel uygulama gerektirir. OEM'ye özgü birçok komut kullanılamaz belgelendirir. Fastboot HAL, bu tür komutları işlemek için gereken OEM komutları: OEM'ler kendi komutlarını da uygulayabilir.
Fastboot HAL'nin tanımı aşağıdaki gibidir:
import IFastbootLogger;
/**
* IFastboot interface implements vendor specific fastboot commands.
*/
interface IFastboot {
/**
* Returns a bool indicating whether the bootloader is enforcing verified
* boot.
*
* @return verifiedBootState True if the bootloader is enforcing verified
* boot and False otherwise.
*/
isVerifiedBootEnabled() generates (bool verifiedBootState);
/**
* Returns a bool indicating the off-mode-charge setting. If off-mode
* charging is enabled, the device autoboots into a special mode when
* power is applied.
*
* @return offModeChargeState True if the setting is enabled and False if
* not.
*/
isOffModeChargeEnabled() generates (bool offModeChargeState);
/**
* Returns the minimum battery voltage required for flashing in mV.
*
* @return batteryVoltage Minimum battery voltage (in mV) required for
* flashing to be successful.
*/
getBatteryVoltageFlashingThreshold() generates (int32_t batteryVoltage);
/**
* Returns the file system type of the partition. This is only required for
* physical partitions that need to be wiped and reformatted.
*
* @return type Can be ext4, f2fs or raw.
* @return result SUCCESS if the operation is successful,
* FAILURE_UNKNOWN if the partition is invalid or does not require
* reformatting.
*/
getPartitionType(string partitionName) generates (FileSystemType type, Result result);
/**
* Executes a fastboot OEM command.
*
* @param oemCmd The oem command that is passed to the fastboot HAL.
* @response result Returns the status SUCCESS if the operation is
* successful,
* INVALID_ARGUMENT for bad arguments,
* FAILURE_UNKNOWN for an invalid/unsupported command.
*/
doOemCommand(string oemCmd) generates (Result result);
};
Fastbootd'u etkinleştir
Bir cihazda fastbootd
iznini etkinleştirmek için:
device.mk
bölgesindePRODUCT_PACKAGES
grubunafastbootd
ekleyin:PRODUCT_PACKAGES += fastbootd
.Fastboot HAL'si, başlatma kontrolü HAL'si ve durum HAL'sinin paketlendiğinden emin olun kurtarma görüntüsünün bir parçası olarak.
fastbootd
tarafından gereken cihaza özel SEPolicy izinlerini ekleyin. Örneğin, Örneğin,fastbootd
, aşağıdakileri yapmak için cihaza özel bir bölümlendirmeye yazma erişimi gerektirir: bu bölümü yanıp söndür. Ek olarak, fastboot HAL uygulaması da cihaza özel izinler gerektirir.
Kullanıcı alanı hızlı önyüklemesini doğrulamak için Tedarikçi Firma Test Paketi'ni çalıştırın (VTS) için kullanılabilir.
Flash satıcı diskleri
Android 12 ve sonraki sürümler
Bir cihazdan vendor_boot
resim. Komut, ana makine taraflı fastboot komutunu ister
aracını kullanın.
Tam vendor_boot
görüntüsünü almak için fetch:vendor_boot
komutu eklendi
hızlı başlatma protokolüne ve protokolün fastbootd uygulamasına
kullanıma sunduk. Fastboot özelliğinin yaptığını
ancak bootloader'ın kendisi uygulamayabilir. OEM'ler
bootloader uygulamasına fetch:vendor_boot
komutunu
protokolü. Ancak, komut bootloader modunda tanınmazsa
Bootloader modunda bağımsız satıcı RAM'lerinin yanıp sönmesi, satıcı tarafından desteklenen bir uygulama değildir.
seçeneğini belirleyin.
Bootloader değişiklikleri
getvar:max-fetch-size
ve fetch:name
komutları şurada uygulanır:
fastbootd
. Bootloader'da yanıp sönen satıcı RAM'lerini desteklemek için
bu iki komutu uygulayın.
Fastbootd değişiklikleri
getvar:max-fetch-size
, max-download-size
ile benzer. Bu
cihazın tek bir DATA yanıtında gönderebileceği maksimum boyut. Sürücü,
bu değerden büyük bir boyut getir.
fetch:name[:offset[:size]]
, cihazda bir dizi kontrol gerçekleştirir. Tümü
fetch:name[:offset[:size]]
komutu verileri döndürür:
- Cihaz, hata ayıklaması yapılabilir bir derleme çalıştırıyor.
- Cihazın kilidi açık (önyükleme durumu turuncu).
- Getirilen bölüm adı:
vendor_boot
. size
değeri 0 <size
<=max-fetch-size
.
Bunlar doğrulandığında fetch:name[:offset[:size]]
, bölüm boyutunu döndürür.
ve ofset.
Aşağıdakileri göz önünde bulundurun:
fetch:name
,fetch:name:0
eşdeğerdir ve eşdeğerdirfetch:name:0:partition_size
.fetch:name:offset
eşdeğerdirfetch:name:offset:(partition_size - offset)
Dolayısıyla fetch:name[:offset[:size]]
=
fetch:name:offset:(partition_size - offset)
.
offset
veya partition_size
(ya da her ikisi) belirtilmediyse
varsayılan değerler kullanılır (offset
için 0, size
için ise
hesaplanan partition_size - offset
değeri.
- Zaman farkı belirtildi, boyut belirtilmemiş:
size = partition_size - offset
- İkisi de belirtilmedi: Her ikisi için de varsayılan değerler kullanıldı,
size = partition_size
- 0.
Örneğin, fetch:foo
, ofset 0 olduğunda foo
bölümünün tamamını getirir.
Sürücü değişiklikleri
Sürücü değişikliklerini uygulamak için fastboot aracına komutlar eklendi. Her biri Fastboot tablosundaki tam tanımıyla bağlantılı komutlarını kullanın.
fastboot fetch vendor_boot out.img
- Yığın boyutunu belirlemek için
getvar max-fetch-size
öğesini çağırır. - Şunu belirlemek için
getvar partition-size:vendor_boot[_a]
numarasını çağırır: boyutunu değiştirebilirsiniz. - Her biri için
fastboot fetch vendor_boot[_a]:offset:size
numaralı telefonu arar emin olun. (Parça boyutu,vendor_boot
boyutundan büyükse) bu nedenle normalde yalnızca bir yığın bulunur.) - Verileri birbirine ekler:
out.img
.
- Yığın boyutunu belirlemek için
fastboot flash vendor_boot:default vendor-ramdisk.img
Bu, flash komutunun özel bir varyantıdır. Tarayıcı,
fastboot fetch
çağrılmış gibivendor_boot
resim.- Tedarikçi firma başlatması üstbilgi sürümüyse
3,
şunları yapar:
- Tedarikçi firma ramdisk'ini verilen resimle değiştirir.
- Yeni
vendor_boot
resmini yanıp söner.
- Tedarikçi firma başlatma başlığı version ise
4,
şunları yapar:
- Tüm tedarikçi firma ramdisk'ini verilen resimle değiştirir. Böylece,
verilen tek tedarikçi firma ramdisk parçası haline gelir.
vendor_boot
resim. - Tedarikçi firma ramdisk tablosundaki boyutu ve ofseti yeniden hesaplar.
- Yeni
vendor_boot
resmini yanıp söner.
- Tüm tedarikçi firma ramdisk'ini verilen resimle değiştirir. Böylece,
verilen tek tedarikçi firma ramdisk parçası haline gelir.
- Tedarikçi firma başlatması üstbilgi sürümüyse
3,
şunları yapar:
fastboot flash vendor_boot:foo vendor-ramdisk.img
vendor_boot image
öğesini,fastboot fetch
çağrılmış gibi getirir.- Tedarikçi firma başlatma başlığı sürüm 3 ise hata döndürür.
Tedarikçi firma başlatma başlığı sürüm 4 ise aşağıdakileri yapar:
foo
adlı tedarikçi firma ramdisk parçasını bulur. Bulunamazsa birden çok eşleşme varsa hata döndürür.- Tedarikçi firma ramdisk parçasını belirtilen resimle değiştirir.
- Tedarikçi firma ramdisk tablosundaki her bir boyutu ve ofseti yeniden hesaplar.
- Yeni
vendor_boot
resmini yanıp söner.
mkbootimg
default
adı,
Android 12 ve sonraki sürümler. Fastboot sırasında flash vendor_boot:default
anlamları aynı kalırsa ramdisk parçalarınızı
default
.
SELinux değişiklikleri
Şu tarihte bir değişiklik yapıldı:
fastbootd.te
tampon çalışmasını sağlamak.