I was wondering if it is possible to make an Odin flashable ROM with only the CWM ROM? If not how could i make a Odin flashable ROM?
How to make an Odin flashable ROM
This needs a UNIX compatible OS - like Linux or Mac OS X.
On Windows, you can use "Cygwin".
Use the dd (datadump) command to make the .rfs files
Of course you need to connect your phone via USB and have ADB prepared on your computer.
# Get Root access first
Code:
su
# Do this first to mount the /system R/W
Code:
mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system
# Dump the needed data / partitions to your /sdcard
Code:
dd if=/dev/block/stl9 of=/sdcard/factoryfs.rfs bs=4096
dd if=/dev/block/stl11 of=/sdcard/cache.rfs bs=4096
dd if=/dev/block/bml7 of=/sdcard/zImage bs=4096
dd if=/dev/block/bml12 of=/sdcard/modem.bin bs=4096
# Make the tar ball
Code:
tar -H ustar -c factoryfs.rfs cache.rfs modem.bin zImage > darky.tar
# MD5 it for a security check
Code:
md5sum –t darky.tar >> darky.tar
# Rename the tar file
Code:
mv darky.tar darky.tar.md5
Optional:
Make your own pit file
The pit file is used to set the partition layout (Partition Information Table).
# Dump the pit
Code:
dd if=/dev/block/bml2 of=/sdcard/darky.pit bs=4096
I hope I could help you with that
- darkyy.
Didnt workd
@Darky Didnt workd for my galaxy-FIT
pratyush.creed said:
@Darky Didnt workd for my galaxy-FIT
Click to expand...
Click to collapse
maybe because your galaxy-FIT is an entirely different device???
How doing this using phone runing cyanogenmod7?
Hey darky, how can i do this with a phone runing cyanogenmod 7? and after doing that, how can i install the rom with odin?
Thanks ;-)
http://forum.xda-developers.com/showthread.php?t=1082288
Don't work, i have the same error /dev/block/stl10: cannot open for read: Nosuch file or directory
I am wanting to clone a set configuration with certain apps, settings, wallpaper, etc to about 100 or more tablets.
I used the following process listed below to backup the master tablet and then tried to restore one of the others using Odin and the .tar file I created. I get a failed when trying to restore. I have recreated the backup and tried on a few different tablets with no luck. I would greatly apprciate it if someone could help out with this! If it is better to use Heimdall instead, what would be the steps to create a proper backup for it?
Here's what I was doing:
System:
Code:
dd if=/dev/block/stl10 of=/sdcard/factoryfs.rfs bs=4096Kernel:
Code:
dd if=/dev/block/bml8 of=/sdcard/zImage bs=4096Recovery:
Code:
dd if=/dev/block/bml9 of=/sdcard/recovery.bin bs=4096
Cache:
Code:
dd if=/dev/block/mmcblk0p3 of=/sdcard/cache.rfs bs=4096DBData:
Code:
dd if=/dev/block/stl11 of=/sdcard/dbdata.rfs bs=4096Data:
Code:
dd if=/dev/block/mmcblk0p1 of=/sdcard/movinand.bin bs=4096
Code:
tar -H ustar -c cache.rfs dbdata.rfs data.rfs factoryfs.rfs recovery.bin zImage > package_name.tar
md5sum -t backup.tar >> backup.tar
mv package_name.tar package_name.tar.md5
Anyone point me in the right direction on this?
Thanks!
shockaholic said:
Anyone point me in the right direction on this?
Thanks!
Click to expand...
Click to collapse
If the tabs are identical I would've used nandroid backup for that.
K.
I try to break down to understand from original firmware. I would like to discuss with anyone who expertise to solve understanding about odin system for GT-I9000. Anyone can give input in this thread to more understand newbie like me.
I not sure which the correct to follow to make own odin.
I tried to read and following from these threads:
http://forum.xda-developers.com/showthread.php?t=960946
http://forum.xda-developers.com/showthread.php?t=1082288
http://forum.xda-developers.com/showthread.php?t=965190
http://forum.xda-developers.com/showthread.php?t=850359
So there are others files
Boot Loader File(s) contain: boot.bin, Sbl.bin
PDA File(s) contain: boot.bin, Sbl.bin, param.lfs, factoryfs.rfs, dbdata.rfs, efs.rfs*, zImage
PHONE File(s) contain: modem.bin
CSC File(s) contain: cache.rfs
* efs.rfs it seem not really include when creating PDA file.
On the adb shell I type 'mount' and these below are strip off the lists:
$ mount
/dev/block/stl9 /system rfs rw
/dev/block/stl3 /efs rfs rw
/dev/block/mmcblk0p2 /data rfs rw
/dev/block/stl10 /dbdata rfs rw
/dev/block/stl11 /cache rfs rw
/dev/block/stl6 /mnt/.lfs j4fs rw
/dev/block/vold/179:1 /mnt/sdcard vfat rw
/dev/block/vold/179:9 /mnt/sdcard/external_sd vfat rw
/dev/block/vold/179:9 /mnt/secure/asec vfat rw
Click to expand...
Click to collapse
Boot Loader File(s):
boot.bin
Function: Boot Loader (Optional)
Code:
dd if=/dev/block/bml1 of=/sdcard/odin/boot.bin bs=4096
Click to expand...
Click to collapse
Sbl.bin
Function: Boot Loader (Optional)
Code:
dd if=/dev/block/bml4 of=/sdcard/odin/Sbl.bin bs=4096
Click to expand...
Click to collapse
Click to expand...
Click to collapse
PDA File(s):
factoryfs.rfs
Function: System/Main Package
Mount: /dev/block/stl9 /system
Code:
dd if=/dev/block/stl9 of=/sdcard/odin/factoryfs.rfs bs=4096
Click to expand...
Click to collapse
dbdata.rfs
Function: File system + user database
Mount: /dev/block/stl10 /dbdata
Code:
dd if=/dev/block/stl10 of=/sdcard/odin/dbdata.rfs bs=4096
Click to expand...
Click to collapse
param.lfs
Function: Boot Animation
Code:
dd if=/dev/block/stl6 of=/sdcard/odin/param.lfs bs=4096
Click to expand...
Click to collapse
efs.rfs
Function: N.A. (Still find out)
Code:
dd if=/dev/block/stl3 of=/sdcard/odin/efs.rfs bs=4096
Click to expand...
Click to collapse
Sbl.bin
Function: Boot Loader
Code:
dd if=/dev/block/bml4 of=/sdcard/odin/Sbl.bin bs=4096
Click to expand...
Click to collapse
zImage
Function: Kernel
Code:
dd if=/dev/block/bml7 of=/sdcard/odin/zImage bs=4096
Click to expand...
Click to collapse
Click to expand...
Click to collapse
PHONE File(s):
modem.bin
Function: Modem country/regional
Code:
dd if=/dev/block/bml12 of=/sdcard/odin/modem.bin bs=4096
Click to expand...
Click to collapse
Click to expand...
Click to collapse
CSC File(s):
cache.rfs
Function: CSC code/Sales country code/Cache/Telco
Mount: /dev/block/stl11 /cache
Code:
dd if=/dev/block/stl11 of=/sdcard/odin/cache.rfs bs=4096
Click to expand...
Click to collapse
Click to expand...
Click to collapse
PIT File(s):
Function: Partition Information (PIT)
Code:
dd if=/dev/block/bml2 of=/sdcard/odin/pit.pit bs=4096
Click to expand...
Click to collapse
Click to expand...
Click to collapse
Recovery:
Function: N.A. (Still find out)
Code:
dd if=/dev/block/bml9 of=/sdcard/odin/recovery.bin bs=4096
Click to expand...
Click to collapse
Data:
Function: N.A. (Still find out)
Code:
dd if=/dev/block/mmcblk0p1 of=/sdcard/odin/movinand.bin bs=4096
Click to expand...
Click to collapse
Description:
Mount is the command when execute on terminal or adb shell.
Dump is the command to execute using 'adb shell'.
CREATE ODIN FILE
Bootloader
Code:
tar -c boot.bin sbl.bin >> Bootloader.tar
Creating a PDA.tar.md5
Code:
tar -c boot.bin sbl.bin param.lfs factoryfs.rfs dbdata.rfs zImage >> PDA.tar
md5sum -t PDA.tar >> PDA.tar
mv PDA.tar PDA.tar.md5
Or single command with multiple batch for PDA.
tar -c boot.bin sbl.bin param.lfs factoryfs.rfs dbdata.rfs zImage >> PDA.tar ; md5sum -t PDA.tar >> PDA.tar ; mv PDA.tar PDA.tar.md5
Click to expand...
Click to collapse
Creating a Phone.tar.md5
Code:
tar -c modem.bin >> Phone.tar
md5sum -t Phone.tar >> Phone.tar
mv Phone.tar Phone.tar.md5
Or single command with multiple batch for PHONE.
tar -c modem.bin >> Phone.tar ; md5sum -t Phone.tar >> Phone.tar ; mv Phone.tar Phone.tar.md5
Click to expand...
Click to collapse
Creating a CSC.tar.md5
Code:
tar -c cache.rfs >> CSC.tar
md5sum -t CSC.tar >> CSC.tar
mv CSC.tar CAC.tar.md5
Or single command with multiple batch for PHONE.
tar -c cache.rfs >> CSC.tar ; md5sum -t CSC.tar >> CSC.tar ; mv CSC.tar CAC.tar.md5
Click to expand...
Click to collapse
Simplify command for creating PDA only:
Code:
dd if=/dev/block/stl9 of=/sdcard/factoryfs.rfs bs=4096
dd if=/dev/block/stl11 of=/sdcard/cache.rfs bs=4096
dd if=/dev/block/bml7 of=/sdcard/zImage bs=4096
dd if=/dev/block/bml12 of=/sdcard/modem.bin bs=4096
tar -c factoryfs.rfs cache.rfs modem.bin zImage >> JustPDA.tar
md5sum -t JustPDA.tar >> JustPDA.tar
mv JustPDA.tar JustPDA.tar.md5
Reserved for future use.
Reserved for future use.
YES!
On-phone developing is the way to go. Start with a firmware from SamFirmwares.com. keep it safe. Do your modifications using the techniques I laid out here: http://forum.xda-developers.com/showthread.php?t=1030107 Then when you are finished, use the methods above.
Now, the reason you kept the SamFirmwares.com original firmware safe.... You'll need the partition information table PIT for an extra level of security when distributing your new ROM. For extra cool points, wrap it up in a Heimdall TAR.GZ firmware package, then make it a one-click with Heimdall One-Click (not yet finished).
btw.. to save space in the firmware package, you can omit the cache file, or clear your cache, then adb into your phone in recovery mode and grab it there... The cache file is regenerated when the user selects to clear cache.
The data partition is the temporary storage area for apps, also some apps default to the data area for storage.... It's also a good place to deploy binaries that you want to execute. It cannot be flashed by Odin protocol though.... It's the "extra" space on the disk left over after the partitioning.
AdamOutler said:
YES!
Now, the reason you kept the SamFirmwares.com original firmware safe.... You'll need the partition information table PIT for an extra level of security when distributing your new ROM. For extra cool points, wrap it up in a Heimdall TAR.GZ firmware package, then make it a one-click with Heimdall One-Click (not yet finished).
Click to expand...
Click to collapse
Are you saying that I shall keep the original PIT file rather then dumped PIT file from above method? (dd if=/dev/block/bml2 of=/sdcard/odin/pit.pit bs=4096) ?
AdamOutler said:
btw.. to save space in the firmware package, you can omit the cache file, or clear your cache, then adb into your phone in recovery mode and grab it there... The cache file is regenerated when the user selects to clear cache.
Click to expand...
Click to collapse
So I don't need to use cache.rfs (dd if=/dev/block/stl11 of=/sdcard/cache.rfs bs=4096)?
AdamOutler said:
The data partition is the temporary storage area for apps, also some apps default to the data area for storage.... It's also a good place to deploy binaries that you want to execute. It cannot be flashed by Odin protocol though.... It's the "extra" space on the disk left over after the partitioning.
Click to expand...
Click to collapse
Or I should use it? before dumped the cache I shall do factory reset, clear dalvik cache and wipe battery stat?
how to create own Odin files
i done that you wrote here but i still miss Data:
all without DATA
The script (see below) works as follows:
1. It takes the correct files from the BaseRom folder and copies them to the BuildOdin folder
2. If boot or recovery images exist in NewRom folder (extracted from the cwm zip) it will copy them to the BuildOdin folder too
3. It will create the system.img.ext4 file in the BuildOdin folder
4. It will copy the system folder in the NewRom folder to the system.img.ext4 file
5. It will tar and md5 the files in BuildOdin folder
So make sure you have:
1. The adsp.mbn, amss.mbn, cache.img.ext4 and preload.img.ext4 in the BaseRom folder
2. The boot.img and recovery.img in the NewRom folder (or BaseRom)
3. The system folder in the NewRom folder
And run the script
Code:
#!/bin/sh
echo 'Requesting password to allow running as root...'
sudo echo 'Thanks :)!'
# Make folder
if [ ! -d "BuildOdin" ]
then
mkdir BuildOdin
fi
# Copy BaseRom files
cp BaseRom/adsp.mbn BuildOdin/adsp.mbn
cp BaseRom/amss.mbn BuildOdin/amss.mbn
cp BaseRom/cache.img.ext4 BuildOdin/cache.img.ext4
cp BaseRom/preload.img.ext4 BuildOdin/preload.img.ext4
# Copy boot image
if [ -s NewRom/boot.img ]
then
cp NewRom/boot.img BuildOdin/boot.img
else
cp BaseRom/boot.img BuildOdin/boot.img
fi
# Copy recovery image
if [ -s NewRom/recovery.img ]
then
cp NewRom/recovery.img BuildOdin/recovery.img
else
cp BaseRom/recovery.img BuildOdin/recovery.img
fi
# Create system image
mysyssize=`du -s -h NewRom/system | awk 'BEGIN{FS="[M]"} {print $1}'`
mysyssizeincreased=$((mysyssize+50))
echo 'Filesize will be' $mysyssizeincreased 'MB'
echo 'dd empty image...'
dd if=/dev/zero of=BuildOdin/system.img.ext4 bs=1M count=$mysyssizeincreased >&- 2>&-
echo 'make it ext4...'
mke2fs -F -T ext4 BuildOdin/system.img.ext4 >&- 2>&-
echo 'mounting...'
sudo mount -t ext4 -o loop BuildOdin/system.img.ext4 /mnt >&- 2>&-
echo 'copying system...'
cp NewRom/system/* /mnt -rp
sync
echo 'unmounting...'
sudo umount /mnt
# Create Odin and Odin MD5 files
cd BuildOdin
echo 'tarring...'
tar -cf MyOdinpack.tar adsp.mbn amss.mbn boot.img cache.img.ext4 preload.img.ext4 recovery.img system.img.ext4
echo 'copying...'
cp MyOdinpack.tar MyOdinpack.tar.md5
echo 'md5sum...'
md5sum -t MyOdinpack.tar>>MyOdinpack.tar.md5
echo 'done!'
It looks like it works. I do have some stuff I am wondering about:
1. I have added 50 MB to the filesize, with 30 MB additional I still got a not enough diskspace error. Wondering why...
2. Will it work this way? When looking at a cwm-zip it does contain a system folder but they also contain some other stuff... who knows... anyone care to test?
Well, looks like it's not all that easy. The script works, it creates a file with the exact same files as the one created with dd on the device, but for some reason when using it in Odin, it doesn't work...
Creating the Odin package is superfast now, but will still require some more testing. I guess I should do it with a ROM that I have done before... but too lazy atm...
Btw, this way I could create an Odin package from a CWM backup too If ever needed, just let me know
Regards,
Nika.
you could try making system.img file, then rename it to system.img.ext4. Sound foolish probably, but sometimes these double extensions are just added as an indicator. in this case for the system to look up what partition type to take. (I could be horribly wrong tho. But there are like 0 tools on internet for an ext4 maker so not many options available)
Maybe create an empty ext4 image on PC, mount loopback in cwm and copy files to it.
Sent from my GT-I9001 using XDA App
Create image on your phone using busybox
Edit: I updated the script.
I played a bit with the busybox:
my working dir is /sdcard/external_sd/imgtest!
DD a file of ~300MB
busybox dd if=/dev/zero of=myimg.img bs=1M count=300
Create a ext4 filesystem on this img
busybox mke2fs -F -T ext4 -L Image myimg.img
Create a new /dev node, named "loop99", type "block device" (b), and some major and minor number
busybox mknod /dev/block/loop99 b 7 99
Prepare your new loop device with an img file (delete is with losetup -d /dev/block/loop99)
busybox losetup /dev/block/loop99 /sdcard/external_sd/imgtest/myimg.img
Mount it finally
busybox mount /dev/block/loop99 /sdcard/external_sd/imgtest/mymnt
Now you may copy what you want, say /system, to this img.
And unmount it (make sure it's not in use anymore)
busybox umount /dev/block/loop99
Maybe invoke some commands to check the size of /system? A quick one liner would be
busybox df /system -h | grep /system | awk 'BEGIN{FS="[M]"} {print $2}' | awk 'BEGIN{FS="[.]"} {print $1}'
Could be part of the shell script, saved to a variable and increased by some MB just to make sure^^
A very quick and dirty script:
#!/bin/sh
mysyssize=`busybox df /system -h | grep /system | awk 'BEGIN{FS="[M]"} {print $2}' | awk 'BEGIN{FS="[.]"} {print $1}'`
mysyssizeincreased=$((mysyssize+20))
mkdir /sdcard/external_sd/myimages
mkdir /sdcard/mnt/
mkdir /sdcard/mnt/mymnt
cd /sdcard/external_sd/myimages
echo Filesize is $mysyssizeincreased
echo Now dd a new image for your folder
echo dd in progress...
busybox dd if=/dev/zero of=myimgfile.img bs=1M count=$mysyssizeincreased
echo mke2fs with type ext4 on your file...
busybox mke2fs -F -T ext4 -L Imagename myimgfile.img
echo create new dev-node...
busybox mknod /dev/block/loop99 b 7 99
echo apply loopback setup on this node...
busybox losetup /dev/block/loop99 /sdcard/external_sd/myimages/myimgfile.img
echo mounting new image...
busybox mount /dev/block/loop99 /sdcard/mnt/mymnt
echo done!
echo
echo now copy your system files over preserving permissions...
cp /system/* /sdcard/mnt/mymnt -rp
sync
busybox umount /sdcard/mnt/mymnt
losetup -d /dev/block/loop99
rm /dev/block/loop99
echo done!
echo done!
echo done!
echo
Click to expand...
Click to collapse
Save as a .sh script and execute it. I tried with some ssh server on phone and shell on my PC.
Worked fine, but to be sure a test with a restore would be needed, so treat it as highly experimental.
Very nice, much appreciated!!! Will try (convert) them on ubuntu one of these days as I'd prefer to do the job on a dual-cpu machine
Well then you should skip the steps with mknod and so on. Mount is much more powerful there, so you should be able to do it with these commands:
dd if=/dev/zero of=/tmp/image bs=1M count=300
mkfs.ext4 /tmp/image
mount -o loop /tmp/image /mnt
Hmmm... getting a "is not a block special device" message when ext4-ing in linux. Either the command file is incorrect, or I need to suppress that message somehow... more news soon
Okay!! Here's the first version of the script:
Code:
#!/bin/sh
echo 'Requesting password to allow running as root...'
sudo echo 'Thanks :)!'
# Make folder
if [ ! -d "BuildOdin" ]
then
mkdir BuildOdin
fi
# Copy BaseRom files
cp BaseRom/adsp.mbn BuildOdin/adsp.mbn
cp BaseRom/amss.mbn BuildOdin/amss.mbn
cp BaseRom/cache.img.ext4 BuildOdin/cache.img.ext4
cp BaseRom/preload.img.ext4 BuildOdin/preload.img.ext4
# Copy boot image
if [ -s NewRom/boot.img ]
then
cp NewRom/boot.img BuildOdin/boot.img
else
cp BaseRom/boot.img BuildOdin/boot.img
fi
# Copy recovery image
if [ -s NewRom/recovery.img ]
then
cp NewRom/recovery.img BuildOdin/recovery.img
else
cp BaseRom/recovery.img BuildOdin/recovery.img
fi
# Create system image
mysyssize=`du -s -h NewRom/system | awk 'BEGIN{FS="[M]"} {print $1}'`
mysyssizeincreased=$((mysyssize+50))
echo 'Filesize will be' $mysyssizeincreased 'MB'
echo 'dd empty image...'
dd if=/dev/zero of=BuildOdin/system.img.ext4 bs=1M count=$mysyssizeincreased >&- 2>&-
echo 'make it ext4...'
mke2fs -F -T ext4 BuildOdin/system.img.ext4 >&- 2>&-
echo 'mounting...'
sudo mount -t ext4 -o loop BuildOdin/system.img.ext4 /mnt >&- 2>&-
echo 'copying system...'
cp NewRom/system/* /mnt -rp
sync
echo 'unmounting...'
sudo umount /mnt
# Create Odin and Odin MD5 files
cd BuildOdin
echo 'tarring...'
tar -cf MyOdinpack.tar adsp.mbn amss.mbn boot.img cache.img.ext4 preload.img.ext4 recovery.img system.img.ext4
echo 'copying...'
cp MyOdinpack.tar MyOdinpack.tar.md5
echo 'md5sum...'
md5sum -t MyOdinpack.tar>>MyOdinpack.tar.md5
echo 'done!'
It looks like it works. I do have some stuff I am wondering about:
1. I have added 50 MB to the filesize, with 30 MB additional I still got a not enough diskspace error. Wondering why...
2. Will it work this way? When looking at a cwm-zip it does contain a system folder but they also contain some other stuff... who knows... anyone care to test?
The script works as follows:
1. It takes the correct files from the BaseRom folder and copies them to the BuildOdin folder
2. If boot or recovery images exist in NewRom folder (extracted from the cwm zip) it will copy them to the BuildOdin folder too
3. It will create the system.img.ext4 file in the BuildOdin folder
4. It will copy the system folder in the NewRom folder to the system.img.ext4 file
5. It will tar and md5 the files in BuildOdin folder
So make sure you have:
1. The adsp.mbn, amss.mbn, cache.img.ext4 and preload.img.ext4 in the BaseRom folder
2. The boot.img and recovery.img in the NewRom folder (or BaseRom)
3. The system folder in the NewRom folder
And run the script
Regards,
Nika.
Well, looks like it's not all that easy. The script works, it creates a file with the exact same files as the one created with dd on the device, but for some reason when using it in Odin, it doesn't work...
Creating the Odin package is superfast now, but will still require some more testing. I guess I should do it with a ROM that I have done before... but too lazy atm...
Btw, this way I could create an Odin package from a CWM backup too If ever needed, just let me know
nikagl said:
Well, looks like it's not all that easy. The script works, it creates a file with the exact same files as the one created with dd on the device, but for some reason when using it in Odin, it doesn't work...
Creating the Odin package is superfast now, but will still require some more testing. I guess I should do it with a ROM that I have done before... but too lazy atm...
Btw, this way I could create an Odin package from a CWM backup too If ever needed, just let me know
Click to expand...
Click to collapse
I've been searching the forums for a general way to make Odin-flashable ROMs from CWM backups. I'm particularly interested in doing this for Samsung Galaxy 10.1/8.9/7.7 tabs (Honeycomb). Many tutorials use ADB and datadumps, which is fine but is very device-specific, and I haven't found one for the Honeycomb Galaxy Tabs. Using CWM backups seem cleanest and least-device specific way.
So I *AM* interested in how you would start with a full CWM backup, and (not using any base ROMs) get an Odin-flashable .tar.md5 file.
hmmmm bht ho gya hia yaar
kblam said:
I've been searching the forums for a general way to make Odin-flashable ROMs from CWM backups. I'm particularly interested in doing this for Samsung Galaxy 10.1/8.9/7.7 tabs (Honeycomb). Many tutorials use ADB and datadumps, which is fine but is very device-specific, and I haven't found one for the Honeycomb Galaxy Tabs. Using CWM backups seem cleanest and least-device specific way.
So I *AM* interested in how you would start with a full CWM backup, and (not using any base ROMs) get an Odin-flashable .tar.md5 file.
Click to expand...
Click to collapse
Hi kblam,
Well... it's still a work in progress. Not sure why it doesn't work at the moment, but here's my current script:
Code:
#!/bin/sh
echo 'Requesting password to allow running as root...'
sudo echo 'Thanks :)!'
# Make folder
if [ ! -d "BuildOdin" ]
then
mkdir BuildOdin
fi
# Copy BaseRom files
cp BaseRom/adsp.mbn BuildOdin/adsp.mbn
cp BaseRom/amss.mbn BuildOdin/amss.mbn
cp BaseRom/cache.img.ext4 BuildOdin/cache.img.ext4
cp BaseRom/preload.img.ext4 BuildOdin/preload.img.ext4
# Copy boot image
if [ -s NewRom/boot.img ]
then
cp NewRom/boot.img BuildOdin/boot.img
else
cp BaseRom/boot.img BuildOdin/boot.img
fi
# Copy recovery image
if [ -s NewRom/recovery.img ]
then
cp NewRom/recovery.img BuildOdin/recovery.img
else
cp BaseRom/recovery.img BuildOdin/recovery.img
fi
# Create system image
mysyssize=`du -s -h NewRom/system | awk 'BEGIN{FS="[M]"} {print $1}'`
mysyssizeincreased=$((mysyssize+50))
echo 'Filesize will be' $mysyssizeincreased 'MB'
echo 'dd empty image...'
dd if=/dev/zero of=BuildOdin/system.img.ext4 bs=1M count=$mysyssizeincreased >&- 2>&-
echo 'make it ext4...'
mke2fs -F -T ext4 BuildOdin/system.img.ext4 >&- 2>&-
echo 'mounting...'
sudo mount -t ext4 -o loop BuildOdin/system.img.ext4 /mnt >&- 2>&-
echo 'copying system...'
cp NewRom/system/* /mnt -rp
sync
echo 'unmounting...'
sudo umount /mnt
# Create Odin and Odin MD5 files
cd BuildOdin
echo 'tarring...'
tar -cf MyOdinpack.tar adsp.mbn amss.mbn boot.img cache.img.ext4 preload.img.ext4 recovery.img system.img.ext4
echo 'copying...'
cp MyOdinpack.tar MyOdinpack.tar.md5
echo 'md5sum...'
md5sum -t MyOdinpack.tar>>MyOdinpack.tar.md5
echo 'done!'
Taking out all unnessesary comments and commands, what it's supposed to do is the following:
1. First copy the files from the BaseRom (the ones you usually do not extract either):
Code:
cp BaseRom/adsp.mbn BuildOdin/adsp.mbn
cp BaseRom/amss.mbn BuildOdin/amss.mbn
cp BaseRom/cache.img.ext4 BuildOdin/cache.img.ext4
cp BaseRom/preload.img.ext4 BuildOdin/preload.img.ext4
2. Then take the boot and recovery from another folder as they usually need to be based on another kernel (f/e Skyhigh kernel ) and/or recovery (f/e CWM/Faemod):
Code:
cp NewRom/boot.img BuildOdin/boot.img
cp NewRom/recovery.img BuildOdin/recovery.img
3. Take the size of the new image (based on the system folder size + 50):
Code:
mysyssize=`du -s -h NewRom/system | awk 'BEGIN{FS="[M]"} {print $1}'`
mysyssizeincreased=$((mysyssize+50))
4. Create an empty system image
Code:
dd if=/dev/zero of=BuildOdin/system.img.ext4 bs=1M count=$mysyssizeincreased >&- 2>&-
5. Convert it to ext4
Code:
mke2fs -F -T ext4 BuildOdin/system.img.ext4 >&- 2>&-
6. Mount it and copy the new system files (can be unzipped from the cwm-zip) and unmount
Code:
sudo mount -t ext4 -o loop BuildOdin/system.img.ext4 /mnt >&- 2>&-
cp NewRom/system/* /mnt -rp
sync
sudo umount /mnt
7. The rest is same to building other md5 odin files. Combine them with tar and calculate and add the md5 sum
Code:
tar -cf MyOdinpack.tar adsp.mbn amss.mbn boot.img cache.img.ext4 preload.img.ext4 recovery.img system.img.ext4
cp MyOdinpack.tar MyOdinpack.tar.md5
md5sum -t MyOdinpack.tar>>MyOdinpack.tar.md5
As mentioned - I am not sure why the system image created this way does not work yet (I only tested it once) - maybe someone else is willing to test?
Regards,
Nika.
Well i dumped my own rom and did this:
Code:
tar -H ustar -c zImage boot.bin modem.bin Sbl.bin cache.img data.img factoryfs.img hidden.img param.lfs > odin.tar
md5sum -t odin.tar >> odin.tar
mv odin.tar odin.tar.md5
It does create a valid flashable image for Odin... but the problem is that it increases the binary counter!
Anyone know how can i create a tar image without increasing it?
Since no one replied and in case anyone is wondering: to make a repack just use the stock kernel because a custom recovery increases the binary.. As simples as that
Sent from my GT-N7000 using Tapatalk 2