如何使用 AOSP 工具链编译 msm android 内核?

如何解决如何使用 AOSP 工具链编译 msm android 内核?

我已经被困在这一个多星期了,所以我很感激任何帮助。

我想做什么? (如果你愿意,你可以跳过这部分)

我正在尝试进行 android 内核开发。不过,这不是我目前的问题。要学习内核利用,我需要能够获得易受某个漏洞攻击的 android 版本。所以这就是我正在做的:

  1. 前往 here 选择我想学习如何利用的 CVE
  2. 选择 CVE 后,我需要从 here
  3. 中选择容易受到该 CVE 攻击的构建
  4. 既然我已经选择了一个构建版本(在我的例子中是 QQ3A.200805.001),我会记下它的分支名称(在我的例子中是 android-10.0.0_r41
  5. 现在我需要能够在 android 模拟器 (qemu) 中运行此构建一次作为生产构建,一次使用 KASAN+KCOV+gdb 的调试符号

在开始之前,我遵循以下指南:

  1. https://source.android.com/devices/tech/debug/kasan-kcov
  2. https://source.android.com/setup/build/building-kernels-deprecated
  3. 谷歌 :)

我的设置:

我这样做是为了下载我需要的一切:

git clone https://android.googlesource.com/kernel/msm
cd msm
git fetch --all --tags --prune
git checkout remotes/origin/android-msm-coral-4.14-android10
cd ..

mkdir AOSP
cd AOSP
repo init -u https://android.googlesource.com/platform/manifest
repo sync -j`nproc`
repo init -b android-10.0.0_r41
repo sync -j`nproc`
cd ..

当我进入 AOSP 目录并尝试编译时:

source ./build/envsetup.sh
lunch aosp_flame-userdebug # For the Pixel 4
m

它在 4 小时内编译完成,但它奏效了。

我的第一期:

然后我在主文件夹中创建了这个 bash 脚本来尝试正常编译 msm 内核(没有 KASAN/KCOV):

###########
# Params: #
###########
ARCH=arm64
CONFIG=cuttlefish_defconfig

###########
# Script: #
###########
read -p "Compile with clang instead of gcc? [y/N] " USE_CLANG

if [ $USE_CLANG == y ] || [ $USE_CLANG == Y ]; then
        COMPILER=clang
        CC_PATH=$(pwd)/AOSP/prebuilts/clang/host/linux-x86/clang-r346389c/bin/
else
        COMPILER=gcc
        CC_PATH=$(pwd)/AOSP/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/bin/
        export CROSS_COMPILE=aarch64-linux-android-
fi

export ARCH=$ARCH
export PATH=$PATH:$CC_PATH

cd msm
make clean
make distclean
make $CONFIG
make CC=$COMPILER

当我使用 GCC 运行它时,我收到了折旧警告的轰炸,并收到一个错误:

Android GCC has been deprecated in favor of Clang,and will be removed from
Android in 2020-01 as per the deprecation plan in:
https://android.googlesource.com/platform/prebuilts/clang/host/linux-x86/+/master/GCC_4_9_DEPRECATION.md

...

Cannot use CONFIG_CC_STACKPROTECTOR_STRONG: -fstack-protector-strong not supported by compiler

当我用 clang 运行它时,我也收到了大量警告和这个错误:

./arch/arm64/include/asm/stack_pointer.h:8:51: error: register 'sp' unsuitable for global register variables on this target
register unsigned long current_stack_pointer asm ("sp");

...

