安卓内核编译流程

您所在的位置:网站首页 安卓内核编译升级版本 安卓内核编译流程

安卓内核编译流程

2024-07-07 16:40| 来源: 网络整理| 查看: 265

 部分在编译过程中需要的工具可在资源下载页下载

配置

操作系统:ubuntu10.04 64位;安卓手机:Nexus5;手机Android版本:4.4.4

注意:笔者在完成以下操作时在root权限下进行,建议进入root权限后开始以下操作

Android源码\内核下载及编译

1、 建立编译环境

a)        安装JDK 1.6版本

                        i.             下载jdk-6u27-linux-x64.bin文件

                      ii.             在/usr/lib/目录下新建java文件夹   

mkdir /usr/lib/java

                     iii.             将jdk文件拷贝到java文件夹中,并执行该文件

./jdk-6u27-linux-x64.bin

                     iv.             配置环境变量

gedit /etc/environment

在打开文件中加入下列语句

PATH=”/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/lib/java/jdk1.6.0_27”

JAVA_HOME=/usr/lib/java/jdk1.6.0_27/

CLASSPATH=.:$JAVA_HOME\lib\tools.jar:$JAVA_HOME\lib\dt.jar

                      v.             使修改的环境变量立刻生效

source /etc/environment (重新启动亦可)

                     vi.             查看当前java jdk版本是否为1.6 版本

在终端输入 java –version

若显示为java version “1.6.0_27”则说明jdk 1.6版本安装成功

 

b)        安装ubuntu下特定的工具包

使用apt-get命令来安装特定的工具包

apt-get install git-coregnupg flex bison gperf build-essential \

zip curl zlib1g-devlibc6-dev lib32ncurses5-dev ia32-libs \

x11proto-core-devlibx11-dev lib32readline5-dev lib32z-dev \

libgl1-mesa-devg++-multilib mingw32 tofrodos python-markdown \

libxml2-utils xsltproc

除了用apt-get命令安装特定的工具包之外,可在ubuntu的系统-系统管理-新立得软件包管理器进行查找对应软件包并选择安装或升级 (笔者采取新立得安装方式)。

 

在完成工具包下载后,我们还需要对git版本进行升级

apt-add-repositoryppa:git-core/ppa

apt-get update

apt-get dist-upgrade

 

2、 下载Android源码(编译源码用到了其中的NDK,ADB,交叉编译器,整个编译过程较长时间,编译完成后可开启模拟器)

a)        下载Repo

cd  ~

mkdir bin

PATH=~/bin:$PATH

curl https://storage.googleapis.com/git-repo-downloads/repo> ~/bin/repo

chmod a+x ~/bin/repo

b)        下载Android源码

                        i.             在当前用户的根目录下创建Android平台文件夹

cd  ~

mkdir Android_platform

cd Android_platform

                      ii.             利用repo init下载源码

repo init -uhttps://android.googlesource.com/platform/manifest -b android-4.4.4_r2

在下载过程中会中断要求输入用户的邮箱和用户名

git config –globaluser.email “email@example”

git config --global user.name“your name”

输入认证用户名和邮箱后,输入以下命令重新下载

repo init -uhttps://android.googlesource.com/platform/manifest -b android-4.4.4_r2

repo sync

(若在下载过程中意外中断,可重新输入repo sync从中断点开始重新下载)

                     iii.             执行envsetup脚本

在Android目录下执行以下语句

cd  ~/Android_platform

source./build/envsetup.sh

 

输入lunch语句,选择Android产品类型(笔者默认选择full-eng版本)

lunch full-eng

                     iv.             编译源码

make

或者可选择make –jN语句编译,其中N取决于开发机器的CPU数,每个CPU的核数以及每个核心的线程数(例 make –j4)

注意:若出现段错误,继续make命令即可

 

3、 编译内核代码并烧录到手机

a)        下载Android内核源码

在Android项目文件夹下创建kernel文件夹,并下载内核源码

cd ~/Android_platform/

mkdir kernel

cd kernel

git clone https://android.googlesource.com/kernel/msm.git

注意:由于实验手机设备为Nexus 5,因此我们选择内核代码为msm.git

b)        checkout所选内核版本

cd ~/Android_platform/kernel/msn

git branch –a

git checkoutremotes/origin/android-msm-hammerhead-3.4-kitkat-rm2

