http://bbs.gfan.com/android-5408130-1-1.html

有人问我,我简单的写一下,来源XDA,运行环境ubuntu 10.4。
ubuntu安装很简单,在windows下安装一个虚拟机vmware或者VirtualBox,网上都有下载,建立一个虚拟机载入ubuntu安装盘镜像就可以了,全中文无难度。
http://www.ubuntu.com.cn/download/(我下载的32位12.04.1,用的内存卡安装,使用imgewriter ImageWriter.zip (19.66 KB) (先将ubuntu.iso改为ubuntu.raw,就是改后缀,然后点击copy)写入内存卡,安装的win7+ubuntu双系统)
下载ext4_utils源码包编译。
ext4_utils.tar (200 KB)
这是我编译好的: make_ext4fs.tar (80 KB)

  • ~/work$ cd ext4_utils
  • ~/work/ext4_utils$ make clean
  • rm -rf *.o make_ext4fs simg2img
  • ~/work/ext4_utils$ make
  • gcc -I. -DANDROID -c make_ext4fs.c
  • gcc -I. -DANDROID -c make_ext4fs_main.c
  • gcc -I. -DANDROID -c ext4_utils.c
  • gcc -I. -DANDROID -c allocate.c
  • gcc -I. -DANDROID -c backed_block.c
  • gcc -I. -DANDROID -c output_file.c
  • gcc -I. -DANDROID -c contents.c
  • contents.c: In function ‘make_directory’:
  • contents.c:118: warning: format ‘%llu’ expects type ‘long long unsigned int’, but argument 4 has type ‘u32’
  • gcc -I. -DANDROID -c extent.c
  • gcc -I. -DANDROID -c indirect.c
  • gcc -I. -DANDROID -c uuid.c
  • gcc -I. -DANDROID -c sha1.c
  • gcc -I. -DANDROID -c sparse_crc32.c
  • gcc make_ext4fs.o make_ext4fs_main.o ext4_utils.o allocate.o backed_block.o output_file.o contents.o extent.o indirect.o uuid.o sha1.o sparse_crc32.o -o make_ext4fs -lz
  • gcc -I. -DANDROID -c simg2img.c
  • gcc simg2img.o sparse_crc32.o -o simg2img
  • ~/work/ext4_utils$

如果有错误/usr/bin/ld: cannot find -lz
就需要安装zlib库,运行:
sudo apt-get install zlib1g-dev
上面这些指令可以不用做,直接用小路编译的ext4_utils就行,在主文件夹下新建文件夹重命名为work(名字随便,最好英文),将ext4_utils解压进work文件夹

把得到的make_ext4fs simg2img 和mkuserimg.sh放在你的工作目录下(就是work/ext4_utils文件夹,不过我是直接将这三个文件及ext4_utils文件夹里的全部内容直接放在了work文件夹根目录,因为开始所有文件放在work/ext4_utils文件夹时候,执行ls命令的时候什么东西都没出现),把固件包里解压出来的factoryfs.img拷贝到工作目录。

运行 simg2img factoryfs.img ZNKG5.img 得到512m的 ZNKG5.img,然后就可以挂载了(运行之前将simg2img的权限改为读写,否则运行不了)。

  • ~/work$ ./simg2img factoryfs.img ZNKG5.img
  • ~/work$ mkdir ZNKG5
  • ~/work$ sudo mount -o loop ZNKG5.img ZNKG5



这样你就可以对固件做修改了,可以root固件,可以精简固件,这里主要提一下权限问题,不要轻易修改这个目录的权限,要保持默认的权限,不然你打包回去会有问题的,这里我举个例子,我准备把su这个文件加到固件的bin目录下,并且修改权限。

  • ~/work/ZNKG5/bin$ sudo cp ~/work/su ./
  • ~/work/ZNKG5/bin$ ls -l su
  • -rwxr-xr-x 1 root root 26264 2011-07-17 21:16 su
  • ~/work/ZNKG5/bin$ sudo chown root.2000 su
  • ~/work/ZNKG5/bin$ ls -l su
  • -rwxr-xr-x 1 root 2000 26264 2011-07-17 21:16 su
  • ~/work/ZNKG5/bin$ sudo chmod 06755 su
  • ~/work/ZNKG5/bin$ ls -l su
  • -rwsr-sr-x 1 root 2000 26264 2011-07-17 21:16 su
  • ~/work/ZNKG5/bin$


打包很简单。
我是这么做的,避免无权限的问题。

  • sudo ./make_ext4fs -l 512M -s -a system ZNKG5-new.img ./ZNKG5
  • Creating filesystem with parameters:
  •     Size: 536870912
  •     Block size: 4096
  •     Blocks per group: 32768
  •     Inodes per group: 8192
  •     Inode size: 256
  •     Journal blocks: 2048
  •     Label:
  •     Blocks: 131072
  •     Block groups: 4
  •     Reserved block group size: 31
  • Created filesystem with 1224/32768 inodes and 125043/131072 blocks

我来解释下这个命令的参数:"
-l 512M"是分区大小,i9100的system分区是512M;
-s就是生成ext4的S模式制作;
"-a system",是指这个img用于android系统,挂载点是/system,使用这个参数,make_ext4fs会根据private/android_filesystem_config.h里定义好的权限来给文件夹里的所有文件重新设置权限,如果你刷机以后发现有文件权限不对,可以手工修改android_filesystem_config.h来添加权限,重新编译make_ext4fs,也可以不使用 “-a system”参数,这样就会使用文件的默认权限。

得到的ZNKG5-new.img 就可以改名成factoryfs.img打包成tar刷机了。

  • move ZNKG5-new.img factoryfs.img
  • tar -cvf pda.tar factoryfs.img

