oneplus 3t twrp3T#求教怎么把twrp recovery换成官方的

后使用快捷导航没有帐号?
其他登录方式
—— 新手入门 ——
—— 智友精华 ——
查看: 1382|回复: 98
在线时间16990 小时最后登录阅读权限150UID1227055注册时间积分35388精华22
有想当版主的可以私信我哦
主题帖子 金币34014 元 智豆4226 点
TWRP Recovery 3.0.3-0 for Oneplus 3
适用于一加手机3的TWRP Recovery
附件下载回复后可见:
游客,如果您要查看本帖隐藏内容请或点击感谢按钮
在线时间107 小时最后登录阅读权限30UID453816注册时间积分937精华0
, 积分 937, 距离下一级还需 263 积分
主题帖子 金币1292 元 智豆191 点
不错,不错。。好东西。多谢分享。
在线时间943 小时最后登录阅读权限35UID2694419注册时间积分1729精华0
, 积分 1729, 距离下一级还需 71 积分
主题帖子 金币1529 元 智豆255 点
呃呃呃额额得得得
在线时间209 小时最后登录阅读权限30UID542588注册时间积分730精华0
, 积分 730, 距离下一级还需 470 积分
主题帖子 金币935 元 智豆189 点
祝大家鸡年大吉吧 给楼主加个鸡腿!
在线时间196 小时最后登录阅读权限20UID491683注册时间积分356精华0
, 积分 356, 距离下一级还需 44 积分
主题帖子 金币972 元 智豆88 点
感谢楼主分享 智友因你而精彩
在线时间113 小时最后登录阅读权限20UID2021084注册时间积分199精华0
, 积分 199, 距离下一级还需 1 积分
主题帖子 金币189 元 智豆4 点
谢谢楼主辛苦了
在线时间0 小时最后登录阅读权限10UID注册时间积分6精华0
, 积分 6, 距离下一级还需 14 积分
主题帖子 金币36 元 智豆14 点
呵呵哒刚刚
在线时间0 小时最后登录阅读权限10UID9422964注册时间积分5精华0
, 积分 5, 距离下一级还需 15 积分
主题帖子 金币49 元 智豆3 点
有没有附带刷入教程呢?
在线时间2 小时最后登录阅读权限15UID注册时间积分53精华0
, 积分 53, 距离下一级还需 47 积分
主题帖子 金币166 元 智豆61 点
顶帖支持一下。
在线时间27 小时最后登录阅读权限35UID注册时间积分1337精华0
, 积分 1337, 距离下一级还需 463 积分
主题帖子 金币6092 元 智豆2336 点
老司机勋章
客户端申请 主题数 ≥ 100或在线时间≥ 500小时或精华帖数 ≥ 10或注册天数≥ 1000
好学生勋章
客户端申请 注册天数≥7并且 发帖数≥30并且 主题数≥3并且 在线时间≥30小时
众测1岁生日勋章
申请众测一周年5款产品自动发放
给你300万勋章
客户端【我的任务】—完成【给你300万】任务
智友主播全程品评锤子新品发布会!有抽奖 有爆料!智能手机教程子分类17490人阅读
android(52)
本教程前半部分讲关于如何编译twrp,后半部分才是讲如何修改完成品的twrp。
源代码下载:
除了主线以外,各分支对应不同的版本,请分别下载
/benjaminwan/TWRP-in-chs
A850 Device配置文件下载
/benjaminwan/twrp_device_pantech_ef49k
A870&&Device配置文件下载
/benjaminwan/twrp_device_pantech_ef52l
一、编译环境
编译需要Linux,推荐使用Ubuntu 64位版,如果你的CPU支持vt-x,则可以在虚拟机里安装,如果不支持,则只能安装在真实的计算机里。
如果是虚拟机,至少分配2G内存和60G硬盘。
本人使用Lubuntu 12.10 64bit。
关于ubuntu的安装、配置、相关知识、命令……,请自行科普,此处略过。
另外编译需要cm9,请参考此篇文章对linux编译需要的支持软件进行安装,并从github上同步cm9代码下来:http://wiki.cyanogenmod.org/w/Build_for_mako
需要注意的是,同步代码使用的命令需要改成
repo init -u git:///CyanogenMod/android.git -b cm-9.1.0
二、编译twrp
1、假设cm9源代码放在/opt/cm9
先把cm9/bootable/recovery这个目录内文件删除。
2、把下载好的中文版twrp源代码放入cm9/bootable/recovery目录
3、把下载好的device配置文件放到cm9/device/pantech/ef49k
4、在/opt/cm9目录下打开终端命令行(ubuntu的话在此目录下按F4键就可以跳出命令行)
输入source build/envsetup.sh回车
输入lunch回车
找到cm_ef49k-eng,并输入前面对应的数字,比如说5,回车
输入make -j3 recoveryimage回车
如果没有问题,则最终文件会生成在cm9/out/target/product/ef49k/recovery.img
5、编译完成后,如果想编译另一个版本twrp,则同样的,替换cm9/bootable/recovery目录下所有文件,再make clean清除已编译的文件,再次重新编译make-j3 recoveryimage。
&----------------------------------------------------------------------------------------------------------------------------------------------
下面是一些配置项:
6、如果你想更改twrp中文字体大小,可以打开cm9/bootable/recovery/minuitwrp/graphics_cn.c
修改此处#include &font_cn_34x34.h&,当前文件夹下的font_cn_aaxaa.h就是不同大小的字体。
7、在device配置文件中选择分辨率配置文件:打开cm9/device/pantech/ef49k/BoardConfig.mk
修改DEVICE_RESOLUTION := 720x1280,注意此处配置的分辨率要对应上一条提到的路径下分辨率文件夹,比如v2.4.1.0没有这个分辨率,那么就得从v2.5.0.0中复制过去参照着修改。
8、如果翻译有误,可以修改cm9/bootable/recovery/gui/devices/720x1280/ui.xml
其中720x1280为屏幕分辨率配置文件,其它分辨率没有汉化,请参照720x1280的ui.xml自行汉化
9、关于内核的选择,如果你想换成以K版210内核来编译,那么可以把cm9/device/pantech/ef49k/BoardConfig.mk中的# Kernel 210下面5行去除#符号,再把# Kernel 212下面5行加上#符号,依葫芦画瓢,也可以自行替换成你需要的内核。
10、关于编译用于android4.0系统的twrp,必须要换成kernel158,并且启用#kernel 3.0下的内容,并注释掉# Kernel 3.4下面的内容。需要注意的是,#Kernel 3.0的配置本人只是随手写的,并没有实际测试过,可能内核基地址和ramdisk偏移地址不一定正确,需要自行调整。
11、关于配置更多的备份分区,在cm9/device/pantech/ef49k/BoardConfig.mk最底部
一共只能配置3项,本人已经配置了2项,SP1是基带分区,SP2是rawdata分区(存有IMEI串码)。
SP1_NAME:= &modem&
SP1_BACKUP_METHOD:= image
SP1_MOUNTABLE:= 0
SP2_NAME:= &rawdata&
SP2_BACKUP_METHOD:= image
SP2_MOUNTABLE:= 0
如果还要增加一项,以下作为范例讲解:
SP3_NAME:= &分区名称& #这里的分区名称必须在ef49k/recovery.fstab中已经定义了,否则配置后不会识别到正确的分区内容。
SP2_DISPLAY_NAME:= &显示名称&#此项为可选项,比如分区名称是modem,而显示名称则可以叫做fotamodem,修改后在“备份”菜单里可以看到效果,如果不配置,则显示名称与分区名称相同。
SP3_BACKUP_METHOD:= image或files &#以镜像或文件的形式做备份,如果是ext4格式的分区,比如system分区,可以选择files
SP3_MOUNTABLE:= 0或1& #是否可以挂载,在挂载菜单中可以看到效果。
12、分区配置,ef49k/recovery.fstab,有2种配置方法,可以按分区名来配置,也可以按分区号来配置,如下第一行是按内核自动识别到的分区名来配置,而第二行则是按分区表的分区序号来配置,效果相同
/modem&&&&&&&&&&& vfat&&&&&&&&&& /dev/block/platform/msm_sdcc.1/by-name/modem
/modem&&&&&&&&&&& vfat&&&&&&&&&& /dev/block/mmcblk0p1
获取分区配置信息可以在正常系统下,用re管理器打开/dev/block/platform/msm_sdcc.1/查看都有哪些分区,或者用工具打开备份的分区表并导出分区信息。
这里本人留下了2种配置方式的范例,recovery.fstab为按分区名配置,recovery_old.fstab为按分区号配置.
13、关于格式化内置存储,BoardConfig.mk中
RECOVERY_SDCARD_ON_DATA:= true此项能让twrp识别/data/media内的数据,避免内置存储在清除data时被删除。
14、关于对sd卡分区功能,twrp有对sd卡进行分区的功能,但是为了避免小白对内置存储进行误分区导致黑砖,在BoardConfig.mk中
BOARD_HAS_NO_REAL_SDCARD:= true此项打开后可关闭分区功能。
15、卡刷方式配置,在BoardConfig.mk中
TW_FLASH_FROM_STORAGE:= true此项打开可以允许从当前位置读取zip卡刷包来刷入,如果不配置则会把卡刷包读取到/tmp后再刷入,因为/tmp是虚拟内存,这样的话,大的卡刷包可能造会造成内存不足而无法刷入。
16、配置内外存储挂载点和挂载名称,在BoardConfig.mk中
这个没什么好说的,和正常系统一样就行了。
TW_INTERNAL_STORAGE_PATH:= &/data/media&
TW_INTERNAL_STORAGE_MOUNT_POINT:= &data&
TW_EXTERNAL_STORAGE_PATH:= &/external_sd&
TW_EXTERNAL_STORAGE_MOUNT_POINT:= &external_sd&
17、修改adb设备驱动id,cm9/bootable/recovery/etc/init.rc
write/sys/class/android_usb/android0/idVendor 18D1
write/sys/class/android_usb/android0/idProduct D001(默认值)
因为谷歌官方提供的adb设备驱动没有PID为D001的设备,所以D001会让官方驱动识别不到,得手动强制安装,所以这里就改成了4EE0,让驱动识别成Google Nexus设备
这是驱动里对应的条目;Google Nexus (generic)
%SingleBootLoaderInterface%= USB_Install, USB\VID_18D1&PID_4EE0
18、2.4.4.0以后在设置中增加了屏幕超时项,而且默认是打开的,有些手机屏幕超时自动关闭后却无法再唤醒(A850存在这个问题),所以可以更改默认为关闭状态以避免出现这个问题:
修改recovery/data.cpp
mValues.insert(make_pair(&tw_screen_timeout_secs&, make_pair(&60&, 1)));
60即代表超时的时间,可改为0即可关闭屏幕超时。
而后面的1则代表此项是否存储。
并不是所有人会都提供源代码和配置文件甚至教程……
假设你已经有了一个别人编译好的twrp,且没有源代码和编译配置文件,而你想要修改一些配置或界面文字,该怎么办呢?
需要注意的是CPU不同的机型不可以拿来修改,因为二进制代码不兼容。
CPU相同的手机则可以拿来修改,比如A850K的用于A850L,或A850用于A860(APQ8064),或A840用于A830(MSM8960),或小米2S用于OPPO X909(APQ8064),同型号、同品牌当然最好,不同品牌也是有一定成功率。
1、如果手机品牌、型号不同的话,一定要替换内核。
Recovery.img和boot.img都是由二个部分组成:kernel和ramdisk.gz
其中kernel是编译好的二进制文件,无法再解开修改。
而ramdisk.gz则是打包好的文件,可以再进一步解开更改。
修改工具在这里下载http://download.csdn.net/detail/benjaminwan/5416883
2、首先假设你有一个可用于自己手机的官方recovery或twrp,以及一个想要修改的其它手机的twrp
以下以实例来说明如何解压,操作之前命令行先su取得root权限。
首先把mkbootimg和split_bootimg.pl复制,并与需要处理的recovery.img放在一起。
更改mkbootimg和split_bootimg.pl的执行权限,右键属性,把执行改成任何人。
或者用命令来改权限chmod 777 mkbootimg,注意linux命令区分大小写
然后执行./split_bootimg.pl recovery.img,注意记下内核传递参数console=NULL, androidboot.hardware=qcom user_debug=31msm_rtb.filter=0x3F ehci-hcd.park=3 loglevel=0 vmalloc=0x12c00000
recovery.img-kernel和recovery.img-ramdisk.gz即为解压出来的2个文件
3、修改ramdisk.gz
在当前目录下新建一个ramdisk文件夹
命令行进入这个文件夹,并执行gzip -dc ../*-ramdisk.gz | cpio -i
4、介绍一些ramdisk文件夹下的修改项目:
default.prop文件
ro.secure=0//开启ROOT
ro.debuggable=1//启用USB调试
init.rc文件,修改adb设备驱动id
write/sys/class/android_usb/android0/idVendor 18D1
write/sys/class/android_usb/android0/idProduct D001(默认值)
因为谷歌官方提供的adb设备驱动没有PID为D001的设备,所以D001会让官方驱动识别不到,得手动强制安装,所以这里可以改成4EE0,让驱动识别成Google Nexus设备
这是驱动里对应的条目;Google Nexus (generic)
%SingleBootLoaderInterface%= USB_Install, USB\VID_18D1&PID_4EE0
ueventd.*.rc,有可能会有1~3个文件不等,这是关于内核驱动设备的权限的定义,可以从官方recovery和可用的recovery中解压替换。
fstab.xxx,挂载点定义,可以从官方recovery和可用的recovery中解压替换
/etc/recovery.fstab,分区定义,可以从官方recovery和可用的recovery中解压,但一般官方的会避开某些分区,而第三方的则很多偷懒没有配置,有2种配置方法,可以使用分区名来配置或直接使用分区号来配置,上面讲过了,这里就不再重复。
/res/ui.xml,可以修改界面显示文字,如果你的手机是分辨率的,而要修改的twrp却是720x1280分辨率的,那么可以参考v2.5.0.0源代码的的ui.xml来修改。
5、重新打包ramdisk.gz
在ramdisk目录下执行find . |cpio -o -H newc | gzip & ../ramdisk.gz
会在上一级目录下生成ramdisk.gz
6、重新打包recovery.img
回到初始目录,把你自己手机用的内核改名为kernel复制进来
执行./mkbootimg --cmdline 'console=NULL,androidboot.hardware=qcom user_debug=31 msm_rtb.filter=0x3F ehci-hcd.park=3loglevel=0 vmalloc=0x12c00000' --kernel kernel --ramdisk ramdisk.gz -o myrecovery.img--base 0x --ramdisk_offset
其中’console=xxx’这项可以从解压官方recovery时取得。
--base0x 这是基地址,算法如下图第一个红框数值减去0x8000,即0xx00000
--ramdisk_offset0x ramdisk偏移地址,把第二个红框地址减去基地址,即0xxx
如果这2个地址不会算也不要紧,可以等生成以后,用winhex或ultraedit直接修改。
最后改完后,要保证3个红框中的内容与官方recovery一样。
最后,如果修改不成功,也不要惊讶,不存在绝对能成功的方法。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:274172次
积分:3284
积分:3284
排名:第9152名
原创:60篇
评论:373条
(1)(3)(1)(12)(1)(1)(1)(3)(3)(3)(3)(1)(16)(8)(8)

我要回帖

更多关于 一加3t twrp 的文章

 

随机推荐