最近实验室购买了一个中兴的设备: ZTE Open ,可是我的ZTE Open的系统版本是firefox 1.0。 但是firefox 26的app manager支持的系统版本至少是firefox OS 1.2以上的版本。Firefox OS 1.1死活链接不上。 因此,迫于无奈,只能想办法升级我的设备系统了。
首先想到的便是寻找现成的ROM 进行刷机。从网上找了很多ROM, 可是刷机都不成功。没办法,无奈之下只能自己编译firefox OS 代码进行刷机了。
为避免刷机失败,或者把手机刷成砖头。 刷机之前的前序工作还是要做的。
第一便是要把手机root 掉。 root手机的方法很多,网上的一些安卓的root工具貌似有的可以直接用,我当时好像是用一个叫root大师的软件搞定的。
看论坛上还有一个方法,这个方法好像也可以用:
下载root-zte-open.zip文件包,解压缩后就执行 ./run.sh。(网址:http://pan.baidu.com/s/1MaoV)
当然,要打开手机的开发者模式,adb可以链接得上才行:
settings → Screen lock → Lock Screen → disable
settings → Device information → More Information → Developer → Remote debugging (选择)
settings → Device information → More Information → Developer → Console enabled (选择)
接着要给手机安装一个recovery,备份手机当前系统,以避免刷机失败后可以进行恢复:
下载recovery-clockwork-6.0.3.3-roamer2.img,然后放到SD卡的根目录后执行下列命令
(http://pan.baidu.com/s/11QvLI)
运行:adb shell flash_image recovery /sdcard/cwm.img
如果上述指令运行失败,则可以进入adb shell 之后再su 使用root权限执行:
flash_image recovery /sdcard/cwm.img
运行成功之后,此时recovery边安装好了。
接着进入Recovery的方式是在关机状态下按着音量键上 + 电源键 不放直到进入系统为止
备份系统:
都知道刷机或多或少是有风险的,所以建议用CWM自带的备份功能备份一下系统,以防变砖时可以还原
进入CWM后选择Backup&Restore,然后选择Backup就可以了
接着进行编译系统,然后刷机:
安装编译firefox OS 系统所需要的库文件:
sudo apt-get install –no-install-recommends autoconf2.13 bison bzip2 ccache curl flex gawk gcc g++ g++-multilib gcc-4.6 g++-4.6 g++-4.6-multilib git ia32-libs lib32ncurses5-dev lib32z1-dev zlib1g:amd64 zlib1g-dev:amd64 zlib1g:i386 zlib1g-dev:i386 libgl1-mesa-dev libx11-dev make zip
安装java环境
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java6-installer
sudo apt-get install oracle-java6-set-default
安装adb(也可以下载android的sdk,使用里面的adb):
sudo apt-get install android-tools-adb
USB 串口的一些设置:
sudo echo 'SUBSYSTEM=="usb", ATTR{idVendor}=="19d2", MODE="0666", GROUP="plugdev"' > /etc/udev/rules.d/android.rules
sudo echo 'SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="0666", GROUP="plugdev"' >> /etc/udev/rules.d/android.rules
上面的 “19d2” 代表中兴手机的usb端口, “18d1” 代表google的usb接口,具体信息可以自己从网上查询。
sudo chmod a+r /etc/udev/rules.d/android.rules
sudo service udev restart
编译环境的设置:
export CC=gcc-4.6
export CXX=g++-4.6
ccache –max-size 3GB
下载firefox OS 源码,此处非常耗时间,大概需要四五个小时以上(可以晚上下载,第二天早上编译)
git config –global user.email xxxx
git config –global user.name "yyyy"
git clone git://github.com/mozilla-b2g/B2G.git
下载完毕,以下进行编译:
cd B2G
指定编译系统的版本,如果不指定,则默认编译为firefox OS 1.3, 在之后的刷机过程中你会遇到很多困难,比如can't write userdata.img, system.img等问题。在此指定系统为1.2版本便可以行的通(本人已经实践过了)
注意:运行下一步骤(config.sh) 时一定要把你的手机链接电脑,因为他会自动帮你做一些备份之类的操作,否则有可能运行失败。
BRANCH=v1.2 VARIANT=user ./config.sh inari
BRANCH=v1.2 VARIANT=user ./build.sh #注意在此指定编译系统版本, 我在此使用的是1.2版本。
如果上述操作运行完成,边证明你系统编译成功啦。下面就要进行刷机了。(在此提醒希望把手机进行提前备份)
由于自己编译的系统里面没有boot.img,所以需要下载一个boot.img放到刷机文件中, boot.img的下载地址为:http://sl.edujose.org/2013/10/adapted-boot-image-for-use-with-b2g.html 下载boot_adapted_for_zte_open_commercial_editions.img之后 改名为boot.img 放在B2G/out/target/product/inari/boot.img中即可,如下操作:
cp [location of that binary boot.img] out/target/product/inari/boot.img
下面开始真正的刷机,链接上手机,执行:
./flash.sh
稍等片刻手机边刷机成功。打开手机开机后查看 Device information 手机系统版本便是firefox 1.2系统。
settings → Screen lock → Lock Screen → disable
settings → Device information → More Information → Developer → Remote debugging (选择)
settings → Device information → More Information → Developer → Console enabled (选择)
之后链接firefox的app manager 便可以链接上了。具体链接firefox 26(及以上版本) 的app manager的方法可以从网上参考其他文档。
如果编译firefox过程中出现错误,可以查看我的另一篇关于firefox OS 编译的文档。