彼此的羁绊 发表于 2014-9-1 14:57

【转】Q5 4核通过TTL ROOT(不用刷机)教程

本帖最后由 彼此的羁绊 于 2014-9-1 15:01 编辑

首先你得有一定的刷机经验,会一些linux基本操作,对安卓系统有一些基本了解。下面开始

首先,你得有一条TTL刷机线,就是那个usb转串口的线,我用的淘宝上面大把的盗版pl2303芯片的,大概10多20元吧,刷机必备。因为是盗版的,所以你不能装太新的驱动,否则会检测出来,驱动不了,我用的是2007年的驱动,在win8.1 64下面可以正常使用。设置成115200 bps,记下相应的COM口,一般是COM3。

打开Q5机器,你可以看到面对显示面板这边,左下角有个白色的6pin 插座。从左边起第一个pin是GND, 第3,4 pin 是RX, TX,至于哪个是rx,tx,我没有深究,不行就交换一下ok。

安装个putty之类的终端软件,打开相应的COM口,然后启动Q5,你可以在终端上看到大量的输出,这期间按Ctrl-C,会在停在一个输入状态,这就是uboot或者fastboot之类的界面,输入help,看到一大堆命令有没有?我们要用到的是setenv, tftp ,bootm。

待续。。。
ok,继续
如果没有按Ctrl-C会怎样呢?当然是继续启动过程,进入系统undefined。好,我们来体验下


你会发现,啥也干不了,只能看着。这是因为系统没有开启Console,所以没有进入shell。所以,下面重点来了
待续。。。

重点就是要让系统开启主控台,这样我们的TTL终端窗口就可以进入shell,怎么开启呢?你猜对了,就是修改固件,确切的说就是修改Boot.img。也许你要问,这个文件是干啥用的呢?这个文件包含了 ramdisk 和 系统的linux kernel,当然kernel我们就不用去改了,我们要改的是ramdisk。晕,怎么写来写去不怎么“粗略”了undefined,既然这样,我就不直接给成品了。ok,说说怎么改。这个文件在官网的升级包里面,我的固件是最新的1.0.2,所以先下载这个固件包
https://www.znds.com/tv-90639-1-1.html
然后,我们要用到一个boot.img的打包解包神器,哪里去找,怎么用呢?当然,万能的百度会告诉你,关键词“bootimg.exe”。

好了,完事具备。
建个目录,把bootimg.exe拷贝进去。
首先解包固件update_qualcore_Q5.zip,把boot.img拷贝到刚才的目录。


[*]E:\fw>dir
[*]2014/08/2314:21    <DIR>          .
[*]2014/08/2314:21    <DIR>          ..
[*]2014/06/1515:16         8,175,616 boot.img
[*]2014/08/2018:06         2,405,677 bootimg.exe




然后

[*]E:\fw>bootimg.exe --unpack-bootimg boot.img
[*]arguments:
[*]bootimg file: boot.img
[*]output: kernel[.gz] ramdisk[.gz] second[.gz]
[*]base=0x3000000
[*]page_size=16384
[*]name=""
[*]cmdline=""
[*]padding_size=16384


解包出来的base, cmdline, page_size, padding_size几个值比较重要,需要记住,等下重新打包的时候要用到。
接下来解包ramdisk


[*]E:\fw>bootimg.exe --unpack-ramdisk
[*]arguments:
[*]ramdisk file: ramdisk.gz
[*]directory: initrd
[*]output: cpiolist.txt


看到目录下多出来一个initrd目录了吧?目录下有个文件叫default.prop,好了,就是他了。用写字板之类的打开,找到ro.debuggable=0这样的,这就是开启Console服务的选项。把0修改成1,然后保存。
下面重新打包ramdisk


[*]E:\fw>bootimg.exe --repack-ramdisk
[*]arguments:
[*]cpiolist file: cpiolist.txt
[*]output: ramdisk.cpio.gz


重新打包boot.img (看下面命令行,后面的参数就是刚才提到要记住的字段。这里有点问题,cmdline为空好像不行,所以乱写个)