In file included from ./include/linux/kvm_host.h:14:
./include/linux/signal.h:81:11: warning: array index 3 is past the end of the array (which contains 1 element) [-Warray-bounds]
return (set->sig[3] | set->sig[2] |

脚本的完整输出可以在 here (for gcc)here (for clang) 中找到。基本上我的第一个问题是我不知道为什么会出现这些编译错误。因此,任何建议将不胜感激。

我的第二个问题: 现在,我正在检查 msm repo 中的 remotes/origin/android-msm-coral-4.14-android10 分支,但我认为这不是可行的方法,因为我需要与某个构建/分支相对应的内核版本({{1 }} 或 QQ3A.200805.001 在我的情况下)。我想我需要构建在 AOSP 存储库中预编译的确切版本。

例如,如果我转到 android-10.0.0_r41 目录并运行 AOSP/device/google/coral,我会得到如下信息:

git log

可以在 here 找到此确切提交/标记的链接。但是,msm source repo 中没有 commit 62d311ad7cfc3e76a5278634427596462069b44d (HEAD,tag: android-10.0.0_r41,tag: m/android-10.0.0_r41,aosp/android10-qpr3-release) Merge: 7b91fff 0657c80 Author: android-build-team Robot <android-build-team-robot@google.com> Date: Wed Jun 10 23:45:11 2020 +0000 Merge cherrypicks of [11827366,11829660,11829049,11829662,11829647,11829300,11826697,11829719,11829051,11829663,11829664,11829838,11829052,11829472,11829586] into qt-qpr3-release Change-Id: Ic126de75c24133f8d43df7c9d8f09059a9ca8089 commit 0657c80f016720f70ed6f9618f928a30e71f2b79 Author: wenchangliu <wenchangliu@google.com> Date: Tue Mar 24 18:11:18 2020 +0800 coral: Add seccomp policy for Codec2 process Add seccomp policy for Codec2 process. Bug: 149511958 Test: adb shell killall media.hwcodec Change-Id: Iab64bd42ead0c5a27769a757007282c2dddf911d (cherry picked from commit 3628a510a808a52c4ebf69958a8343928e5df3f2) (cherry picked from commit 45a6093f3d085ca2a531c2607bd12dbc1eff6bf9) commit 7b91fffc14afb41cf14772566272c72b37c36785 Merge: 2e7f1a3 e8c9484 Author: android-build-team Robot <android-build-team-robot@google.com> Date: Wed Jun 10 00:37:23 2020 +0000 ... 标签,所以我不知道哪个版本的 msm repo 对应于 AOSP 目录中的预构建版本。而且.. 我不知道从哪里开始寻找 tbh。

非常感谢任何帮助。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-
参考1 参考2 解决方案 # 点击安装源 协议选择 http:// 路径填写 mirrors.aliyun.com/centos/8.3.2011/BaseOS/x86_64/os URL类型 软件库URL 其他路径 # 版本 7 mirrors.aliyun.com/centos/7/os/x86
报错1 [root@slave1 data_mocker]# kafka-console-consumer.sh --bootstrap-server slave1:9092 --topic topic_db [2023-12-19 18:31:12,770] WARN [Consumer clie
错误1 # 重写数据 hive (edu)&gt; insert overwrite table dwd_trade_cart_add_inc &gt; select data.id, &gt; data.user_id, &gt; data.course_id, &gt; date_format(
错误1 hive (edu)&gt; insert into huanhuan values(1,&#39;haoge&#39;); Query ID = root_20240110071417_fe1517ad-3607-41f4-bdcf-d00b98ac443e Total jobs = 1
报错1:执行到如下就不执行了,没有显示Successfully registered new MBean. [root@slave1 bin]# /usr/local/software/flume-1.9.0/bin/flume-ng agent -n a1 -c /usr/local/softwa
虚拟及没有启动任何服务器查看jps会显示jps,如果没有显示任何东西 [root@slave2 ~]# jps 9647 Jps 解决方案 # 进入/tmp查看 [root@slave1 dfs]# cd /tmp [root@slave1 tmp]# ll 总用量 48 drwxr-xr-x. 2
报错1 hive&gt; show databases; OK Failed with exception java.io.IOException:java.lang.RuntimeException: Error in configuring object Time taken: 0.474 se
报错1 [root@localhost ~]# vim -bash: vim: 未找到命令 安装vim yum -y install vim* # 查看是否安装成功 [root@hadoop01 hadoop]# rpm -qa |grep vim vim-X11-7.4.629-8.el7_9.x
修改hadoop配置 vi /usr/local/software/hadoop-2.9.2/etc/hadoop/yarn-site.xml # 添加如下 &lt;configuration&gt; &lt;property&gt; &lt;name&gt;yarn.nodemanager.res