编译cuttlefish内核遇到的问题

简介: 编译cuttlefish内核遇到的问题

参考

我使用的是common-android13-5.10,在编译的时候使用的是build.sh的方法,在实际编译的时候遇到System.map找不到的问题,需要修改build.sh,将System.map从内核编译目录下拷贝到dist目录下即可,patch如下:

pengdl@ubuntu:~/work/android/common-android13-5.10/build/kernel$ git diff
diff --git a/build.sh b/build.sh
index e33f44f5d97d..7d001733b6d6 100755
--- a/build.sh
+++ b/build.sh
@@ -982,6 +982,11 @@ if [ -z "${SKIP_CP_KERNEL_HDR}" ]; then
   tar -czf ${KERNEL_UAPI_HEADERS_TAR} --directory=${KERNEL_UAPI_HEADERS_DIR} usr/
fi
+if [ -f ${OUT_DIR}/System.map ];then
+echo " Copying System.map to ${DIST_DIR}"
+cp ${OUT_DIR}/System.map ${DIST_DIR}
+fi
+
if [ -z "${SKIP_CP_KERNEL_HDR}" ] ; then
echo "========================================================"
   KERNEL_HEADERS_TAR=${DIST_DIR}/kernel-headers.tar.gz

如果要支持kprobe的话,使用common-modules/virtual-device/build.config.virtual_device_kprobes.x86_64,下面是我是用的配置:

$ cat common-modules/virtual-device/build.config.virtual_device_kprobes.x86_64
. ${ROOT_DIR}/common-modules/virtual-device/build.config.virtual_device
. ${ROOT_DIR}/${KERNEL_DIR}/build.config.x86_64
. ${ROOT_DIR}/${KERNEL_DIR}/build.config.gki_kprobes
DEFCONFIG=cf_x86_64_gki_defconfig
PRE_DEFCONFIG_CMDS="KCONFIG_CONFIG=${ROOT_DIR}/${KERNEL_DIR}/arch/x86/configs/${DEFCONFIG} ${ROOT_DIR}/${KERNEL_DIR}/scripts/kconfig/merge_config.sh -m -r ${ROOT_DIR}/${KERNEL_DIR}/arch/x86/configs/gki_defconfig ${ROOT_DIR}/common-modules/virtual-device/virtual_device.fragment"
POST_DEFCONFIG_CMDS="rm ${ROOT_DIR}/${KERNEL_DIR}/arch/x86/configs/${DEFCONFIG} && update_kprobes_config"
DO_NOT_STRIP_MODULES=1
function update_kprobes_config() {
${KERNEL_DIR}/scripts/config --file ${OUT_DIR}/.config \
         -d LTO_CLANG_THIN \
         -d LTO_CLANG_FULL \
         -d CFI_PERMISSIVE \
         -d CFI_CLANG \
         -e CONFIG_FTRACE_SYSCALLS \
         -e CONFIG_STACK_TRACER \
         -e CONFIG_DYNAMIC_FTRACE \
         -e CONFIG_FUNCTION_TRACER \
         -e CONFIG_FUNCTION_GRAPH_TRACER \
         -e CONFIG_SCHED_TRACER \
         -e CONFIG_BLK_DEV_IO_TRACE \
         -e CONFIG_BPF_KPROBE_OVERRIDE \
         -e CONFIG_BPF_LSM \
         -e CONFIG_CFS_BANDWIDTH \
         -e CONFIG_IRQSOFF_TRACER \
         -e CONFIG_FUNCTION_PROFILER \
         -e CONFIG_PREEMPT_TRACER \
         -e CONFIG_CHECKPOINT_RESTORE \
         -d CONFIG_RANDOMIZE_BASE
    (cd ${OUT_DIR} && \
     make ${TOOL_ARGS} O=${OUT_DIR} olddefconfig)
}
# Not saving any kernel images. This build step is meant purely to generate the .kos.
FILES=""

使用下面的命令进行编译:

SKIP_MRPROPER=1 BUILD_CONFIG=common-modules/virtual-device/build.config.virtual_device_kprobes.x86_64 ./build/build.sh

完。

相关文章
|
数据建模 Linux C++
linux交叉编译live555
linux交叉编译live555
370 1
|
JavaScript 前端开发 应用服务中间件
|
5月前
|
网络协议 Java
在SpringBoot项目中使用Netty实现远程调用
本文介绍了使用Netty解决网络连接性能问题的方法,重点讲解了Netty的NIO特性及其在SpringBoot中的应用。Netty作为高效的NIO框架,支持非阻塞IO,能通过单线程管理多个客户端连接,简化TCP/UDP套接字服务器开发。文章详细展示了Netty在SpringBoot中实现远程调用的过程,包括服务端与客户端代码实现、依赖配置及测试验证。通过示例代码,如`NettyServer`、`NettyClientUtil`等,清晰说明了Netty的工作原理和实际应用,解决了半包等问题,并提供了完整的测试结果。
666 3
|
7月前
|
Java API 开发工具
Android cmdline-tools版本与最小JDK的关系
总的来说,Android的命令行工具和JDK之间的关系就像是一场舞会,两者需要彼此配合,才能共同创造出美妙的舞蹈。如果选择了不合适的舞伴(即不兼容的版本),可能会导致舞蹈中的步伐混乱,甚至无法完成舞蹈。而即使选择了合适的舞伴,也需要考虑舞伴的舞蹈技巧(即性能和稳定性),才能确保舞蹈的完美表现。因此,选择合适的Android命令行工具和JDK版本,是每一个Android开发者都需要面对的重要决定。
247 13
|
Ubuntu 开发工具 Android开发
Repo下载、编译AOSP源码:基于Ubuntu 21.04,android-12.1.0_r27
文章记录了作者在Ubuntu 21.04服务器上配置环境、下载并编译基于Android 12.1.0_r27版本的AOSP源码的过程,包括解决编译过程中遇到的问题和错误处理方法。
1092 0
|
IDE 开发工具 开发者
isort——Python 代码中的导入语句进行排序和格式化
isort,全称是 "Import Sorting",是一个 Python 工具,用来对 Python 代码中的导入语句进行排序和格式化。它可以帮助我们按照一定的规则对导入的模块进行排序,使得代码更加整洁,易于阅读和维护。
|
KVM 虚拟化 数据安全/隐私保护
KVM虚拟机安装实战
本文讲述了如何创建并使用VNC连接KVM虚拟机的详细教程,包括安装图解和命令行参数说明。
430 8
用clang编译Linux内核
用clang编译Linux内核
|
安全 Ubuntu 测试技术
l4re Getting started
l4re Getting started
687 0
|
监控 安全 Linux
在Linux中,SELinux的作用是什么?如何临时和永久地更改SELinux上下文?
在Linux中,SELinux的作用是什么?如何临时和永久地更改SELinux上下文?