[*]E:\fw>bootimg.exe --repack-bootimg 0x3000000 "\0" 16384 16384
[*]arguments:
[*]kernel: kernel
[*]ramdisk: ramdisk.cpio.gz
[*]second:
[*]base: 0x3000000
[*]cmdline: \0
[*]page_size: 16384
[*]padding_size: 16384
[*]output: boot.img


大功搞成,新的boot.img取代了旧的。



[*]E:\fw>dir
[*]2014/08/2314:30    <DIR>          .
[*]2014/08/2314:30    <DIR>          ..
[*]2014/08/2314:32         8,175,616 boot.img
[*]2014/08/2018:06         2,405,677 bootimg.exe
[*]2014/08/2314:26               892 cpiolist.txt
[*]2014/08/2314:26    <DIR>          initrd
[*]2014/08/2314:23         7,826,184 kernel
[*]2014/08/2314:30         321,942 ramdisk.cpio.gz
[*]2014/08/2314:23         322,481 ramdisk.gz



好了,回到最开始,连接TTL,打开putty终端,开机,Ctrl-C,进入fastboot界面

待续。。。。

继续
先看看环境变量


[*]fastboot# pr
[*]bootdelay=1
[*]baudrate=115200
[*]ipaddr=192.168.1.10
[*]serverip=192.168.1.1
[*]netmask=255.255.255.0
[*]bootfile="uImage"
[*]phy_intf=mii,rgmii
[*]use_mdio=0,1
[*]phy_addr=2,1
[*]gmac_debug=0
[*]bootcmd=mmc read 0 0x1FFFFC0 0x4B000 0x5000; bootm 0x1FFFFC0
[*]bootargs=mmz=ddr,0,0,700M mem=2G console=ttyAMA0,115200 blkdevparts=mmcblk0:1M(f                                                                                                                                                             astboot)ro,1M(bootargs)ro,10M(recovery)ro,2M(deviceinfo),8M(baseparam),8M(pqpara                                                                                                                                                             m),20M(logo),20M(logobak),40M(fastplay),40M(fastplaybak),40M(kernel)ro,20M(misc)                                                                                                                                                             ,8M(userapi),8M(qbdrvr),8M(qbflag),300M(qbdata),768M(system),2048M(userdata),100                                                                                                                                                             M(cache),20M(private)ro,-(sdcard)
[*]recoverybootargs=mmz=ddr,0,0,700M mem=2G console=ttyAMA0,115200 blkdevparts=mmcb                                                                                                                                                             lk0:1M(fastboot),1M(bootargs),10M(recovery),2M(deviceinfo),8M(baseparam),8M(pqpa                                                                                                                                                             ram),20M(logo),20M(logobak),40M(fastplay),40M(fastplaybak),40M(kernel),20M(misc)                                                                                                                                                             ,8M(userapi),8M(qbdrvr),8M(qbflag),300M(qbdata),768M(system),2048M(userdata),100                                                                                                                                                             M(cache),20M(private),-(sdcard)
[*]stdin=serial
[*]stdout=serial
[*]stderr=serial
[*]ethaddr=00:66:cf:00:07:07
[*]ver=Fastboot 3.3.0-svn8063 (wukl@ubuntu) (Jul 11 2014 - 17:58:14)
[*]
[*]Environment size: 1067/65532 bytes
[*]fastboot#
[*]


重点说下ipaddr, serverip, bootcmd这3个变量因为这个时候,最方便把boot.img传到机器里面的方法就是通过tftp。所以,我们要先设置下网络环境


[*]ipaddr=192.168.1.10


这个是设置Q5盒子本身的ip地址


[*]serverip=192.168.1.1


这个就是tftp服务器的ip地址,所以你需要设置为你的实际的地址,在这里我的机器是192.168.2.163,所以Q5盒子就相应设置到同一个网段,我用的192.168.2.11,于是,执行如下命令修改这两个环境变量

[*]fastboot# set ipaddr 192.168.2.11
[*]fastboot# set serverip 192.168.2.163
[*]fastboot#
[*]



再说下环境变量bootcmd

