我如何正确地构建Android内核,然后用这个内核构建AOSP呢?目前,我正在Linux x86_64主机上虚拟化Android。我使用的AOSP午餐选项是aosp_cf_x86_64_phone-userdebug。AOSP在主分支上,并在2022年1月同步。
我正在按照以下说明构建我自己的Android内核:https://source.android.com/setup/build/building-kernels
我已经完成了这些步骤:
与https://android.googlesource.com/kernel/manifest
BUILD_CONFIG=common/build.config.gki.x86_64 build/build.sh
BUILD_CONFIG=common-modules/virtual-device/build.config.virtual_device.x86_64 build/build.sh
上的common-android12-5.10分支同步的
这给了我一个android-kernel/out/android12-510/dist/bzImage。我试着按照https://source.android.com/setup/build/building-kernels#running的指示执行export TARGET_PREBUILT_KERNEL=$(realpath android-kernel/out/android12-510/dist/bzImage),然后执行m bootimage和make bootimage,没有在内核上复制make或m。
然后,我尝试在aosp/kernel/prebuilts/5.10/x86_64中对预构建的内核进行硬拷贝粘贴,然后粘贴到kernel-5.10和kernel-5.10-allsyms上,然后只粘贴kernel-5.10,在那里make bootimage和m bootimage复制构建的内核。但这两种方式都没有通过launch_cvd启动安卓,而是一遍又一遍地重启。
向AOSP提供自定义构建的Android内核和用内核构建AOSP的正确方法是什么?为什么Android不启动一个硬拷贝的内核文件呢?
发布于 2022-11-08 02:57:30
在本文后面构建内核并尝试与金鱼模拟器(用“仿真器”命令运行的模拟器)一起使用时,我遇到了类似的问题。虽然不是完全相同的墨鱼,但问题是相似的。把它贴在这里以防有人需要这个。
https://source.android.google.cn/docs/setup/build/building-kernels#embedding-into-Android
它说,您必须将TARGET_PREBUILT_KERNEL设置为指向内核映像。但是,对于模拟器来说,这是行不通的。
导出目标_预置_内核=DIST_DIR/Image.lz4-DTB
原因是,对于“午餐sdk_x86_64-eng",AOSP将为位于设备/泛型/金鱼中的金鱼使用构建配置。金鱼的内核配置在设备/泛型/金鱼/x86_64-kernel.mk中详细说明。
TARGET_KERNEL_USE ?= 5.10
kernel/prebuilts/common-modules/virtual-device/$(TARGET_KERNEL_USE)/x86-64 KERNEL_MODULES_PATH :=
KERNEL_MODULES_EXCLUDE :=
$(KERNEL_MODULES_PATH)/virt_wifi.ko
$(KERNEL_MODULES_PATH)/virt_wifi_sim.ko
BOARD_VENDOR_RAMDISK_KERNEL_MODULES +=
$(滤出$(KERNEL_MODULES_EXCLUDE),$(通配符$(KERNEL_MODULES_PATH)/*.ko))
kernel/prebuilts/$(TARGET_KERNEL_USE)/x86_64/kernel-$(TARGET_KERNEL_USE) EMULATOR_KERNEL_FILE :=
这里指定了三个设置
您可以在AOSP内核目录中找到2)和3)。
您应该做的是将KERNEL_MODULES_PATH和EMULATOR_KERNEL_FILE更改为自定义构建的内核输出、put、dir和文件。说
内核_MODULES_PATH=/ *.ko /out/ dir #a dir包含一堆*.ko文件
内核_MODULES_PATH=/ file /out/dir/bzImage#是一个大约20M左右的文件
更改此文件后,清除并重新生成AOSP。然后,模拟器将与您的自定义内核一起运行。
对于螯虾鱼,aosp_cf_x86_64_phone-userdebug目标,内核配置文件位于device/google/cuttlefish/vsoc_x86_64/kernel.mk。
TARGET_KERNEL_USE ?= 5.10 TARGET_KERNEL_PATH ?= PRODUCT_COPY_FILES += $(TARGET_KERNEL_PATH):内核
我不知道为什么它只有TARGET_KERNEL_PATH,而没有内核模块路径( GKI模块,*.ko文件)。您应该能够从这个文件device/google/cuttlefish/vsoc_x86_64/phone/aosp_cf.mk中跟踪它。
https://stackoverflow.com/questions/70988473
复制相似问题