文章目录

  • 前言
  • 一、环境准备
    • 0. 硬件准备
    • 1. KVM
    • 2. 源码准备
      • 2.1 goldfish
      • 2.2 交叉编译工具
    • 3. Android Studio
    • 4. Java
  • 二、编译内核

前言

这篇博客主要记录下利用Android模拟器,在Android7.1.1系统下换goldfish3.10-n-dev核的过程,在此之前参考了网上大大小小的换核教程,没有那种一次性走到头的,可能是时间太久,多多少少都有点bug。所以打算整理下,如果您按照此过程有啥bug,欢迎交流~

其他系统、内核换的过程大同小异。SDK的安装这里推荐用Android studio下载,因为AS可以更好的管理SDK的更换,以及模拟器的选择等。
先说下我的配置。
实体机系统:Win10 64位
虚拟机系统:Ubuntu18.04 64位
目标android版本:Android7.1.1 x86_64
待移植内核版本:android-goldfish-3.10-n-dev

本来想本着简单的风格记录下,但是换位思考后觉得还是在中间加了很多图,所以导致篇幅太长。见谅-_-

一、环境准备

0. 硬件准备

由于源码还不小,再加上需要在虚拟机里编译源码,所以尽可能的给虚拟机高点配置,这里建议硬盘100G+,内存4G+,处理器4c+

1. KVM

由于要用到虚拟机,难免会用到KVM.

  1. 首先保证你的实体机已经使能Virtual Technology 功能,这里注意,由于BIOS不同,有的主板对这个功能的命名不同,比如我的技嘉主板命名为SVM Mode,
  2. 虚拟机使能虚拟化功能如下图。(这里以Vmware为例)

保证在Ubuntu里kvm测试通过,如下

wz@ubuntu:~$ kvm-ok
INFO: /dev/kvm exists
KVM acceleration can be used

2. 源码准备

2.1 goldfish

保证git提前配置好,这里就略过去了。直接在官方源或者镜像源pull即可。(自选其一)(废话:建议把关于android的源码、linux源码、等放到一个文件里)

# 官方源(自备梯子)
git clone https://android.googlesource.com/kernel/goldfish.git# 镜像源 (中科大)
git clone git://mirrors.ustc.edu.cn/aosp/kernel/goldfish.git # 镜像源 (清华)
git clone https://aosp.tuna.tsinghua.edu.cn/kernel/goldfish.git

下载后,在goldfish文件夹里checkout到指定分支,如下

cd ~/Desktop/goldfish
# 查看所有分支
git branch -a
# 切换到指定分支
git checkout remotes/origin/android-goldfish-3.10-n-dev

2.2 交叉编译工具

由于我们用的x86_64交叉编译的工具,这里提供了gitee的repo,这里多说一句,由于需要拉的东西很大,很多官方的源拉资源很慢,所以推荐国内的gitee,遇到大的项目,gitee是个不错之选。

# prebuilts/gcc/linux-x86/x86/x86_64-linux-android-4.9
git clone https://gitee.com/wangzhe8889/prebuilts_gcc_linux-x86_x86_x86_64-linux-android-4.9.git

这里说些废话,由于我一开始想用arm的内核,但是后来移植内核时模拟器一直黑屏,所以才换了x64,所以当时也找了关于arm的交叉编译工具,这里也分享下。仅供参考。(想移植x86_64直接无视就好^_^)

# prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9
git clone https://gitee.com/wangzhe8889/prebuilts_gcc_linux-x86_aarch64_aarch64-linux-android-4.9.git
# prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9
git clone https://gitee.com/wangzhe8889/prebuilts_gcc_linux-x86_arm_arm-linux-androideabi-4.9.git

下载好后配置变量

# 记事本打开~/.bashrc文件
sudo gedit ~/.bashrc
# 末尾添加
# 这里路径换成你的
export PATH=/home/wz/Desktop/new/prebuilts_gcc_linux-x86_x86_x86_64-linux-android-4.9/bin:$PATH
export ARCH=x86_64
export CROSS_COMPILE=x86_64-linux-android-
export REAL_CROSS_COMPILE=x86_64-linux-android-# 使能下bash
source ~/.bashrc