[*]bootcmd=mmc read 0 0x1FFFFC0 0x4B000 0x5000; bootm 0x1FFFFC0


这下知道盒子怎么启动了吧?就是先从mmc第0x4B000处把内核读到内存的0x1FFFFC0地址,然后运行bootm从0x1FFFFC0开始运行,启动内核。

我们这里是要启动我们修改好的boot.img,没刷到mmc里面,怎么办呢?那就是要用到的tftp命令。要用tftp,你首先还得在你的电脑上有个tftp服务器才行,我用的是广泛使用的tftpd32.exe,哪里去找呢?还是万能的百度,关键词“tftpd32.exe”,网上大把,自己下载装好,把tftpd32.exe 放到刚才的目录。

[*]E:\fw>dir
[*]2014/08/2316:40    <DIR>          .
[*]2014/08/2316:40    <DIR>          ..
[*]2014/08/2314:32         8,175,616 boot.img
[*]2014/08/2018:06         2,405,677 bootimg.exe
[*]2014/08/2314:26               892 cpiolist.txt
[*]2014/08/2314:26    <DIR>          initrd
[*]2014/08/2314:23         7,826,184 kernel
[*]2014/08/2314:30         321,942 ramdisk.cpio.gz
[*]2014/08/2314:23         322,481 ramdisk.gz
[*]2011/05/0800:05         205,312 tftpd32.exe



运行tftpd32.exe


这下可以从tftp获取boot.img了

[*]fastboot# tftp 0x1FFFFC0 boot.img
[*]ETH0: PHY(phyaddr=1, rgmii) link UP: DUPLEX=FULL : SPEED=1000M
[*]MAC:   00-66-CF-00-07-07
[*]TFTP from server 192.168.2.163; our IP address is 192.168.2.11
[*]Download Filename 'boot.img'.
[*]Download to address: 0x1ffffc0
[*]Downloading: #[ Connected ]
[*]################################      [ 2.888 MB]
[*]################################      [ 5.752 MB]
[*]#######################
[*]done
[*]Bytes transferred = 8175616 (7cc000 hex)
[*]



ok,现在我们终于把改好的内核放到了盒子内存的0x1FFFFC0地址开始处。下面就可以运行了

[*]fastboot# bootm 0x1FFFFC0
[*]
[*]Found Initrd at 0x04000000 (Size 321942 Bytes), align at 16384 Bytes
[*]
[*]## Booting kernel from Legacy Image at 02003fc0 ...
[*]   Image Name:   Linux-3.10.0_s40
[*]   Image Type:   ARM Linux Kernel Image (uncompressed)
[*]   Data Size:    7826120 Bytes = 7.5 MiB
[*]   Load Address: 02000000
[*]   Entry Point:02000000
[*]   Verifying Checksum ... OK
[*]   Loading Kernel Image ... OK
[*]OK
[*]
[*]Starting kernel ...
[*]
[*]Uncompressing Linux... done, booting the kernel.
[*]Booting Linux on physical CPU 0x0
[*]Linux version 3.10.0_s40 (wukl@ubuntu) (gcc version 4.4.1 (Hisilicon_v200(gcc4.4-290+glibc-2.11+eabi+nptl)) ) #2 SMP Fri Aug 1 20:09:00 CST 2014
[*]CPU: ARMv7 Processor revision 1 (ARMv7), cr=10c53c7d
[*]CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
[*]Machine: bigfish
[*]Ignoring unrecognised tag 0x726d6d74
[*]Invalid PDM tag, errno:0
[*]DSP run memory space at 0x02000000, size: 0x00800000 Bytes.
[*]cma: CMA: reserved 700 MiB at 43c00000
[*]cma: CMA: reserved 4 MiB at 43800000
[*]



启动完毕,按下回车,看到了shell提示符,有没有?

[*]130|root@Hi3798CV100:/ #


到这里,基本上就大功告成了,你已经获得了root权限,可以做事了。我这里并未把改好的boot.img 刷到mmc, 你要有兴趣,可以在刚才的fastboot界面,tftp上传完了boot.img后,用mmc write写进去,当然你如果搞错了,把机器写坏了可别怪我哈。

