android刷内核,完整版刷android内核及定制内核模块攻略
blog.sina.com.cn/s/blog_706845a5010129da.html
终于很恶心的把流程走通了
首先列出需要的东西,从网上搜一下就能搜到了:
———源码类———–
1. kernel source
2. .config文件
———工具类———–
1. 交叉编译器arm-eabi-
2. fastboot,adb等android工具
3. mkbootimg用于解包boot.img使用
———脚本类———–
1. repack-bootimg.pl //不一定需要
2. unpack-bootimg.pl
下面是完整版刷内核及内核模块攻略(基于恶心的Galaxy Nexus)
1. 配置交叉编译器等各种环境
2)写入环境变量中:
export PATH=“/home/xxx/android-toolchain/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin:$PATH”
2. 编译内核
1)修改内核根目录下的Makefile(一劳永逸的方法…):
#ARCH ?= $(SUBARCH)#CROSS_COMPILE ?= $(CONFIG_CROSS_COMPILE:"%"=%)ARCH ?= armCROSS_COMPILE ?= arm-eabi-
2)从手机目录: /proc/下找到config.gz压缩文件,拿出来解压成.config,复制到内核源码根目录下
很多情况下手机中没有config.gz,我们刷了N多的rom加内核才找到一个能正常跑并且里面有这个文件的内核…
但是找到了可以一直使用,即使换了别的rom或者内核也没关系
实在没有的话,看第三步。
3)如果2)成功了,执行make menuconfig,看看该配置是否支持netfilter,如果不支持安下面的选上
To use netfilterNetworking support -> Networking options -> Network packet filtering framework (Netfilter)Choose related choices
如果找到config.gz,执行make tuna_defconfig(这个是默认的德州仪器CPU的配置文件,理论上可用,但是我没有成功),然后同样看netfilter配置
4)执行make -j 2
5)完成编译,得到arch/arm/boot/zImage文件
3. 将zImage扔到手机中
1)从手机中拿出boot.img,或者从刷入手机的rom或kernel中拿也可,总之拿到一个手机在用的boot.img
2)执行前确保各个脚本permission正确,将boot.img,zImage,脚本unpack-bootimg.pl,可执行文件mkbootimg,放于同一个目录下。
3)执行脚本com.sh:(com.sh内容如下),用于将zImage打包进boot.img形成我们自己的kernel:newtestboot.img
./unpack-bootimg.pl boot.imgcd boot.img-ramdisk/find . | cpio -o -H newc | gzip > ../ramdisk-repack.cpio.gzcd .../mkbootimg --kernel zImage --ramdisk boot.img-ramdisk/ramdisk-repack.cpio.gz --base 0x30000000 -o newtestboot.img
4. 手机进入bootloader模式,利用fastboot刷入newtestboot.img
1)$ adb reboot bootloader
2)$ fastboot boot newtestboot.img
若出现permission denied,waiting for devices之类的问题,执行
$ sudo vim /etc/udev/rules.d/51-android.rules
在规则中添加
若出现permission denied之类的错误,执行
$ sudo vim /etc/udev/rules.d/51-android.rules
在规则中添加:
SUBSYSTEM=="usb", ATTRS{idVendor}=="0bb4", MODE="0666"SUBSYSTEM=="usb", SYSFS{idVendor}=="18d1", MODE="0666"
这个的作用是将usb权限以及配置与adb或者fastboot配对,特别是fastboot由于是通过usb线刷的,必须保证usb口是匹配的。
5. 此时不出意外就是完成了内核刷入,下面将内核模块加载进去就简单了
6. 编译内核模块
1)利用我们的内核源码作为头文件,交叉编译器作为编译器来编译内核模块,Makefile文件写法如下:
KERNELDIR := /home/carelife/android_icecream/android_kernel/CyanogenModPWD :=$(shell pwd)ARCH=armCROSS_COMPILE=arm-eabi-CC=$(CROSS_COMPILE)gccLD=$(CROSS_COMPILE)ldobj-m := netCatch.omodules:$(MAKE) -C $(KERNELDIR) ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE) M=$(PWD) modulesclean:$(MAKE) -C $(KERNELDIR) M=$(PWD) clean
7. 加载KM
1)$ adb push /your_kernel_module_position /sdcard/2)$ adb shell#cd sdcard#insmod your_kernel_module_name
8. 查看debug信息
1)$ adb shell dmesg
这个方法的实质是从手机IO缓存中读取print信息,输出到电脑屏幕上,所以是一个固定时间更新的静态查看信息的方法,十分不利于调试
2)等待寻找其他debug方法…
android刷内核,完整版刷android内核及定制内核模块攻略相关推荐
- 高煥堂 5本 Android 的 eBooks (完整版Free)
歡迎下載 高煥堂 5本 Android 的 eBooks (完整版Free): –>>(第二版)此處下載 ☆ 身為架構師,圖形思考能力愈好,創意設計與人際溝通能力就愈好.因此,培養架構師的 ...
- Carson带你学Android:这是一份全面详细的WebView学习攻略
前言 现在很多App里都内置了Web网页(Hybrid App),比如说很多电商平台,淘宝.京东.聚划算等等,如下图 那么这种该如何实现呢?其实这是Android里一个叫WebView组件实现 今天, ...
- 我的世界服务器无限开号,我的世界服务器无限刷物品bug教程 | 手游网游页游攻略大全...
发布时间:2017-06-23 在我的世界服务器中怎么样刷东西呢?怎么样才能刷出大量的物品?今天游戏园小编就为大家带来了我的世界大量无限刷物品的方法,喜欢的朋友快来看看吧,希望大家能够喜欢! 这两种方 ...
- Android Jcenter 依赖完整版
Jcenter 依赖完整版 测试环境: github仓库(码云仓库无法依赖).Jcenter仓库.Android Studio2.2.2.Gradle 2.14.1.TortoiseSVN 1.9.6 ...
- Android USB通讯(完整版)
1.Host端代码: package com.tcl.navigator.hostchart.activity;import android.app.PendingIntent; import and ...
- 收藏 | Android开发从入门到精通系列书籍资料最全攻略!!!(最新更新)
很多人会私信给我提问,问安卓的学习路线是什么,因为之前没有写过系统的路线图,于是近期花了一些时间,把这块的知识,做成一个体系分享给大家,也算是自己在安卓这边做的一份贡献. 关于安卓如何来学习,安卓入门 ...
- Android 深入系统完全讲解(二)音视频理解攻略 PDF
原创PDF |<Android 深入系统完全讲解>,可能价值百万! 最近因为训练营里面,想学习音视频的比较多,当然也有一部分因素是我在给大家讲市场时候,说了,算法和界面,其实是市场的一个底 ...
- 未转变者服务器车怎么得,未转变者刷车指令大全 | 手游网游页游攻略大全
发布时间:2016-05-16 天天飞车应该怎么刷车呢?相信很多玩家都已经会使用烧饼来刷车了,下面小编就给大家介绍一下天天飞车的刷车代码. 标签: 天天飞车 游戏攻略 游戏秘籍 发布时间:2017-0 ...
- 代刷装修音乐代码大全_代刷网音乐代码 | 手游网游页游攻略大全
发布时间:2016-03-19 伤害世界私服怎么刷物品 物品代码怎么用详解.是近期很热门的一款游戏,而有些玩家在游戏中出现了代码不能用,输入指令刷不出东西的情况.有些玩家在私服可能用 ... 标签: ...
最新文章
- MySQL sysdate-5_mysql sysdate 1
- 5G NPN 行业专网 — 媒体行业 5G 专网部署方案
- 人脸口罩检测现开源PyTorch、TensorFlow、MXNet等全部五大主流深度学习框架模型和代码...
- boost::geometry::cross_product用法的测试程序
- LeetCode Algorithm 1925. 统计平方和三元组的数目
- spring核心配置文件引入外部properties文件和另外的xml配置文件
- 20--两个数组的交集
- Software Defined Perimeter白皮书
- SpringMVC @ControllerAdvice 注解的官方解释
- vue可以配合jade以及sass吗_在vue中如何使用Jade模板 - echart
- code换取微信openid_快速实现微信公众号支付功能
- ckplayer6.8 php播放,CKplayer-超酷网页视频播放器 v6.8
- python代码情话_python教你谈恋爱-之-土味情话5000条
- 阿里云IoT | HaaS开源百校科技助力计划 —— 开源大使招募
- 【开工】知道创宇网络安全线上服务指南
- 自己做量化交易软件(12)通通量化AI框架的使用1-与通通AI对话聊天
- 奋斗吧,程序员——第十六章 笑渐不闻声渐悄,多情却被无情恼
- 光和颜料中的三原色,美术中的三原色
- 三个数比大小 输出最大值
- Axure 9.0.0.3699 授权码
热门文章
- 什么是消融实验(Ablation experiment)?
- 杭电Oj--DIY--2021选拔训练赛--1006
- 将Gitbook上的书籍发布在GitHubPages上
- 照片误删了怎么恢复?照片删了回收站也删了怎么找回来
- 使用Visual Studio Code开发Java程序
- 报org.apache.jasper.JasperException错误的一种解决方法
- RFID曼彻斯特编码
- 项目实战教程来了-4412开发板-zigbee智能家居
- Spring Cloud Alibaba 学习笔记
- Java教程:如何申请Java开发微信支付中的必要参数(appid,appsecret,商户号,微信支付密钥)