首页 > 其他分享 >编译cuttlefish内核遇到的问题

编译cuttlefish内核遇到的问题

时间:2023-12-31 20:23:08浏览次数:56  
标签:KERNEL config virtual 编译 build CONFIG cuttlefish DIR 内核

参考

我使用的是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

完。

标签:KERNEL,config,virtual,编译,build,CONFIG,cuttlefish,DIR,内核
From: https://www.cnblogs.com/pengdonglin137/p/17937941

相关文章

  • Linux内核socket系统调用源码分析
    一、环境说明内核版本:Linux3.10内核源码地址:https://elixir.bootlin.com/linux/v3.10/source(包含各个版本内核源码,且网页可全局搜索函数)二、应用层-socket()函数应用层创建socket对象返回整型的文件描述符。/*family:被称为协议族,或者协议域。*type:套接字类型。*......
  • Linux驱动开发之Linux内核中的中断处理以及相关API和例程分析
    中断是计算机中实现异步事件处理的一种关键机制。当中断发生时,CPU会暂停当前的任务,转去运行中断服务例程。中断处理完成后,CPU再返回到原来的任务。这使得中断处理具有很高的实时性和响应速度。在Linux内核中,充分利用了中断机制来响应各种硬件和软件事件。在Linux操作系统中,中断......
  • 1-1-04 VIVADO设置VSCODE为第三方编译器
    使用第三方编辑工具可以让开发代码变的更加高效,vscode是非常好用的第三方编辑器,下面我们演示如何vivado中设置vscode为第三方编译器双击打开vivado程序点击设置选择代码编译器"TextEditor"选择编辑器,里面包含Notepad++等各类编译器,但是我们要设置的VSCODE并不包含在里面......
  • python反编译全流程
    [NISACTF2022]ezpython1、将exe文件转换为pyc文件格式此题附件下载下来后为exe文件格式,我们需要用到pyinstxtractor.py这个工具来将exe文件转成pyc格式在pyinstxtractor.py的文件夹中cmd,输入pythonpyinstxtractor.py文件名2、修改magicnumber经过以上操作后会生成一个......
  • 如何编译avd for macarm or winx86 内核
    AVD:AndroidVirtualDevice前言别问需求问就是抽象背景是pixel6好贵买不起备用机内核只有4.4改了三天内核代码只把kernelSupatch进去了玩不起ebpf呜呜呜什么我是macm1?有androidstudio的原生arm模拟器?avd启动!解决痛点:没有root等需要自定义内核的需求如patch......
  • OpenEuler22.03源码编译安装nginx1.24.0
    一、环境说明操作系统版本:OpenEuler22.03SP2LTSNginx版本:1.24.0安装位置:/app/nginxSelinux配置:关闭或设置为permissive二、Nginx安装#安装必要依赖dnf-yinstalltargccmakepcrepcre-develzlibzlib-developensslopenssl-devel#创建nginx安装文件夹mkdir/......
  • mac m1 编译cocos2d-x 在模拟器上运行 一些问题汇总
     如果涉及到侵权请联系本人删除 1  》〉/Users/yzfhkms-m/Library/Developer/Xcode/DerivedData/formi-dlcfwgxcmidqefdkxnvnfwfprpfs/Build/Products/Debug-iphonesimulator/formi-mobile.appisnotavalidpathtoanexecutablefile.Pleaserebuildtheprojectto......
  • 编译自己的minio运行程序
    1.下载源码包源码托管在github,如果嫌下载慢就去码云急速下载里面下载:github仓库地址:https://github.com/minio/minio/releasesgitee镜像仓库:https://gitee.com/mirrors/minio/tags假设我这里下载了的文件是这个RELEASE.2023-12-14T18-51-57Z.tar.gz,我们把压缩包解压后改名......
  • 运行编译生成的共享库文件
    1、将生成的整个文件目录拷贝到用户目录下,如:/home/wqz/gzgldw目录gzgldw下包含两个目录bin和lib,目录bin下的gzgldw即为可执行的共享库文件,目录lib下是程序用到的库文件和其他相关目录及文件等。2、默认共享库文件gzgldw打开方式是文本编辑器,双击运行如果以默认打开方式......
  • 如何解决使用融云音视频时由于库冲突导致编译不通过的问题
    音视频库里面使用了一些第三方库,比如openssl,libopencore-amrnb等第三方库,如果集成的过程中遇到冲突可以尝试这样修改:1、在BuildSettings中OtherLinkerFlags中把-all_load去掉;2、如果遇到openssl库冲突无法解决,请工单联系我们单独提供不包含openssl库的音视频引擎库......