什么?你提到adb?好吧,我再啰嗦下。盒子里面本身是带了一个adbd的,就在固件的sbin目录下,可惜这个不能用,因为这个是user模式的,不能用root身份运行,只能用shell身份运行。所以,你需要一个不工程模式的adbd,而且不会去检查系统选项降低权限的。所以,得需要一个修改过的特别"订制"的adbd。这就麻烦了,你得搭建一个ubuntu linux的安卓开发环境,下载android源代码,配置选项,修改代码,编译,就算你是老手,没有4,5个小时搞不定(我会告诉你我下载了3个多小时,编译了2小时吗)。所以,我还是贡献一个改好的吧。
**** Hidden Message *****
名字改成了adbdz,以便和原来的区分。

接下来就简单了,通过u盘也好,smb也好,你把这个文件保存到盒子上面。比如我是在电脑上面共享出来,用盒子本身的媒体中心-网上邻居访问下,这样盒子就自动smb mount 了。
我是把adbdz放到了/system/bin/下面,/system本身是只读的,所以需要重新mount 下


[*]mount -o rw,remount /dev/block/platform/hi_mci.1/by-name/system /system


这下可写了,



[*]cp /mnt/smb/mountpoint_01/adbdz /system/bin/
[*]


修改下文件权限

[*]chmod 755 /system/bin/adbdz



然后修改/system/etc/init.bigfish.sh,让adbdz可以开机自动启动


[*]echo "\n/system/bin/adbdz &" >> /system/etc/init.bigfish.sh



/system貌似被加了nosuid选项,su命令可能失效,保险起见,开机的时候再mount 下


[*]echo "\n/system/bin/mount -o ro,remount /dev/block/platform/hi_mci.1/by-name/system /system" >> /system/etc/init.bigfish.sh




ok, 重启


[*]adb connect 你的盒子ip
[*]adb shell
[*]root@Hi3798CV100:/ #




好了,开启adb到此就结束。你可以使用坛子里面的那些一键root工具之类的了。

既然审核通过了,那我继续把root管理器的安装也讲一下吧。
1,下载最新版本supersu,
http://download.chainfire.eu/452/SuperSU/UPDATE-SuperSU-v2.02.zip

2,解压,把arm目录下的su拷贝到/system/xbin/,同一目录再复制一个叫daemonsu的,
chmod 4755 /system/xbin/su
chmod 4755 /system/xbin/daemonsu


3,拷贝common目录下的Superuser.apk到 /system/app下面,
chmod 644 /system/app/Superuser.apk

4,echo 1 > /system/etc/.installed_su_daemon

5,添加开机启动daemonsu
echo "/system/xbin/daemonsu --auto-daemon &" >> /system/etc/init.bigfish.sh

6,/system/xbin/su --install

7,reboot

tnchng 发表于 2014-9-3 02:51

强烈支持楼主ing……

yfire 发表于 2014-9-16 11:32

很给力,ZNDS有你更精彩!

herotianya 发表于 2014-9-23 11:52

楼主太厉害了

gldzy 发表于 2014-9-25 23:51

Q5 4核通过TTL ROOT(不用刷机)教程

夜秋 发表于 2014-9-29 08:10

很给力,ZNDS有你更精彩!

0728news 发表于 2014-9-29 13:48

顶!!!!!!!!!!

chunhui35 发表于 2014-10-10 03:34

很给力,ZNDS有你更精彩!

xc920718 发表于 2014-11-7 05:40

精华内容,楼主V5!

crfkkk 发表于 2014-11-11 18:18

这个真是太给力了

wady001 发表于 2014-11-13 08:52

标记一下,也许用的上

xjzzx 发表于 2014-11-13 16:15

小手一抖,金币拿走。

kokuty 发表于 2014-11-20 13:38

kokuty,如果您要查看本帖隐藏内容请回复

liusong 发表于 2014-11-22 22:26

学习学习!

fxblog 发表于 2014-11-24 19:21

哦,貌似很给力的样子..^..
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 【转】Q5 4核通过TTL ROOT(不用刷机)教程