ZNDS智能电视网 推荐当贝市场

TV应用下载 / 资源分享区

软件下载 | 游戏 | 讨论 | 电视计算器

综合交流 / 评测 / 活动区

交流区 | 测硬件 | 网站活动 | Z币中心

新手入门 / 进阶 / 社区互助

新手 | 你问我答 | 免费刷机救砖 | ROM固件

查看: 245009|回复: 124
上一主题 下一主题
[分享]

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

  [复制链接]
跳转到指定楼层
楼主
发表于 2014-9-1 14:57 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 彼此的羁绊 于 2014-9-1 15:01 编辑

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

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

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

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

待续。。。
ok,继续
如果没有按Ctrl-C会怎样呢?当然是继续启动过程,进入系统undefined。好,我们来体验下
【转】Q5 4核通过TTL ROOT(不用刷机)教程

你会发现,啥也干不了,只能看着。这是因为系统没有开启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/23  14:21    <DIR>          .
  • 2014/08/23  14:21    <DIR>          ..
  • 2014/06/15  15:16         8,175,616 boot.img
  • 2014/08/20  18:06         2,405,677 bootimg.exe




然后
  • E:\fw>bootimg.exe --unpack-bootimg boot.img
  • arguments: [bootimg file]
  • 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] [directory]
  • 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 file: cpiolist.txt
  • output: ramdisk.cpio.gz


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


  • E:\fw>bootimg.exe --repack-bootimg 0x3000000 "\0" 16384 16384
  • arguments: [base] [cmdline] [page_size] [padding_size]
  • 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/23  14:30    <DIR>          .
  • 2014/08/23  14:30    <DIR>          ..
  • 2014/08/23  14:32         8,175,616 boot.img
  • 2014/08/20  18:06         2,405,677 bootimg.exe
  • 2014/08/23  14:26               892 cpiolist.txt
  • 2014/08/23  14:26    <DIR>          initrd
  • 2014/08/23  14:23         7,826,184 kernel
  • 2014/08/23  14:30           321,942 ramdisk.cpio.gz
  • 2014/08/23  14: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/23  16:40    <DIR>          .
  • 2014/08/23  16:40    <DIR>          ..
  • 2014/08/23  14:32         8,175,616 boot.img
  • 2014/08/20  18:06         2,405,677 bootimg.exe
  • 2014/08/23  14:26               892 cpiolist.txt
  • 2014/08/23  14:26    <DIR>          initrd
  • 2014/08/23  14:23         7,826,184 kernel
  • 2014/08/23  14:30           321,942 ramdisk.cpio.gz
  • 2014/08/23  14:23           322,481 ramdisk.gz
  • 2011/05/08  00:05           205,312 tftpd32.exe



运行tftpd32.exe
【转】Q5 4核通过TTL ROOT(不用刷机)教程

这下可以从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 [414fc091] 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小时吗)。所以,我还是贡献一个改好的吧。
adbdz.zip (101.93 KB, 下载次数: 230, 售价: 1 金币)
名字改成了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


上一篇:芒果嗨Q HD600A升级海思四核,H.265+4K硬解码,抢券抢购安排
下一篇:芒果嗨Q HD600A四核,4K+H.265硬解,优惠券抢购一空,9.2号继续
沙发
发表于 2014-9-3 02:51 | 只看该作者
强烈支持楼主ing……
回复 支持 反对

使用道具 举报

板凳
发表于 2014-9-16 11:32 | 只看该作者
很给力,ZNDS有你更精彩!
回复 支持 反对

使用道具 举报

地板
发表于 2014-9-23 11:52 | 只看该作者
楼主太厉害了
回复 支持 反对

使用道具 举报

5#
发表于 2014-9-25 23:51 | 只看该作者
Q5 4核通过TTL ROOT(不用刷机)教程
回复 支持 反对

使用道具 举报

6#
发表于 2014-9-29 08:10 | 只看该作者
很给力,ZNDS有你更精彩!
回复 支持 反对

使用道具 举报

7#
发表于 2014-9-29 13:48 | 只看该作者
顶!!!!!!!!!!
回复 支持 反对

使用道具 举报

8#
发表于 2014-10-10 03:34 | 只看该作者
很给力,ZNDS有你更精彩!
回复 支持 反对

使用道具 举报

9#
发表于 2014-11-7 05:40 | 只看该作者
精华内容,楼主V5!
回复 支持 反对

使用道具 举报

10#
发表于 2014-11-11 18:18 | 只看该作者
这个真是太给力了
回复 支持 反对

使用道具 举报

11#
发表于 2014-11-13 08:52 来自ZNDS手机版 | 只看该作者
标记一下,也许用的上
回复 支持 反对

使用道具 举报

12#
发表于 2014-11-13 16:15 | 只看该作者
小手一抖,金币拿走。
回复 支持 反对

使用道具 举报

13#
发表于 2014-11-20 13:38 | 只看该作者
kokuty,如果您要查看本帖隐藏内容请回复
回复 支持 反对

使用道具 举报

14#
发表于 2014-11-22 22:26 | 只看该作者
学习学习!
回复 支持 反对

使用道具 举报

15#
发表于 2014-11-24 19:21 | 只看该作者
哦,貌似很给力的样子..^..
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|新帖|标签|软件|Sitemap|ZNDS智能电视网 ( 苏ICP备2023012627号 )

网络信息服务信用承诺书 | 增值电信业务经营许可证:苏B2-20221768 丨 苏公网安备 32011402011373号

GMT+8, 2024-4-20 13:34 , Processed in 0.081788 second(s), 16 queries , Redis On.

Powered by Discuz!

监督举报:report#znds.com (请将#替换为@)

© 2007-2024 ZNDS.Com

快速回复 返回顶部 返回列表