分享

【新提醒】★★★我的解包和打包i9100固件factoryfs.img办法★★★,三星 I9100 /Galaxy S II 安卓论坛

 昵称12142552 2013-07-30
本帖最后由 xiao1u 于 2012-10-5 16:07 编辑

有人问我,我简单的写一下,来源XDA,运行环境ubuntu 10.4。
ubuntu安装很简单,在windows下安装一个虚拟机vmware或者VirtualBox,网上都有下载,建立一个虚拟机载入ubuntu安装盘镜像就可以了,全中文无难度。
http://www./download/

下载ext4_utils源码包编译。
ext4_utils.tar (200 KB)
这是我编译好的:
make_ext4fs.tar (80 KB)
  1. ~/work$ cd ext4_utils
  2. ~/work/ext4_utils$ make clean
  3. rm -rf *.o make_ext4fs simg2img
  4. ~/work/ext4_utils$ make
  5. gcc -I. -DANDROID -c make_ext4fs.c
  6. gcc -I. -DANDROID -c make_ext4fs_main.c
  7. gcc -I. -DANDROID -c ext4_utils.c
  8. gcc -I. -DANDROID -c allocate.c
  9. gcc -I. -DANDROID -c backed_block.c
  10. gcc -I. -DANDROID -c output_file.c
  11. gcc -I. -DANDROID -c contents.c
  12. contents.c: In function ‘make_directory’:
  13. contents.c:118: warning: format ‘%llu’ expects type ‘long long unsigned int’, but argument 4 has type ‘u32’
  14. gcc -I. -DANDROID -c extent.c
  15. gcc -I. -DANDROID -c indirect.c
  16. gcc -I. -DANDROID -c uuid.c
  17. gcc -I. -DANDROID -c sha1.c
  18. gcc -I. -DANDROID -c sparse_crc32.c
  19. 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
  20. gcc -I. -DANDROID -c simg2img.c
  21. gcc simg2img.o sparse_crc32.o -o simg2img
  22. ~/work/ext4_utils$

复制代码
如果有错误/usr/bin/ld: cannot find -lz
就需要安装zlib库,运行:
sudo apt-get install zlib1g-dev


1.jpg

把得到的make_ext4fs simg2img 和mkuserimg.sh放在你的工作目录下,把固件包里解压出来的factoryfs.img拷贝到工作目录。

2.jpg

运行 simg2img factoryfs.img ZNKG5.img 得到512m的 ZNKG5.img,然后就可以挂载了。

  1. ~/work$ ./simg2img factoryfs.img ZNKG5.img
  2. ~/work$ mkdir ZNKG5
  3. ~/work$ sudo mount -o loop ZNKG5.img ZNKG5

复制代码
3.jpg
4.jpg
这样你就可以对固件做修改了,可以root固件,可以精简固件,这里主要提一下权限问题,不要轻易修改这个目录的权限,要保持默认的权限,不然你打包回去会有问题的,这里我举个例子,我准备把su这个文件加到固件的bin目录下,并且修改权限。
  1. ~/work/ZNKG5/bin$ sudo cp ~/work/su ./
  2. ~/work/ZNKG5/bin$ ls -l su
  3. -rwxr-xr-x 1 root root 26264 2011-07-17 21:16 su
  4. ~/work/ZNKG5/bin$ sudo chown root.2000 su
  5. ~/work/ZNKG5/bin$ ls -l su
  6. -rwxr-xr-x 1 root 2000 26264 2011-07-17 21:16 su
  7. ~/work/ZNKG5/bin$ sudo chmod 06755 su
  8. ~/work/ZNKG5/bin$ ls -l su
  9. -rwsr-sr-x 1 root 2000 26264 2011-07-17 21:16 su
  10. ~/work/ZNKG5/bin$

复制代码
5.jpg
打包很简单。
我是这么做的,避免无权限的问题。

  1. sudo ./make_ext4fs -l 512M -s -a system ZNKG5-new.img ./ZNKG5
  2. Creating filesystem with parameters:
  3.     Size: 536870912
  4.     Block size: 4096
  5.     Blocks per group: 32768
  6.     Inodes per group: 8192
  7.     Inode size: 256
  8.     Journal blocks: 2048
  9.     Label:
  10.     Blocks: 131072
  11.     Block groups: 4
  12.     Reserved block group size: 31
  13. 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刷机了。

  1. move ZNKG5-new.img factoryfs.img
  2. tar -cvf pda.tar factoryfs.img

复制代码
如有错漏请指教,谢谢。

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

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多