分享

刷szb,刷zip,刷img,以及修改img的一些参考

 guitarhua 2014-06-28
本帖最后由 Timan 于 2013-4-17 12:46 编辑

刷szb:
外置SD卡建立sdfuse目录,
把.szb文件放到sdfuse目录,
关机,
按住“音量+ ”开机,
在选择界面用音量键切换到SD UPDATE,
然后按电源键确认即可。

可以用于刷各种官方固件和民间重新打包的szb固件,以及MIUI/CWM recovery和充电长按补丁。

刷img:
需要fastboot.exe,然后丢到adb.exe所在目录,只需记住下面几条命令就行,其他的意义不大就不介绍了。
  1. fastboot flash boot boot.img //把boot.img刷入到系统,替换内核神码的
  2. fastboot flash recovery recovery.img //把recovery.img刷入系统,替换recovery
  3. fastboot flash cpimage cpimage.img //更换基带,把cpimage.img刷入到系统替换基带
  4. fastboot reboot  //如果刷入OK,输入这个直接让手机重启。

复制代码
需要注意的是,fastboot的驱动跟各种手机助手一般情况下使用的驱动不同,正确的操作方式如下:
关机,
按住“音量+”开机,
选择USB UPDATE,
连接电脑后,系统会提示安装android 1.0的驱动,这时候请上豌豆荚搞定,
然后运行fastboot命令刷入你想要的img即可。
(如果你看了这段话感觉一头雾水,那说明你不应该折腾这个)
(对于各种一键更换××失败的人来说,你们应该查看工具包内的bat,然后手动进行fastboot flash 操作)

刷zip
刷zip的前提是MIUI或者CWM recovery吧,没有看到基于官方recovery的zip包呢。
MIUI可以触屏操作,CWM不支持触屏,需要用音量上下键来选择。
其实没什么好说的,找到刷机包的zip后确定刷入即可。



============上面的就差不多了=================
下面有一些深度折腾的步骤。
本来linkscue有一个工具包的,但是集成度越高,外行就越难看懂。
所以我下面这部分算是拆轮子,对于想研究的人来说,这样可以更容易判断问题所在。

想要折腾内核的,Linux是必需的:
Ubuntu 12.10下要安装如下额外的软件包:
sudo apt-get install make
sudo apt-get install gcc (vmware tools 所需)
sudo apt-get install  libncurses5-dev(make menuconfig配置内核所需)

szb的解压
  1. leszb -x szbfile
复制代码
解压後可以得到各种img文件。

system.img的修改
  1. simg2img system.img system //处理system.img,得到一个叫做system的ext4文件系统数据块(如同iso一样)。
  2. mkdir systemmt
  3. sudo mount system systemmt //创建systemmt目录,把system这个ext4数据块挂载到systemmt目录。
  4. sudo chmod -R 755 ./systemmt //递归处理,把systemmt的目录内的文件权限都修改成755——否则system内有些文件的权限是root,会无法打开
复制代码
如果你跟我一样,Linux并不是很灵光,可以sudo tar -czf  systemdir.gz ./systemmt
然后把生成的 systemdir.gz拷贝到Windows下解压修改。
重新打包system.img部分暂缺,因为我没试过。

boot.img的修改


解压:
split_boot.img.pl  boot.img
本命令会生成boot.img-ramdisk.gz(initrd)和boot.img-kernel(内核)。

内核的编译——生成自己的zImage :
http://bbs./t-235372-1-1.html


initrd部分的修改
解压之前要先跳过64 byte的文件头才能得到一个正常的gz文件。
dd if= boot.img-ramdisk.gz of=ramdisk.gz bs=64 skip=1即可



(感谢linkscue的工具)
生成的ramdisk.gz就可以直接用归档管理器解压并编辑内容。

编辑完成后,进入initrd的文件夹,在文件夹内运行:
find . | cpio -o -H newc | gzip >../newramdisk.gz
即可生成一个新的newramdisk.gz

然后需要在这个newramdisk上重新加上文件头,好让系统把这个东西当作ramdisk
命令是./mkimage -A arm -O linux -T ramdisk -C none -a  0x40800000 -n "ramdisk" -d newramdisk.gz ramdisk_OK.gz
用这个命令处理之后,虽然文件大小几乎没变,但是文件信息有了很大的不同:
u-boot legacy uImage, ramdisk, Linux/ARM, RAMDisk Image (Not compressed), 1241096 bytes, Wed Apr 17 12:30:42 2013, Load Address: 0x40800000, Entry Point: 0x40800000, Header CRC: 0x8CCCB6AA, Data CRC: 0x3E47689F

然后就可以用我们的zImage和新的ramdisk一起重新打包成img
  1. mkbootimg --kernel zImage --ramdisk ramdisk_OK.gz --base 0x10000000 -o boot_new.img。
  2. //把zImage作为kernel,ramdisk_OK.gz作为initrd。base这部分一直是0x10000000,-o选项指定输出文件的名称。
复制代码
搞定后可以把boot_new.img拷贝到Windows下,fastboot flash boot boot_new.img即可刷入测试效果。

为防止悲剧,请在测试自己的内核之前备份原有的boot.img:
  1. dd if=/dev/block/mmcblk0p8    of=/sdcard/boot.img     bs=4096 count=5112 //把原boot.img备份到sd卡里。
复制代码
如果可耻的失败了可以刷原来的boot.img恢复。



工具放这里
http://pan.baidu.com/share/link?shareid=402475&uk=3657498617
有fastboot.exe和两个recovery的szb。
leszb目录包含了所有Linux下面的工具。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多