如有错漏请指教,谢谢。

如何做rom,体验做rom过程,附图文教程,感谢各位romer的更多相关文章

  1. 小米2S Mk6.0.1 [只能做测试体验,不能使用]

    上几张高清图片.. 说明: 此版本只能做测试体验,不能做实际使用. 开发者: laser杨万荣 感谢: 秋叶随风ivan, m1cha 及 MoKee Open Source的各位开发者 下载地址:链 ...

  2. 引用 RAM和ROM和Flash ROM的区别

    用 饿狼 的 RAM和ROM和Flash ROM的区别 RAM(Random Access Memory)的全名为随机存取记忆体,它相当于PC机上的移动存储,用来存储和保存数据的.它在任何时候都可以读 ...

  3. 游戏引擎网络开发者的 64 做与不做 | Part 1 | 客户端方面

    摘要:纵观过去 10 年的游戏领域,单机向网络发展已成为一个非常大的趋势.然而,为游戏添加网络支持的过程中往往存在着大量挑战,这里将为大家揭示游戏引擎网络开发者的 64 个做与不做. [编者按]时下, ...

  4. 游戏引擎网络开发者的64做与不做(二A):协议与API

    [编者按]在这个系列之前的文章"游戏引擎网络开发者的64做与不做(一):客户端方面"中,Sergey介绍了游戏引擎添加网络支持时在客户端方面的注意点.本文,Sergey则将结合实战 ...

  5. 产品相关 做产品VS做项目

    做产品VS做项目 by:授客 QQ:1033553122 相关定义 根据GB/T19000—2008<质量管理体系基础和术语>,有以下定义 过程process 一组将输入转化为输出的相互关 ...

  6. 子查询 做where条件 做 from的临时表 ,做select的一个字段 等

    子查询 做where条件 做 from的临时表 ,做select的一个字段 等

  7. hadoop入门篇-hadoop下载安装教程(附图文步骤)

    在前几篇的文章中分别就虚拟系统安装.LINUX系统安装以及hadoop运行服务器的设置等内容写了详细的操作教程,本篇分享的是hadoop的下载安装步骤. 在此之前有必要做一个简单的说明:分享的所有内容 ...

  8. C# Windows Phone 8 WP8 高级开发,制作不循环 Pivot ,图片(Gallery)导览不求人! 内附图文教学!!

    原文:C# Windows Phone 8 WP8 高级开发,制作不循环 Pivot ,图片(Gallery)导览不求人! 内附图文教学!! 一般我们在开发Winodws Phone APP 的时候往 ...

  9. 全网最详细的PLSQL Developer + Oracle client的客户端 或者 PLSQL Developer + Oracle server服务端的下载与安装过程(图文详解)

    不多说,直接上干货! 环境说明: 本地没有安装Oracle服务端,oracle服务端64位,是远程连接,因此本地配置PLSQL Developer64位. Oracle database使用在本机部署 ...

随机推荐

  1. 三、thinkphp

    'URL_PATHINFO_DEPR'=>'-',//修改URL的分隔符 'TMPL_L_DELIM'=>'<{', //修改左定界符 'TMPL_R_DELIM'=>'}&g ...

  2. 网页抓取信息(php正則表達式、php操作excel)

    1.问题描写叙述 实现对固定网页上自己须要的信息抓取,以表格形式存储. 我是拿wustoj上的一个排行榜来练习的,地址:wustoj 2.思路 网页自己就简单学习了一下php,刚好用它来做点事情吧,我 ...

  3. 浅谈NFC、RFID、红外、蓝牙的区别

    很多朋友对NFC和RFID这两个词感到陌生,但是手机经常会出现支持NFC支付,又没太在意,NFC与RFID其实是手机支付的种方式(手机支付也被称作移动支付,是一种允许移动用户使用其移动终端对所消费的商 ...

  4. CMake Error at cmake/boost.cmake:76 (MESSAGE):

    编译mysql5.7.9的时候报错 CMake Error at cmake/boost.cmake:76 (MESSAGE): You can download it with -DDOWNLOAD ...

  5. Thinkphp3.2 PHPMailer 发送 QQ邮箱 163邮箱

    在进入正题这前先看下网易(163)邮箱的服务器地址和端口号 类型 服务器名称 服务器地址 SSL协议端口号 非SSL协议端口号 收件服务器 POP pop.163.com 995 110 收件服务器 ...

  6. IOC控制反转

    IOC是Inversion of Control的缩写,多数书籍翻译成“控制反转”,还有些书籍翻译成为“控制反向”或者“控制倒置”.     1996年,Michael Mattson在一篇有关探讨面 ...

  7. android 开发之hello world!

    http://blog.sina.com.cn/s/blog_4e08922b0100nh6e.html http://blog.csdn.net/poechant/article/details/7 ...

  8. (转)内核container_of(ptr,type,member) 解析

     container_of(ptr,type,member) 用于在已知结构体里面成员member和该成员指针ptr(就是地址)和结构体类型type, 返回该成员所在的结构体的指针(就是地址), 例如 ...

  9. 【BZOJ】1047: [HAOI2007]理想的正方形(单调队列/~二维rmq+树状数组套树状数组)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1047 树状数组套树状数组真心没用QAQ....首先它不能修改..而不修改的可以用单调队列做掉,而且更 ...

  10. bootstrap基础学习五篇

    bootstrap表格 Bootstrap 提供了一个清晰的创建表格的布局.下表列出了 Bootstrap 支持的一些表格元素: 标签 描述 <table> 为表格添加基础样式. < ...