Sabit olarak korunması gereken simge ve türlerin görünürlüğünü azaltmak için
GKI çekirdeği, dışa aktarılan simgeleri yalnızca
bazı örnekler vardır. Harici olarak derlenmiş modüller için bir listenizin olması gerekir
GKI çekirdeği tarafından dışa aktarılmasına izin vermek için kullanılan semboller Örneğin,
kullanılan simgelerin
Kesiş balığı saksıları
inç
android/abi_gki_aarch64_virtual_device
.
Sembol listesi oluşturmak için hedef ekle
Sembol listeleri, kernel_abi
hedefi tarafından oluşturulur. Bu hedefi
aşağıdaki seçeneklerle BUILD.bazel
cihazı:
name
<kernel_build>_abi
biçiminde olmalıdır.kernel_build
Cihaz
kernel_build
hedefinin adını içermelidir.
Aşağıdaki seçenekleri de kullanabilirsiniz:
kernel_modules
Ağaç dışı modüllerin hedeflerinin listesi. Ağaç içi modüller dahil edilir. Referans Ağaç içi modülleri sembol ayıklama için hazırlayın.
kmi_symbol_list_add_only
Bu seçenek, kullanılmayan simgelerin kaldırılmasını engeller. Sembol kaldırma KMI sırasında belirli zamanlarda izin verilir sabitleştirme ve KMI'ye izin verilmez. donduruldu.
Bu, aynı simge listesini birden fazla farklı öğe için kullandığınızda da cihazlar. Bu şekilde, A cihazı tarafından kullanılan simgeler kaldırılırken B cihazı kaldırılmaz.
module_grouping
True
değeri veya belirtilmediyse simge listesi, simgeleri çekirdek modüllerini geliştirmeye devam edin. Aksi takdirde simge listesi tüm çekirdek modülleri tarafından kullanılan simgelerin sıralı bir listesidir.
Görüntüleyin ortak-modüller/virtual-device/BUILD.bazel örneğin:
kernel_abi(
name = "virtual_device_aarch64_abi",
kernel_build = ":virtual_device_aarch64",
kernel_modules = [
":virtual_device_aarch64_external_modules",
],
kmi_symbol_list_add_only = True,
)
Şunlara da bakabilirsiniz:
referans belgeleri
Kleaf'teki kernel_abi
hedefinde.
Ağaç içi modülleri simge ayıklama için hazırlama
Ağaç içi modülleri sembol ayıklamaya hazırlamak için satıcıya özgü ağaç içi modülleri listeleyin
modüllerini kernel_build
hedefinin module_outs
özelliğinde bulabilirsiniz. Görüntüleyin
_VIRT_COMMON_MODULES
ve
kullanımı
inceleyebilirsiniz. Bu listeye GKI modüllerini eklemeyin.
Bu modülleri, imzasız, Aksi takdirde simge listesi boş olabilir. Bunu yapmak için bu satırı çekirdeğinize ekleyin yapılandırma parçaları:
# CONFIG_MODULE_SIG_ALL is not set
Görüntüleyin ortak-modüller/virtual-device/virtual_device_core.fragman örneğine bakalım.
Cihaz çekirdek yapısına cihaz simgesi listesi ekleme
kmi_symbol_list
özelliğini şunda tanımlanan kernel_build
hedefine ekleyin:
cihaz BUILD.bazel
. Sembol listesinin adı şu biçimde olmalıdır:
//common:android/abi_gki_<arch>_<device>
Görüntüleyin
common-modules/virtual-device/BUILD.bazel
örneğin:
kernel_build(
name = "virtual_device_aarch64",
base_kernel = "//common:kernel_aarch64",
kmi_symbol_list = "//common:android/abi_gki_aarch64_virtual_device",
...
module_outs = _VIRT_COMMON_MODULES + _VIRT_AARCH64_MODULES,
)
İlk sembol listesini oluşturma ve gönderme
common/android/abi_gki_<arch>_<device>
adresinde boş bir sembol listesi oluşturun.
aşağıdaki örnekteki gibidir:
touch common/android/abi_gki_aarch64_virtual_device
Bu dosyayı, temel GKI çekirdek derlemesinin additional_kmi_symbol_lists
bölümüne ekleyin. Örneğin,
Örneğin, //common:android/abi_gki_aarch64_virtual_device
aarch64_additional_kmi_symbol_lists
dosya grubu, belirtilen
common/BUILD.bazel'i seçin.
Yeni simge listesini doldurmak için cihaz simgesi listesini güncelleyin ve Android Ortak Kernel deposuna gönderin.
Cihaz simge listesini güncelleme
kernel_build
ve module_outs
içindeki modüller tarafından kullanılan tüm temel çekirdek simgeleri
kernel_modules
/kernel_abi
, simge listesine eklenmelidir. Bu
kernel_abi
hedefi _update_symbol_list
ile çalıştırılarak yapılabilir.
soneki kullanmanız gerekir. Örneğin, aşağıdaki komut şunun simge listesini günceller:
//common-modules/virtual-device:virtual_device_aarch64
:
tools/bazel run //common-modules/virtual-device:virtual_device_aarch64_abi_update_symbol_list
ACK'ye sembol listesi güncellemesi gönder
Sembol listesi değişikliğini içeren Android Ortak Çekirdek yeni sembolleri KMI'ye dahil etmek için yeni sembolleri kullanmaya başladım.
Kaydetme mesajı, eklenen veya kaldırılan sembollerin listesini içermelidir. Şunları yapabilirsiniz:
Bu listeyi küçük bir simge listesi güncellemesi için manuel olarak yazın veya
Şu tarihten sonra $DIST_DIR/abi.report.short
rapor:
referans ABI'yı güncelleyerek
temsil eder.
Referans ABI'yi güncellerken temsil bir simge listesi güncellemesi göndermenize gerek olmadığından, ve değişikliği daha hızlı gönderilmeye hazır hale getirin. Her koşulda, kontrol edilir ve gerekiyorsa güncellenir.
Eski sürümler (Android 12 ve önceki sürümler)
build_abi.sh
aracını aşağıdaki gibi kullanın:
BUILD_CONFIG=path/to/build.config.device build/build_abi.sh --update-symbol-list
Bu örnekte, build.config.device
şu yapılandırma seçeneklerini içermelidir:
vmlinux
FILES
listesinin bir parçası olmalıdır. Bu,build.config.aarch64
KMI_SYMBOL_LIST
Güncelleme için ayarlanmalı ve KMI simge listesine işaretlenmelidir.
Cihaz simge listesini güncelledikten sonra, bu değişiklikleri
GKI derlemesi (common/build.config.gki.aarch64
):
Güncellenen simge listesini
common/android/abi_gki_aarch64_<device>
hedefine kopyalayın.android/abi_gki_aarch64_<device>
adlı içeriğin şuna dahil olduğundan emin olun:common/build.config.gki.aarch64
içindeADDITIONAL_KMI_SYMBOL_LISTS
.