Android Linux换核 + goldfish环境搭建

文章目录

  • 前言
  • 一、环境准备
    • 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为例)
    Android Linux换核 + goldfish环境搭建_第1张图片

保证在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,如下图

Android Linux换核 + goldfish环境搭建_第2张图片
首先说SDK的配置,其实看着下载就行,我也是随便下的,因为硬盘空间大,我就都下了,参考我画框的。
Android Linux换核 + goldfish环境搭建_第3张图片
再就是AVD的配置了,新建一个安卓虚拟机,随便选一个外观,主要是System Image的选择(见下图),然后记得最后一步的时候在进阶(Advanced)设置中选择冷启动(cold),保证每次都开机清空上次的状态,如果不勾选,可能导致换核失败,表现为换核后还是之前的核(亲测
Android Linux换核 + goldfish环境搭建_第4张图片
Android Linux换核 + goldfish环境搭建_第5张图片
建好之后就可以自己试着启动下,然后通过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,学习)