独奏一曲丶半步调吧 关注:14贴子:3,521
  • 5回复贴,共1

简单的刷机脚本命令编写与剖析

只看楼主收藏回复

此篇文章为转载,因全文排版有些问题,加上有些命令较不完善。所以本人修复了一下- -
什么是刷机脚本?为什么rom 是一个zip文件,确可以直接刷入?
为什么大家可以轻松做出补丁包,然后也可以刷入?
为什么我直接把文件做成一个 zip包,却不行?
因为zip包中有刷机脚本
刷机脚本都在哪儿呢? 细心的会发现,每一个软件或者刷机包,或者补丁包,都有一个目录,META-INF
如果你动一个软件的刷机脚本,就是动了他的签名文件,必须重新签名
(签名和给软件一样,简单的很,自己搜下)。
所以,CERT.RSA CERT.SF MANIFEST.MF 就没用了,先删除,签名之后生成新的。
我们要修改的东西主要是META-INF-com-google-update-script(路径)


IP属地:吉林1楼2013-06-12 22:12回复
    首先打开META-INF-com-google-update-script这个文件。
    这里推荐用notepad++ 软件打开。(以文本编辑的方式打开就可以了)

    这里以华为U8825D的刷机脚本做一个剖析- -
    首先show_progress(0.1, 0);的意思就是 控制刷机时间和进度条,0.1,0是10%,如果这里改成0.2,0那么就会显示20%,


    IP属地:吉林2楼2013-06-12 22:19
    回复
      第二句,ui_print("u8825d by 376170361..");作用就是在你recovery刷机的时候显示 ui_print("u8825d by 376170361..");引号内的内容可以自己随便修改。

      例如改成我这样也可以


      IP属地:吉林3楼2013-06-12 22:21
      回复
        第三句:
        fount("ext4", "EMMC", "/dev/block/mmcblk0p17", "/system");(挂载system分区)
        mount("ext4", "EMMC", "/dev/block/mmcblk0p18", "/data"); (挂载data分区)
        这段话的意思是挂载分区,因为要往里面写入东西,当然需要先挂载,才能写入,对应的最后有一句是 卸载system分区unmount("/system"); 这是刷完机之后的。


        IP属地:吉林4楼2013-06-12 22:24
        回复
          第四句
          package_extract_dir("system", "/system");
          package_extract_dir("data", "/data");
          symlink("busybox", "/system/xbin/[", "/system/xbin/[[",
          真正起作用把文件刷入 系统中的是这句package_extract_dir("system", "/system"); 意思就是 把刷机包中的system文件夹 复制到你手机的system中文件夹中。
          PS:system文件夹下有很多附属文件夹
          http://tieba.baidu.com/p/2366053642?see_lz=1
          具体请看此链接


          IP属地:吉林5楼2013-06-12 22:29
          回复
            第六句依旧是一个整体
            刷入了这么多文件,有些文件需要改动权限。所以要用到以下命令
            下面的set_perm_recursive 是给文件夹赋予相应的权限,以后自己做包的时候可以直接参考下面的内容。
            set_perm 是给文件赋予权限。大家自几看下不同文件夹和文件需要的权限,看到下面的数字是不是不懂什么意思?
            读r=4写w=2执行x=1对应的数相加 就是相应的权限。
            set_perm_recursive(0, 0, 0755, 0644, "/system");
            set_perm_recursive(0, 2000, 0755, 0755, "/system/bin");
            set_perm(0, 3003, 06755, "/system/bin/ip");
            set_perm(0, 3003, 02750, "/system/bin/netcfg");
            set_perm(0, 3004, 02755, "/system/bin/ping");
            set_perm(0, 2000, 06750, "/system/bin/run-as");
            set_perm_recursive(1002, 1002, 0755, 0440, "/system/etc/bluetooth");
            set_perm(0, 0, 0755, "/system/etc/bluetooth");
            set_perm(1000, 1000, 0640, "/system/etc/bluetooth/auto_pairing.conf");
            set_perm(3002, 3002, 0444, "/system/etc/bluetooth/blacklist.conf");
            set_perm(1002, 1002, 0440, "/system/etc/dbus.conf");
            set_perm(1014, 2000, 0550, "/system/etc/dhcpcd/dhcpcd-run-hooks");
            set_perm(0, 2000, 0550, "/system/etc/init.goldfish.sh");
            set_perm_recursive(0, 0, 0755, 0555, "/system/etc/ppp");
            set_perm_recursive(0, 2000, 0755, 0644, "/system/vendor");
            set_perm(0, 2000, 0755, "/system/vendor/lib");
            set_perm_recursive(0, 2000, 0755, 0755, "/system/xbin");
            set_perm(0, 0, 06755, "/system/xbin/su");
            show_progress(0.200000, 10);
            ui_print("Updating BOOT Image...");(刷入BOOT内核)
            package_extract_file("boot.img", "/dev/block/mmcblk0p12");
            ui_print("Updating cust partition...");
            format("ext4", "EMMC", "/dev/block/mmcblk0p16", "0");
            mount("ext4", "EMMC", "/dev/block/mmcblk0p16", "/cust");
            package_extract_dir("cust", "/cust");
            show_progress(0.1, 0);
            unmount("/system");(卸载system分区 )
            unmount("/cust");(卸载cust分区 )
            ui_print("Installation complete!");(安装结束)


            IP属地:吉林7楼2013-06-12 22:43
            回复