三星samsung手机ROM制做教程-另一篇

有人问我,我简单的写一下,来源XDA,运行环境ubuntu 10.4。
ubuntu安装很简单,在windows下安装一个虚拟机vmware或者VirtualBox,网上都有下载,创建一个虚拟机载入ubuntu安装盘镜像就能够了,全中文无难度。php

http://www.ubuntu.com.cn/download/html

下载ext4_utils源码包编译。
复制连接到浏览器下载:http://www.59a.cn/sfo/ext4_utils.tarnode

这是编译好的:
复制连接到浏览器下载:http://www.59a.cn/sfo/make_ext4fs.tarubuntu

xiaolu@ubuntu-xiaolu:~/work$ cd ext4_utils
xiaolu@ubuntu-xiaolu:~/work/ext4_utils$ make clean
rm -rf *.o make_ext4fs simg2img
xiaolu@ubuntu-xiaolu:~/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
xiaolu@ubuntu-xiaolu:~/work/ext4_utils$

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

运行 simg2img factoryfs.img ZNKG5.img 获得512m的 ZNKG5.img,而后就能够挂载了。windows

xiaolu@ubuntu-xiaolu:~/work$ ./simg2img factoryfs.img ZNKG5.img
xiaolu@ubuntu-xiaolu:~/work$ mkdir ZNKG5
xiaolu@ubuntu-xiaolu:~/work$ sudo mount -o loop ZNKG5.img ZNKG5



这样你就能够对固件作修改了,能够root固件,能够精简固件,这里主要提一下权限问题,不要轻易修改这个目录的权限,要保持默认的权限,否则你打包回去会有问题的,这里我举个例子,我准备把su这个文件加到固件的bin目录下,而且修改权限。浏览器

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


打包很简单。
我是这么作的,避免无权限的问题。temp是个临时挂载目录,须要你手工创建。oop

sudo /home/xiaolu/work/mkuserimg.sh -s /home/xiaolu/work/ZNKG5 /home/xiaolu/work/ZNKG5-new.img ext4 /home/xiaolu/work/temp 512Mui

xiaolu@ubuntu-xiaolu:~/work$ sudo /home/xiaolu/work/mkuserimg.sh -s /home/xiaolu/work/ZNKG5  /home/xiaolu/work/ZNKG5-new.img ext4 /home/xiaolu/work/temp 512M
in mkuserimg.sh PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin
./make_ext4fs -s -l 512M -a /home/xiaolu/work/temp /home/xiaolu/work/ZNKG5-new.img /home/xiaolu/work/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


获得的ZNKG5-new.img 就能够更名成factoryfs.img打包成tar刷机了。
若有错漏请指教,谢谢。spa