进入华为EC2106V1机顶盒的Linux root shell
首先这是一款过时的IPTV机顶盒已经被高清机顶盒取代也不再使用这款机顶盒并不是安卓系统折腾意义不算很大所以资料很少我想玩它的时候也没找到资料插上串口发现内核启动后一切静默。研究一晚上后发现了一些办法故写本文分享给大家。我手中的EC2106V1是海思Hi3716MV300理论上别的同芯片相近系统版本可以使用本方法。盒子外观首先想要打断uboot非常简单上电狂按CtrlC直到出现fastboot# 提示符就行。我手中这款盒子的操作系统是Linux2.6。开机没有shell的原因其实很简单因为默认bootargs的串口指向了不存在的接口“ttyABCD”。正确的其实是ttyAMA0。所以如果想临时获取root shell非常简单中断进uboot然后指定串口设备ttyAMA0给内核就可以了fastboot# setenv bootargs mem120M consolettyAMA0,115200 consolettyS0,115200 consolettyABCD,115200 root/dev/romblock3 rootfstypecramfs ro mtdpartshinand:1M(fastboot),1M(partition),6M(boot1),16M(app1),64M(userapp),1M(logo1),1M(param1),1M(playlist1),6M(boot2),16M(app2),1M(logo2),1M(param2),1M(playlist2),12M(swfs),128M0M(whole) mmzddr,0,0x87800000,136M LogBufSize0x80000 extra_ref2 extra_disp0 fastboot# fastboot# fastboot# nand read 0x82000000 0x200000 0x320000 NAND read: device 0 offset 0x200000, size 0x320000 3276800 bytes read: OK fastboot# fastboot# bootm 0x82000000 ## Booting kernel from Legacy Image at 82000000 ... Image Name: Linux-2.6.35.7_hisilicon Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 3073408 Bytes 2.9 MiB Load Address: 80800000 Entry Point: 80800000 Verifying Checksum ... OK Loading Kernel Image ... OK OK Starting kernel ... Uncompressing Linux... done, booting the kernel. Linux version 2.6.35.7_hisilicon (linuxubuntu) (gcc version 4.4.1 (Hisilicon_v200(gcc4.4-290glibc-2.11eabinptl)) ) #366 Mon Dec 16 15:05:35 CST 2013 CPU: ARMv7 Processor [413fc090] revision 0 (ARMv7), cr10c53c7f CPU: VIPT nonaliasing data cache, VIPT nonaliasing instruction cache Machine: godbox Memory policy: ECC disabled, Data cache writeback CPU:Hi3716Mv300, Timer:100M但是这样做有个严重的缺点配置无法固化重启就丢失。此时理论上saveenv就能简单固化但此设备的saveenv命令是损坏的无法写进flash。经过研究设备bootloader里有两个模板mem%dM consolettyAMA0,115200 和mem%dM consolettyABCD,115200 。正常启动永远都是ttyABCD不存在物理接口的假设备所以内核永远都不会有日志和shell。bootloader会解析param分区内system_ok的值3就切换到第二个ttyAMA0模板。所以仅需在param1、2分区里把system_ok1改成system_ok3启动代码就会自己选ttyAMA0。由于机器param分区没有CRC校验所以可以直接改。首先把设备拆了标签下面有一颗螺丝然后撬开后壳里面是一个金属屏蔽罩屏蔽罩上还有一颗螺丝移除它就可以看到串口了。按图片里蓝色线接USBTTL比如CH340的GND绿线接TXD棕线接RXD。接上以后线把CH340连上电脑用PUTTY连接然后给机顶盒通电同时疯狂按键盘的CtrlC打断uboot看到fastboot# 就关掉puttyhttps://gitcode.com/weixin_49350075/EC2106V1-shell/blob/main/fix_uboot_oneclick.py然后按README.md运行此脚本即可。脚本会自动备份两个param分区修改后写入不出意外的话脚本执行完毕断电重启后开机就自动进入Linux shell了。如果提示符是看的不舒服可以执行busybox sh。完