3. Android Studio

直接去官网下载即可 ,这里建议直接在VMware虚拟机里打开下载,这样自动识别系统,下载即可。
本地解压后,进入android-studio/bin/目录执行./studio.h即可启动AS
打开后在configure里找到AVD ManagerSDK Manager,如下图


首先说SDK的配置,其实看着下载就行,我也是随便下的,因为硬盘空间大,我就都下了,参考我画框的。

再就是AVD的配置了,新建一个安卓虚拟机,随便选一个外观,主要是System Image的选择(见下图),然后记得最后一步的时候在进阶(Advanced)设置中选择冷启动(cold),保证每次都开机清空上次的状态,如果不勾选,可能导致换核失败,表现为换核后还是之前的核(亲测


建好之后就可以自己试着启动下,然后通过adb记录下当前的内核,或者眼瞅法(在setting里看属性)。建议这里记录下,以检查是否换核成功。

adb命令如下:

# 保证虚拟机启动
adb shell
cat /proc/version

老样子,还得先配置下环境变量

# 记事本打开~/.bashrc文件
sudo gedit ~/.bashrc
# 末尾添加
# 这里SDK路径换成你的
export ANDROID_HOME=/home/wz/Desktop/Android/Sdk
export PATH=$ANDROID_HOME/emulator:$PATH
# 修改后使能下bash
source ~/.bashrc

4. Java

虽然不知道有啥用,看着别人都配置,也就跟着了,不知道不配置是不是也可以,有缘人可以试下,哈哈

sudo apt-get install openjdk-8-jdk
# 查看java版本
java -version

二、编译内核

编译内核就很简单了,你会发现前戏几小时,正片几分钟完事。
保证以下命令在你goldfish文件夹内运行。路径根据自己的对应修改

# 指定到输出路径,方便查看,保证文件夹存在
make ARCH=x86_64 O=../out_7_1 x86_64_ranchu_defconfig# make 线程的选择看你自己
make ARCH=x86_64 O=../out_7_1/ -j64# 先保证 可以命令行启动
emulator -avd Android7_1_1# 指定内核,搞定,注意路径
emulator -avd Android7_1_1 -kernel /home/wz/Desktop/new/out_7_1/arch/x86/boot/bzImage

启动后,adb查看内核版本
成功换核后用户会变成Ubuntu用户名称如下:

generic_x86_64:/ $ cat proc/version
Linux version 3.10.0+ (wz@ubuntu) (gcc version 4.9 20140827 (prerelease) (GCC) ) #3 SMP PREEMPT Sun Aug 23 13:04:59 PDT 2020

就酱,芜湖~

成功的就麻烦点个赞吧,失败的bug贴出来,讨论一波~

Android Linux换核 + goldfish环境搭建相关推荐

  1. 高版本Android真机逆向测试环境搭建

    高版本Android真机逆向测试环境搭建 618购入了新机Xiaomi K50,真滴便宜又好用,续航很强界面很丝滑.正好拿来做逆向测试机? 怎么可能!这也太奢侈了!不过淘汰的Xiaomi Note 7 ...

  2. Android资源总结(开发工具/环境搭建/教程/论坛/博客/反编译工具)

    Android资源总结(开发工具/环境搭建/教程/论坛/博客/反编译工具) 在Android发展前景相当好的情况下,本人最近搜集了一些关于Android的相关资源,当然包含以前发布的博客内容,进行了一 ...

  3. Linux 0.11 实验环境搭建与调试

    缘起 之前我写过一篇博文:Linux 0.11 实验环境搭建 本以为有了这个环境(gcc-3.4 & gdb-6.8),就可以调试无忧了.谁知遇到了以下问题: (1)用 gdb 调试 main ...

  4. Linux下服务器基本环境搭建步骤详解(三种软件安装方式)

    Linux下服务器基本环境搭建 小伙伴们注意看:下面使用三种方式分别安装JDK.Tomcat.Docker进行演示 操作系统基于CentOs7. 文章目录 Linux下服务器基本环境搭建 前言 一.L ...

  5. 【原作者:吴秦(Tyler)http://www.cnblogs.com/skynet/archive/2010/04/12/1709892.html】Android开发之旅:环境搭建及HelloWo

    Android开发之旅:环境搭建及HelloWorld 2010-04-12 00:45 by 吴秦, 801360 阅读, 138 评论, 收藏, 编辑 --工欲善其事必先利其器 引言 本系列适合0 ...

  6. 嵌入式Linux下的Qt环境搭建

    嵌入式Linux下的Qt环境搭建 本文介绍如何在嵌入式Linux开发板上配置Qt运行环境,并进行Qt程序运行测试 一.tslib编译 要想Qt 支持触摸需要编译 tslib ,以生成触摸相关插件. t ...

  7. linux虚拟机VMware centos环境搭建

    linux虚拟机VMware centos环境搭建 一.虚拟机 二.安装流程 三.linux环境下使用命令规则 1.常见的命令 2.与xshell连接 四.总结 一.虚拟机 虚拟机的意思就是说在我们的 ...

  8. Linux 下ffmpeg的环境搭建与安装

    Linux下ffmpeg的环境搭建与安装 背景 [FFmpeg是什么] 1· FFmpeg是一套可以用来记录.转换数字音频.视频,并能将其转化为流的开源软件.采用LGPL或GPL许可证,提供了录制.转 ...

  9. Linux下Java开发环境搭建

    最近刚开始玩Linux,搞开发搭建环境是第一步,于是总结了这篇Linux下Java开发环境搭建的博客,记录一下我爬过的坑. 一.JDK的下载 jdk8官方下载地址:http://www.oracle. ...

最新文章

  1. 初学MyBatis-Plus
  2. Vivado下生成及烧写MCS文件
  3. j2ee html5,HTML5+J2EE实现文件异步上传
  4. 一文详解超参数调优方法
  5. python pyqt5安装_Python3 安装PyQt5及exe打包图文教程
  6. Win11如何跳过开机更新 Win11跳过开机更新教程
  7. 排序 -> 选择排序
  8. 初学网站建设,要学习些什么?
  9. php函数收集参数,DELL 14G服务器 对应 金牌银牌铜牌铂金CPU 参数简单汇总
  10. Excel转html
  11. linux man手册更新,linux man手册介绍【manual】
  12. Android 插件化原理(三),通过hook启动插件Activity,修改Resources,调用插件资源
  13. DISCUZ!X1模板home空间模板修改说明home.php
  14. sqrt函数java_Java BigDecimal sqrt()用法及代码示例
  15. 工程师思维的核心 |《转向:用工程师思维解决商业难题》
  16. loj 1224 - DNA Prefix
  17. 成都拓嘉辰丰电商:拼多多全店推广的作用
  18. EasyExcel基本使用-简单导入
  19. linux系统结束vim进程的指令,Linux/Vim命令(持续更新)
  20. 教你如何在机器学习竞赛中更胜一筹

热门文章

  1. Java 线程池(ThreadPoolExecutor)原理分析与使用 – 码农网
  2. java(八) —— 线程安全与线程池问题
  3. 汽车诊断中常说的DTC是什么?
  4. LTS 轻量级分布式任务调度框架(Light Task Schedule) - 推酷
  5. 测绘技能大赛-无人机航测虚拟仿真(外业部分)
  6. 便携式医疗电子将科幻场景搬进生活
  7. 怎样设置苹果HomePod扬声器?
  8. linux实验报告山东科技大学,-linux程序设计实验报告
  9. Hive-窗口函数/开窗函数(重点理解~~~)
  10. 创建一个像人类一样的神经网络来诊断肺癌