c)        修改Makefile文件支持交叉编译器

cd~/Android_platform/kernel/msm/

gedit Makefile

修改Makefile文件下述内容:

export KBUILD_BUILDHOST:= $ (SUBARCH)

ARCH                                    ?= $(SUBARCH)

CROSS_COMPLETE           ?= $ (CONFIG_CROSS_COMPILE : “%” =%)

将后面两行修改为:

ARCH                                    ?= arm

CROSS_COMPLETE           ?= arm-eabi-

修改环境变量识别arm-eabi-

exportPATH=$PATH:~/Android_platform/prebuilts/gcc/linux-86/arm/arm-eabi-4.7/bin

d)        打开内核中支持IO tracer选项

make hammerhead_defconfig

make menuconfig

在此之后,选择弹出的界面框中的kernel hacking->Tracers->Supportfor tracing block IO actions

返回主界面后选择Save an Alternate ConfigurationFile.

e)        编译内核

make –j4

编译成功后可以看到下面的输出:

OBJCOPY  arch/arm/boot/zImage

Kernel:     arch/arm/boot/zImage is ready

CAT           arch/arm/boot/zImage-dtb

Kernel:     arch/arm/boot/zImage-dtb is ready

 

4、 制作boot.img文件

a)        下载bootimg-tools工具

mkdir ~/Android_platform/boot-img

cd ~/Android_platform/boot-img

git clone https://github.com/pbatard/bootimg-tools.git

下载完成后,执行下列语句

cd bootimg-tools/

make

cd cpio/

gcc mkbootfs.c –o mkbootfs –I../include

cd ../..

mkdir android_boot_tools_bin

cd android_boot_tools_bin/

cp../bootimg-tools/mkbootimg/mkbootimg ./

cp../bootimg-tools/mkbootimg/unmkbootimg ./

cp ../bootimg-tools/cpio/mkbootfs ./

cd ../

b)        配置环境变量

gedit /etc/environment

将PATH修改为以下内容:

PATH=”/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/lib/java/jdk1.6.0_27:/root/Android_platform/boot-img/android_boot_tools_bin”

立即执行

source /etc/environment

c)        下载boot.img

下载地址:

https://dl.google.com/dl/android/aosp/hammerhead-ktu84q-factory-ae475293.tgz

在~/Android_platform/boot-img/下新建文件夹original-boot-img

mkdir~/Android_platform/boot-img/original-boot-img

解压该压缩包中的boot.img至~/Android_platform/boot-img/original-boot-img

执行下述命令语句:

cp~/Android_platform/kernel/msm/arch/arm/boot/zImage-dtb~/Android_platform/boot-img/

 

在~/Android_platform/boot-img/android_boot_tools_bin目录下执行:

./unmkbootimg –i boot-img/original-boot-img/boot.img

执行完unmkbootimg后会出现下述语句

kernel written to 'kernel' (8331496bytes)

ramdisk written to 'ramdisk.cpio.gz' (498796 bytes)

 

To rebuild this boot image, youcan use the command:

mkbootimg --base 0 --pagesize 2048--kernel_offset 0x00008000 --ramdisk_offset 0x02900000 --second_offset0x00f00000 --tags_offset 0x02700000 --cmdline 'console=ttyHSL0,115200,n8androidboot.hardware=hammerhead user_debug=31 maxcpus=2 msm_watchdog_v2.enable=1' --kernel kernel --ramdiskramdisk.cpio.gz -o original-boot-img/boot.img

 

执行上述中的”mkbootimg –base 0 –pagesize……………”语句修改为下述语句,并执行

mkbootimg --base 0 --pagesize 2048--kernel_offset 0x00008000 --ramdisk_offset 0x02900000 --second_offset0x00f00000 --tags_offset 0x02700000 --cmdline 'console=ttyHSL0,115200,n8androidboot.hardware=hammerhead user_debug=31 maxcpus=2 msm_watchdog_v2.enable=1' --kernel ~/Android_platform/ boot-img/zImage-dtb --ramdisk ~/Android_platform/boot-img/android_boot_tools_bin/ramdisk.cpio.gz-o ~/Android_platform/boot-img/original-boot-img/boot.img

d)        烧录boot.img

adb start-server

adb reboot bootloader

fastboot flash boot~/Android_platform/boot-img/boot.img

fastboot reboot

 

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3