首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将单独构建的android内核集成到AOSP中

将单独构建的android内核集成到AOSP中
EN

Stack Overflow用户
提问于 2022-02-04 14:58:33
回答 1查看 658关注 0票数 4

我如何正确地构建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分支同步的

  1. 回购

这给了我一个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 bootimagemake bootimage,没有在内核上复制makem

然后,我尝试在aosp/kernel/prebuilts/5.10/x86_64中对预构建的内核进行硬拷贝粘贴,然后粘贴到kernel-5.10kernel-5.10-allsyms上,然后只粘贴kernel-5.10,在那里make bootimagem bootimage复制构建的内核。但这两种方式都没有通过launch_cvd启动安卓,而是一遍又一遍地重启。

向AOSP提供自定义构建的Android内核和用内核构建AOSP的正确方法是什么?为什么Android不启动一个硬拷贝的内核文件呢?

EN

回答 1

Stack Overflow用户

发布于 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

  1. TARGET_PREBUILT_KERNEL在构建“午餐sdk_x86_64-eng”配置时不会使用。
  2. 内核构建输出中没有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 :=

这里指定了三个设置

  1. 使用内核版本5.10
  2. 内核模块路径,这是GKI模块,一堆*.ko文件- KERNEL_MODULES_PATH。注意:这是adirectory.
  3. The内核文件路径,内核映像文件路径- 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中跟踪它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70988473

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档