android内核源码下载和编译
1、下载编译
新建kernel目录
~/srcAndroid/src4.4.4_r1/kernel目录下,输入命令:
seven@ThinkPad:~/srcAndroid/src4.4.4_r1/kernel$ git clone https://aosp.tuna.tsinghua.edu.cn/kernel/msm.git
下载msm版本的内核,下载完毕后,有文件夹msm
cd msm
git branch -a
git checkout remotes/origin/android-msm-hammerhead-3.4-kitkat-mr2
export PATH=$PATH:/home/seven/srcAndroid/src4.4.4_r1/prebuilts/gcc/linux-x86/arm/arm-eabi-4.7/bin:$PATH
export ARCH=arm
export SUBARCH=arm
export CROSS_COMPILE=arm-eabi-
make hammerhead_defconfig
//make menuconfig
make -j4
我是用的ubuntu16.04 64位系统
//编译内核linux-3.0.1?
出现如下错误:
Can't use 'defined(@array)' (Maybe you should just omit the defined()?) at kernel/timeconst.pl line 373.
/opt/ARM/mini6410/linux/linux-2.6.38/kernel/Makefile:140: recipe for target 'kernel/timeconst.h' failed
make[1]: *** [kernel/timeconst.h] Error 255
Makefile:916: recipe for target 'kernel' failed
make: *** [kernel] Error 2
解决方法:
这样处理
删除
@val = @{$canned_values{$hz}};
if (!defined(@val)) {
@val = compute_values($hz);
}
output前面加入
$cv = $canned_values{$hz};
@val = defined($cv) ? @$cv : compute_values($hz);
make -j4 成功!
生成的内核文件为zImage-dtb
seven@ThinkPad:~/srcAndroid/src4.4.4_r1/kernel/msm/arch/arm/boot$ ls -lt
total 31120
-rw-rw-r-- 1 seven seven 8405832 6月 19 15:00 zImage-dtb
-rwxrwxr-x 1 seven seven 7011504 6月 19 15:00 zImage
drwxrwxr-x 2 seven seven 4096 6月 19 15:00 compressed
-rwxrwxr-x 1 seven seven 17780964 6月 19 15:00 Image
-rw-rw-r-- 1 seven seven 174112 6月 19 12:50 msm8974-hammerhead-rev-f.dtb
-rw-rw-r-- 1 seven seven 174160 6月 19 12:50 msm8974-hammerhead-rev-a.dtb
-rw-rw-r-- 1 seven seven 174164 6月 19 12:50 msm8974-hammerhead-rev-bn.dtb
-rw-rw-r-- 1 seven seven 174196 6月 19 12:50 msm8974-hammerhead-rev-b.dtb
-rw-rw-r-- 1 seven seven 174332 6月 19 12:50 msm8974-hammerhead-rev-c.dtb
-rw-rw-r-- 1 seven seven 174516 6月 19 12:50 msm8974-hammerhead-rev-11j.dtb
-rw-rw-r-- 1 seven seven 174332 6月 19 12:50 msm8974-hammerhead-rev-10.dtb
-rw-rw-r-- 1 seven seven 174516 6月 19 12:50 msm8974-hammerhead-rev-11.dtb
drwxrwxr-x 5 seven seven 12288 6月 19 12:44 dts
-rw-rw-r-- 1 seven seven 1274 6月 19 12:44 install.sh
drwxrwxr-x 2 seven seven 4096 6月 19 12:44 bootp
-rw-rw-r-- 1 seven seven 3641 6月 19 12:44 Makefile
可以替换android源码的对应文件(目录如下),重新编译android源码,刷入手机,或者利用下文中的方法单独替换内核文件,刷入手机
seven@ThinkPad:~/srcAndroid/src4..4_r1/device/lge/hammerhead-kernel$ ls
vmlinux.bz2 zImage-dtb
2、下载工具并替换内核
/home/seven/srcAndroid/src4.4.4_r1/kernel/msm/目录下:
git clone https://github.com/pbatard/bootimg-tools.git
cd bootimg-tools
make
在mkbootimg目录下有两个可执行文件:
unmkbootimg和mkbootimg
将mkbootimg加入path,方便使用
export PATH=$PATH:/home/seven/srcAndroid/src4.4.4_r1/kernel/msm/bootimg-tools/mkbootimg:$PATH
将原来编译好的boot.img解压
seven@ThinkPad:~/srcAndroid/src4.4.4_r1/kernel/msm/bootimg-tools/mkbootimg$ unmkbootimg -i ~/srcAndroid/src4..4_r1/out/target/product/hammerhead/boot.img
kernel written to 'kernel' ( bytes)
ramdisk written to 'ramdisk.cpio.gz' ( bytes) To rebuild this boot image, you can use the command:
mkbootimg --base --pagesize --kernel_offset 0x00008000 --ramdisk_offset 0x02900000 --second_offset 0x00f00000 --tags_offset 0x02700000 --cmdline 'console=ttyHSL0,115200,n8 androidboot.hardware=hammerhead user_debug=31 maxcpus=2 msm_watchdog_v2.enable=1' --kernel kernel --ramdisk ramdisk.cpio.gz -o
~/srcAndroid/src4.4.4_r1/out/target/product/hammerhead/boot.img
用编译好的内核文件替换掉,上面解压出来的kernel文件
seven@ThinkPad:~/srcAndroid/src4.4.4_r1/kernel/msm/bootimg-tools/mkbootimg$ cp ~/srcAndroid/src4.4.4_r1/kernel/msm/arch/arm/boot/zImage-dtb kernel
打包生成新的boot.img
seven@ThinkPad:~/srcAndroid/src4.4.4_r1/kernel/msm/bootimg-tools/mkbootimg$ mkbootimg --base --pagesize --kernel_offset 0x00008000 --ramdisk_offset 0x02900000 --second_offset 0x00f00000 --tags_offset 0x02700000 --cmdline 'console=ttyHSL0,115200,n8 androidboot.hardware=hammerhead user_debug=31 maxcpus=2 msm_watchdog_v2.enable=1' --kernel kernel --ramdisk ramdisk.cpio.gz -o
~/srcAndroid/src4.4.4_r1/out/target/product/hammerhead/myboot.img
3、刷入手机
seven@ThinkPad:~/srcAndroid/src4..4_r1/out/host/linux-x86/bin$ ./adb reboot bootloader
seven@ThinkPad:~/srcAndroid/src4..4_r1/out/host/linux-x86/bin$ sudo ./fastboot devices
072ba3800ae5fd9c fastboot
seven@ThinkPad:~/srcAndroid/src4..4_r1/out/host/linux-x86/bin$ sudo ./fastboot flash boot /home/seven/srcAndroid/src4..4_r1/out/target/product/hammerhead/myboot.img
seven@ThinkPad:~/srcAndroid/src4..4_r1/out/host/linux-x86/bin$ sudo ./fastboot reboot
4、修改源码,过反调试
修改源码文件:
kernel/msm/fs/proc/base.c
kernel/msm/fs/proc/array.c
要修改对以下文件的写入
Status,stat,
修改点:
base.c 第285行改成如下:
else {
if (strstr(symname, "trace")) {
return sprintf(buffer, "%s", "sys_epoll_wait");
}
return sprintf(buffer, "%s", symname);
}
array.c第134行改成如下:
static const char * const task_state_array[] = {
"R (running)", /* 0 */
"S (sleeping)", /* 1 */
"D (disk sleep)", /* 2 */
"S (sleeping)", /* 4 */
"S (sleeping)", /* 8 */
"Z (zombie)", /* 16 */
"X (dead)", /* 32 */
"x (dead)", /* 64 */
"K (wakekill)", /* 128 */
"W (waking)", /* 256 */
};
array.c第187行改成如下:
"Gid:\t%d\t%d\t%d\t%d\n",
get_task_state(p),
task_tgid_nr_ns(p, ns),
pid_nr_ns(pid, ns),
ppid, /*tpid*/0,
cred->uid, cred->euid, cred->suid, cred->fsuid,
cred->gid, cred->egid, cred->sgid, cred->fsgid);
修改完成后,按上面步骤编译内核,刷入系统
android内核源码下载和编译的更多相关文章
- 如何下载android源码与android内核源码
首先,要分清楚,android的源代码和android的内核代码一般是分开的,要分别进行下载. 1.先下载android的源代码.(这里不包括android的内核代码) 下载最新的源代码,一 ...
- android源码下载以及编译自己的ROM
android源码下载以及编译自己的ROM 最近发现kernel.org被墙了,为什么这种网站也能被墙了? 要想下载源码的话,只能绕过去了.下面是我从网上搜索到的一些下载方法: =========== ...
- Android之源码之模块编译和调试
Android之源码之模块编译调试 (一) 进行源码模块修改进行编译的调试 1.首先是从git或者svn上拉一套完整的工程下来,然后全编一下,一般这个时间比较长,大概会得2,3个小时左右, 2,编译成 ...
- Harmony OS 开发避坑指南——源码下载和编译
Harmony OS 开发避坑指南--源码下载和编译 本文介绍了如何下载鸿蒙系统源码,如何一次性配置可以编译三个目标平台(Hi3516,Hi3518和Hi3861)的编译环境,以及如何将源码编译为三个 ...
- Android 7.1.1系统源码下载、编译、刷机-Nexus 6实战
想成为一位合格的Android程序员或者一位Android高级工程师是十分有必要知道Android的框架层的工作原理,要知道其工作原理那么就需要阅读Android的源代码. 想要阅读Android的源 ...
- 【转】Android 4.4源码下载与编译
原文网址:http://www.cnblogs.com/zhx831/p/3550830.html 这篇文章记录了我下载源码和编译的全过程, 全过程参考Android官方文档 1. 下载Android ...
- anroid源码下载和编译
本文是在Ubuntu10.10系统上进行实践的. 1 因为我们需要Android的模拟器,所以需要安装Android的SDK,并创建AVD, 可以一次命名为AVD15,AVD22,AVD23,... ...
- [原创]Nexus5 源码下载、编译、真机烧录过程记录
asop使用清华镜像源https://mirror.tuna.tsinghua.edu.cn/help/AOSP/ 一开始使用每月初始化包的方式因为无法搞定版本的问题,没能通过编译,无奈,老老实实一点 ...
- springFramework 源码学习之源码下载与编译
1.源码下载 Spring已经将源码从svn迁移到了git.对于习惯了svn的人来说依然可以svn checkout,最好checkout到英文路径下,本人中文路径编译不过,具体原因不明,路径: ht ...
随机推荐
- OSG-获取OSG的源代码和第三方库并编译
获取OSG的源代码有很多方式. 这里说下其中的两个地方,第一就是中国的OSG网站http://www.osgchina.org/,这个网站目前应该是由中国西安恒歌科技维护,同时,西安恒歌科技也是一家已 ...
- angular-列表进行添加、编辑等操作时此行变色。
今天接触了一个功能,就是在一个列表中,当你新增或者对第N列进行编辑,删除等操作时这一列会变颜色.让用户对操作了哪行数据更认识更清晰,刷新之后这行的颜色就会消失.我觉得这个很有意思,记录一下.效果如下. ...
- 单词 (Play on Words UVA - 10129 )
题目描述: 原题:https://vjudge.net/problem/UVA-10129 题目思路: 1.明显是判断欧拉路径 2.欧拉路径的两个条件 a.图连通 b.至多为两个奇点,且一个为起点一个 ...
- 78[LeetCode] Subsets
Given a set of distinct integers, nums, return all possible subsets (the power set). Note: The solut ...
- Solium代码测试框架
Solium, 在solid中,Linter用于标识和修复样式&安全问题 //调用测试 solium -d contracts --fix 源代码名称:Solium 源代码网址:http:// ...
- Java学习个人备忘录之继承
继承的好处1. 提高了代码的复用性.2. 让类与类之间产生了关系,给第三个特征多态提供了前提. java中支持单继承,不直接支持多继承,但对C++中的多继承机制进行改良.java支持多层继承. C继承 ...
- lintcode-160-寻找旋转排序数组中的最小值 II
160-寻找旋转排序数组中的最小值 II 假设一个旋转排序的数组其起始位置是未知的(比如0 1 2 4 5 6 7 可能变成是4 5 6 7 0 1 2). 你需要找到其中最小的元素. 数组中可能存在 ...
- lintcode-6-合并排序数组
合并排序数组 合并两个排序的整数数组A和B变成一个新的数组. 样例 给出A=[1,2,3,4],B=[2,4,5,6],返回 [1,2,2,3,4,4,5,6] 挑战 你能否优化你的算法,如果其中一个 ...
- Python 零碎信息-基础 01
1. """ 可以插入多行文字. print """ abC 123' 456''" #单引号, 双引号, 也没有关系 " ...
- 【alpha】Scrum站立会议第4次....10.19
小组名称:nice! 小组成员:李权 于淼 杨柳 刘芳芳 项目内容:约跑app(约吧--暂定) 1.任务进度 2.燃尽图 功能列表 1.登录注册 2.创建跑步计划 3.筛选跑友 4.加一起跑步的人为好 ...