Android10以上系统Audio音频遇到播放视频无声时的分析方法
编译LineageOS arm64-userdebug源码、编译内核并使用QEMU启动的完整流程
车载系统的安全启动(Secure Boot)、可信执行环境(TEE)、硬件安全模块(HSM)和固件更新安全
一、环境准备
1. 系统要求操作系统: Ubuntu 20.04/22.04 LTS (推荐)内存: 至少 16GB
磁盘空间: 至少 300GB (源码 + 编译产物)网络: 稳定连接 (需要下载大量源码)
2. 安装依赖
sudo apt updatesudo apt install -y git-core gnupg flex bison build-essential zip
curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 libncurses5
lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev
libxml2-utils xsltproc unzip fontconfig python3 openjdk-11-jdk repo
qemu-system-arm qemu-utils
二、下载LineageOS源码
1. 初始化Repo工具
mkdir -p ~/lineage
cd ~/lineage
repo init -u https://github.com/LineageOS/android.git -b lineage-20.0 --git-lfs
2.同步源码
repo sync -j$(nproc --all) --force-sync --no-clone-bundle --no-tags
三、编译 LineageOS
1.初始化编译环境
source build/envsetup.sh
lunch lineage_arm64-userdebug
2.开始编译
mka -j$(nproc --all) # 或 make -j$(nproc --all)
编译产物会生成在
out/target/product/generic_arm64/
四、编译内核
1.获取内核源码
cd ~/lineage/kernel
#假设内核仓库为lineageos官方仓库
git clone https://github.com/LineageOS/android_kernel_common commoncd common
2.配置内核
export ARCH=arm64
export CROSS_COMPILE=aarch64-linux-android
make lineageos_defconfig # 使用默认配置
3.编译内核
make -j$(nproc --all)
生成的Image.gz-dtb位于arch/arm64/boot/
五、使用QEMU启动
1.准备镜像文件系统镜像
out/target/product/generic_arm64/system.img
内核文件
arch/arm64/boot/Image.gz-dtb
RAM磁盘
out/target/product/generic_arm64/ramdisk.img
2.创建启动脚本 (start_qemu.sh)
qemu-system-aarch64
-kernel path/to/Image.gz-dtb
-append "console=ttyAMA0 root=/dev/ram0"
-M virt
-cpu cortex-a57
-smp 4
-m 4096
-nographic
-drive file=out/target/product/generic_arm64/system.img,if=none,format=raw,id=system
-device virtio-blk-device,drive=system
-drive file=out/target/product/generic_arm64/ramdisk.img,if=none,format=raw,id=ramdisk
-device virtio-blk-device,drive=ramdisk
-netdev user,id=eth0
-device virtio-net-device,netdev=eth0
3.启动QEMU
chmod +x start_qemu.sh
./start_qemu.sh
六、常见问题1.源码同步失败检查网络,重试repo sync或使用-f强制同步。
2.编译错误确保所有依赖已安装,尝试 `make clean` 后重新编译。
3.QEMU启动黑屏确认内核和镜像路径正确,检查启动参数是否匹配架构。
七、高级配置启用KVM加速
添加-enable-kvm参数(需主机支持虚拟化)。
图形界面
移除-nographic并使用-vga virtio。调试
添加-S -s参数启动GDB调试。
通过以上步骤,可以在QEMU中启动编译好的 LineageOS系统。如果遇到问题,建议查看编译日志和QEMU输出信息进行排查。
Android系统在线源码
http://androidxref.com
http://aospxref.com/
Android系统所有版本
https://www.androidos.net.cn/sourcecode
Android Kernel系统所有版本
https://www.androidos.net.cn/sourcecode
Android系统核心服务
https://www.androidos.net.cn/androidservice
https://download.mokeedev.com/
https://wiki.lineageos.org/devices/
https://github.com/MoKee
https://github.com/LineageOS
魔改定制篇
鸿蒙(HarmonyOS)安全篇
鸿蒙(Harmony OS)中Native层的SDK详细解析
HarmonyOS Next(鸿蒙Next)系统提权思路和方法
基于开源鸿蒙的机器人AIOS操作系统M-Robots OS1.0
HarmonyOS Next(鸿蒙Next)获取Root权限的解决方案
鸿蒙系统(HarmonyOS)常用的日志跟踪命令及相关操作指南
HarmonyOS Next(鸿蒙Next)针对APP抓包的工具和抓包方法
日志分析篇
Windows/Linux/MacOS文本大文件Log日志分析工具
Android ANR/Crash Log日志分析技巧总结(建议收藏)
Android10至16系统定制中实现同时打印JNI(Native)堆栈和Java堆栈
Root/安全检测篇
ROM系统定制篇
Android7至16系统ROM魔改和安全研究篇(建议收藏)
KernelSU Next是Android新兴的内核级Root解决方案
HarmonyOS Next(鸿蒙Next)获取Root权限的解决方案
永久关闭或修改Android系统的SELinux状态(避免重启后恢复)
HarmonyOS Next(鸿蒙Next)针对APP抓包的工具和抓包方法
原文始发于微信公众号(哆啦安全):编译lineage_arm64-userdebug源码和编译内核及使用qemu-system-aarch64启动的完整过程
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论