编译安卓系统6.0.1_for_Nexus5x_下载安卓源码以及内核源码
前言
下载源码我已经弄了3天了,刚弄好,国内的清华镜像出现各种503,要不然就是ubuntu系统python不支持https类型,总之各种坑,我也算是踩了个遍.终于,我放弃了国内的镜像,用阿里云的香港服务器下载谷歌官方的代码,弄回来在本地编译源码,这样至少保证源码是全的,不会像国内的镜像503之类的,源码和内核代码下载完110G(纯源码大概不到20G),包括git本地库.开始记录我这几天搞的事情,已填完坑.
我的设备是:Nexus 5x
编译的安卓源码版本为:6.0.1_r67
内核版本:3.10.73 remotes/origin/android-msm-bullhead-3.10-marshmallow-dr1.6
纯源码目录大小,未显示.其中repo文件夹为99G后续我们无需再次更新源码,所以可以删除.#安装好系统后,自行百度,系统使用启用root账户,以下所有命令均在root下执行
#开机后配置软件源 系统版本(Ubuntu16.04)
#一,备份
#cd /etc/apt/
#sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
#二,修改
#sudo vim /etc/sources.list
#将sources.list中全部替换为如下内容
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ trusty main universe restricted multiverse
#三,更新
sudo apt-get update
#启动i386架构
sudo dpkg --add-architecture i386
#更新软件源
sudo apt-get update
#安装依赖程序包
sudo apt-get install -y git flex bison gperf build-essential libncurses5-dev:i386
sudo apt-get install libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev g++-multilib
sudo apt-get install tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386
sudo apt-get install dpkg-dev libsdl1.2-dev libesd0-dev
sudo apt-get install git-core gnupg flex bison gperf build-essential
sudo apt-get install zip curl zlib1g-dev gcc-multilib g++-multilib
sudo apt-get install libc6-dev-i386
sudo apt-get install lib32ncurses5-dev x11proto-core-dev libx11-dev
sudo apt-get install lib32z-dev ccache
sudo apt-get install libgl1-mesa-dev libxml2-utils xsltproc unzip m4
#Ubuntu 16.04请务必使用上面的依赖,Ubuntu 16.04需要的依赖和Ubuntu 14.04所需要的依赖是不同的。
#这是git的邮箱和名称,默认即可
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
#安装JDK 7
sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get install openjdk-7-jdk
#配置环境变量,编辑/etc/profile文件
#openjdk默认安装路径:/usr/lib/jvm/java-7-openjdk-amd64
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
#使脚本生效
source /etc/profile
#检查环境变量:
echo $JAVA_HOME
一、流程
1.找到对应的机型系统[型号请查看关于手机]点我查看(有墙)#我下载的是这个 android-6.0.1_r67 因为我用的是Nexus 5x
#MTC20K android-6.0.1_r67 Marshmallow Nexus 5X
mkdir WORKING_DIRECTORY
cd WORKING_DIRECTORY
mkdir android-6.0.1_r67
cd android-6.0.1_r67
#创建目录,进入目录
mkdir ~/WORKING_DIRECTORY
PATH=~/WORKING_DIRECTORY:$PATH
curl https://storage.googleapis.com/git-repo-downloads/repo -o repo > ~/WORKING_DIRECTORY/repo
chmod a+x ~/WORKING_DIRECTORY/repo
#防止麻烦,编辑 vim ~/.bashrc文件,下面命令加载文件尾部,并重启终端模拟器。
PATH=~/WORKING_DIRECTORY:$PATH
#修改python版本,使用3.7给系统默认python编译器建立新的连接,安装依赖库,否则不支持https
sudo apt-get install openssl libssl-dev
#先下载python3.7
wget http://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz
tar -xvzf Python-3.7.0.tgz
cd Python-3.7.0
./configure
make
sudo make install
make clean
#注:如果要换回python2.7 先删除/usr/bin/python然后这样 ln -s /usr/bin/python2.7 /usr/bin/python
ln -s /usr/local/bin/python3.7 /usr/bin/python
#初始化
repo init -u https://android.googlesource.com/platform/manifest -b android-6.0.1_r67
#创建脚本down.sh,给执行权限chmod 777 down.sh,防止中断下载
#!/bin/bash
repo sync -j8
while [ $? = 1 ]; do
echo “======sync failed, re-sync again======”
sleep 3
repo sync -j8
done
#repo sync -j8 到done 复制新建脚本给权限,然后执行
#执行./down.sh,完成后安卓源码就下载完毕了
2.repo下载源码完毕
3.查找内核版本并下载内核源代码
#git clone https://android.googlesource.com/kernel/common.git
#git clone https://android.googlesource.com/kernel/hikey-linaro
#git clone https://android.googlesource.com/kernel/x86_64.git
#git clone https://android.googlesource.com/kernel/exynos.git
#git clone https://android.googlesource.com/kernel/goldfish.git
#git clone https://android.googlesource.com/kernel/msm.git
#git clone https://android.googlesource.com/kernel/omap.git
#git clone https://android.googlesource.com/kernel/samsung.git
#git clone https://android.googlesource.com/kernel/tegra.git
#goldfish 项目包含适用于所模拟的平台的内核源代码。
#msm 项目包含适用于 ADP1、ADP2、Nexus One、Nexus 4、Nexus 5、Nexus 6、Nexus 5X、Nexus 6P、Nexus 7 (2013)、Pixel 和 Pixel XL 的源代码,可用作使用 Qualcomm MSM 芯片组的起点。
#omap 项目用于 PandaBoard 和 Galaxy Nexus,可用作使用 TI OMAP 芯片组的起点。
#samsung 项目用于 Nexus S,可用作使用 Samsung Hummingbird 芯片组的起点。
#tegra 项目用于 Xoom、Nexus 7 (2012)、Nexus 9,可用作使用 NVIDIA Tegra 芯片组的起点。
#exynos 项目包含适用于 Nexus 10 的内核源代码,可用作使用 Samsung Exynos 芯片组的起点。
#x86_64 项目包含适用于 Nexus Player 的内核源代码,可用作使用 Intel x86_64 芯片组的起点。
#hikey-linaro 项目用于 HiKey 参考板,可用作使用 HiSilicon 620 芯片组的起点。
#与安卓源码根目录同级创建 kernel 目录存放内核源代码
git clone https://android.googlesource.com/kernel/msm.git
#查看所有分支
git branch -a
#我们可以在设置 > 关于手机 > 内核版本 中直接查看内核版本信息
#格式为kernel version-gXXXXXXX,其中 XXXXXXX部分的值是git提交中的short commit id的值
#我的是3.10.73-g4e0bcb3
#我们可以执行git branch -r --contains 4e0bcb3 命令来查看包含 4e0bcb3 commit id 的分支
git branch -r --contains 4e0bcb3
#down代码,
git checkout remotes/origin/android-msm-bullhead-3.10-marshmallow-dr1.6
#执行完,ls一下就看到内核源码了
驱动下一篇文章再讲,以及修改内核达到的so层反反调试脱壳貌似很好用
在浏览的同时希望给予作者打赏,来支持作者的服务器维护费用.一分也是爱~