Perhaps a dumb question, but my brain is hurting from all the learning here:
I have modified my phone as I want it, including rooted deodexed stock eb01, swapping .apks, running all the mods through cwm, removing apps,etc. (I guess I themed it the hard way).
Question: Can I create a .tar file from the device while it is running, basically a 'snapshot' of the system exactly as it is ? That way I can odin to current setup if I dork up my phone.
my apologies if this is a stupid question
Sent from my SCH-I500 using XDA App
THAT IS TOTALLY NOT A STUPID QUESTION...I actually believe its a great idea right now.
Well, the long answer is, you shell into the phone and make images of the various sectors of the phone, name them properly, and heimdall them. If you use odin, take an extra step to tar it together.
Here its a guide for doing that on a continuum:
http://androidforums.com/continuum-all-things-root/263953-how-make-custom-odin-images.html
Note it glosses over dividing out the kernel binaries and RAMdisk, mentioned in the more comprehensive guide for the Behold:
http://androidforums.com/behold-2-all-things-root/54424-creating-custom-roms- odin.html
I haven't seen anyone post a cute little listing of the actual partitions and cutoffs specific to the fascinate, but I haven't looked very hard either.
UPDATE #2: (it is L: bml7, not bm17 & not bmI7)
So theoretically it's really simple (from an adb shell):
dd if=/dev/block/bml7 of=/sdcard/zImage bs=4096
dd if=/dev/block/stl9 of=/sdcard/factoryfs.rfs bs=4096
dd if=/dev/block/stl10 of=/sdcard/dbdata.rfs bs=4096
dd if=/dev/block/stl11 of=/sdcard/cache.rfs bs=4096(copy zImage and factoryfs.rfs to your local computer)
tar -H ustar -c zImage factoryfs.rfs dbdata.rfs cache.rfs > odinTAR.tarThese two commands append an md5 checksum to your package, and then rename the file. This finishes the process.
md5sum -t odinTAR.tar >> odinTAR.tar
mv odinTAR.tar odin_package.tar.md5NOTE: I did not include the modem, but you can flash that separately. This tar includes your personal data, so consider this before distributing any file you make this way. I haven't tested these instructions myself in any way.
Short answer:
Backup (everything but kernel) with nandroid and use that to restore. So long as you have a happy recovery setup, that is the path of least effort.
Swyped w/ XDA App. A clean tie attracts the soup of the day.
thanks for the response; certainly more involved than just a " create .tar" option somewhere. (Though that would be cool to develop for CWM or something)
Looks like some more learning for me. Always appreciate the info.
The next time there is a worthwhile update from VZW, I'd like to put together a not-stock, stripped-down-as-possible (small file) odin tar that is just enough to be a launchpad for flashing ROMs on whatever the next official modem is. So I'm doing my reading ahead of time.
Actually this looks like a great "What is where" link:
http://forum.xda-developers.com/showthread.php?t=850359
To paraphrase the link I posted above:
These are found in /dev/block. BML stands for Block Management Layer. STL is Sector Translation Layer. RFS is Samsung's Robust File System.
bml7 zImage (kernel)
stl9 factoryfs.rfs (system)
modem:
bml12 modem.bin
personal data:
stl10 dbdata.rfs
stl11 cache.rfs
other:
stl6 param.lfs
bml2 pit.pit
bml3 efs.rfs
NEVER:
bml1 boot.bin
bml4 Sbl.bin
unknown:
bml8 recovery.bin
You may use dd (and apparertly cat) to copy these partitions to your SD card:
adb shell su -c "dd if=/dev/block/bml7 of=/sdcard/zImage bs=4096"
adb shell cat /dev/block/stl9 > /sdcard/factoryfs.rfs
You may reflash them individually with heimdall, or tar to flash as a group in Odin.
OS Ubuntu 10.04 LTS x64
I downloaded photonic sources from schlund github place, ARM EABI Toolchain, get config from device(with schlund FW) and try to make, but have a error in makefile in "expr $(VERSION) \* 65536 + $(PATCHLEVEL) \* 256 + $(SUBLEVEL)); \". If i calculate version and write number to expr make done. I have zImage. Now i try to write new kernel to device. Get file boot.img from clockworkmod backup, "unpackbootimg -i boot.img", "mkbootimg --kernel zImage --ramdisk boot.img-ramdisk.gz --cmdline "no_console_suspend=1 console=null" --base 00200000 --pagesize 2048 -o ./tmp/boot.img" => have new boot.img. Through ADB push boot.img to sdcard then:
# cat /dev/zero > /dev/mtd/mtd2
write: No space left on device [this is ok, you can ignore]
# flash_image boot /sdcard/boot.img
Reboot device, but it write error in console(then i restore recovery and restore)
How to correctly build kernel and put it to the device?
Sorry for my bad english...
You not need bloksize argument for mkbootimg. And you have wrong argument for base (00200000 instead of 0x00200000)! Try:
- mkbootimg --kernel zImage --ramdisk boot.img-ramdisk.gz --cmdline 'no_console_suspend=1 console=null' --base 0x00200000 -o ./tmp/boot.img"
First, mount your sd card in recovery, then:
- adb push boot.img /sdcard/
than:
- adb shell erase_image boot
than:
- adb shell flash_image boot /sdcard/boot.img
It working also without mounting sdcard becouse boot.img is small and you are able to put it in memory, for example push it to /
- adb push boot.img /
- adb shell erase_image boot
- adb shell flash_image boot /boot.img
Can i "flash_image" In the booted android or just recovery?
will try to evening....
Just want to play with kernel...
YES!!!!!!!!!!!
It's work!!!!!!!!!!!!!!!!!!!!!!!!!
Thanx munjeni!!!!!!!!!!
Use this guide at your own risk.
Here is a short guide to use Heimdall on a linux console (Non a Graphical Interface) to back your phone to stock.
I assume you have Heimdall already installed.
1. Download stock files to flash (see link below under STOCK Files)
2. Put the phone in downloading mode (press 1 + power button)
3. Plug the phone to the computer.
4. Check if the phone is detected using this command:
Code:
heimdall detect
If device is detected you'll see a console message like this:
Code:
Device Detected
If not see below under DETECT DEVICE.
5. Use this command to flash files. You must run this command from the folder where the stock files are:
Code:
heimdall flash --repartition --cache cache.rfs --factoryfs factoryfs.rfs --modem modem.bin --param param.lfs --recovery recovery.bin --kernel zImage --pit SPH-D700.pit --data datafs.rfs
If everithing is done without errors your phone will be rebooted and you'll see the stock rom working on it .
Thanks.
STOCK Files:
You can find some packages in this nubecoder post: http://forum.xda-developers.com/showthread.php?t=1584346
You have to rename the files name in the console code above to match with the files in the package downloaded if necessary.
DEVICE DETECT
I use Archlinux and I didn't nothing to enable this, it works by default.
UBUNTU:
This text is copied from http://developer.android.com/guide/developing/device.html
If you're developing on Ubuntu Linux, you need to add a udev rules file that contains a USB configuration for each type of device you want to use for development. In the rules file, each device manufacturer is identified by a unique vendor ID, as specified by the ATTR{idVendor} property. To set up device detection on Ubuntu Linux:
Log in as root and create this file: /etc/udev/rules.d/51-android.rules.
Use this format to add each vendor to the file:
SUBSYSTEM=="usb", ATTR{idVendor}=="04e8", MODE="0666", GROUP="plugdev"
NOTE: 04e8 is Samsung id Vendor.
After this open a linux console and use this command as root:
Code:
chmod a+r /etc/udev/rules.d/51-android.rules
Thanks.
Hi dude,
I have my SGS2 soft bricked and I'm trying to recover it. I've already opened a post here.
Fed up with Odin errors I've decided to try Heimdall.
However, it fails when I try to flash a kernel and I think that my partitions system is damaged.
Find attached my heimdall print-pit result, System partition is missing.
Hope you can help me.
Regards,
Mario.
Usage for GT-P6200
In your example you use:
heimdall flash --repartition --cache cache.rfs --factoryfs factoryfs.rfs --modem modem.bin --param param.lfs --recovery recovery.bin --kernel zImage --pit SPH-D700.pit --data datafs.rfs
I have a Samsung Galaxy Tab Plus GT-P6200 which will not format /data thus I would like to use the --repartition option however my files provided are a little different being:
boot.bin
cache.img
factoryfs.img
hidden.img
modem.bin
param.lfs
recovery.img
Sbl.bin
zImage
How would I go about building the command string for this ?
As for the pit file I have this and will place it in the same folder
Hi XDA!
I managed to bebloat and odex some extra system apps on my Stock Touchwiz ROM, and wanted to make a backup in case something goes wrong again. I tried to follow this guide: http://forum.xda-developers.com/showthread.php?t=2277127, however, Odin always throws an error 'MD5 hash value is invalid'. I suspect there is something wrong with my image, as the developer that started that thread said his packages worked perfectly. I used the make_ext4fs binary from this link: http://web.djodjo.org/dwn.php?ff=211260&a=download/android/tools/x86_linux/ext4tools:make_ext4fs, and copied it to my device. Is the binary supposed to be for Android? Somehow when I used other images(boot.img, for example) using the same method to package into an Odin flashable, Odin do not give the error. I have managed to create a working package of the system.img.ext4 before, but could not remember how I did it. Can someone point out what I did wrong?
This is what I did to dump the system.img.ext4(it's only 2400M because I have debloated the ROM, is this the problem?):
Code:
su
make_ext4fs -s -l 2400M -a system /storage/extSdCard/system.img.ext4 /system
This is what I did to create the Odin package:
Code:
tar -H ustar -c boot.img recovery.img system.img.ext4 > test.tar
md5sum -t test.tar >> test.tar
mv test.tar test.tar.md5
I also tried this when creating Odin package:
Code:
tar -c boot.img recovery.img system.img.ext4 > test.tar
md5sum -t test.tar >> test.tar
mv test.tar test.tar.md5
But both doesn't work. I realized when I only include boot.img or recovery.img or both(without system.img.ext4) and package these files the package passes Odin's MD5 check. Does anyone know what is the issue? Thank you very much!
@dorimanx @daniel.stuart14 @REV3NT3CH @savoca @RenderBroken
Hi devs i would to learn how to build rom and kernel for d802 variant for myself.
I have build cm12 with success and it works flawlessly.
Now i want to build kernel compatible with cm 12.
I downloaded kernel from this source: https://github.com/CyanogenMod/android_kernel_lge_msm8974/tree/cm-12.0
I have used linaro toolchain 4.9.2 for a15 cpu, during the build i had a few of errors but i have fixed it, after that i have my zImage and dtb files prepared...
So i have used boot.img from previously cm 12 build(i take it from zip file to flash) to get ramdisk and zImage.
Then i have switch the original zImage with my zImage-dtb from my build and i modified files from ramdisk.
I have flashed this kernel through loki_tool but i'm stuck on lg logo...
So my question is i have to use zImage or zImage-dtb from my build?
What about creating dt.img, its obligatory?
Can i use this offset to build my kernel or i have to change it?
Code:
base=0x00000000
pagesize=2048
ramdisk_offset=0x05000000
tags_offset=0x04800000
Sorry for disturb but im curious and i want to do it by myself, so i hope you can help me!
Thanks in advance
Use this script to compile and create your image. (put in root folder of kernel)
You'll need edit it, and change:
build path. (in my script is: build=/home/daniel/android-dev/kernel_test)
Cross compile path
You'll need change the defconfig path, too.
Change the config="xxx_defconfig", to the defconfig's name of all the g2 variants in "arch/arm/configs".
And put it in your kernel root directory, too. (It's the open_bump, so you don't need loki it again, you can use my installation script + lcd.sh, in ozip folder.)
And, if for some reason you haven't installed the mkbootimg yet, download it, extract. Then, go to the folder that you've extracted, and do that:
Code:
sudo cp mkbootimg /bin/mkbootimg
sudo chmod 755 /bin/mkbootimg
sudo cp dtbToolCM /bin/dtbToolCM
sudo chmod 755 /bin/dtbToolCM
sudo cp mkbootfs /bin/mkbootfs
sudo chmod 755 /bin/mkbootfs
sudo cp mkboot /bin/mkboot
sudo chmod 755 /bin/mkboot
You'll need extract the ramdisk in ramdisk folder on root kernel folder, so you can use "mkboot" for it.
It'll say to you the ramdisk_offset, tags_offset and cmdline. So, change this in export.sh if there's a difference between.
After this. go to your kernel folder, and then: ./export.sh
OBS: In the first time you execute the script, it create the zimage, if everything goes right, execute the script again, and it'll create a zip with boot.img inside.
Hi thanks for your reply i will try this !
Which configs i have to use those one cyanogenmod_d802_config or open_g2 and so on?
I think is the cyanogenmod_d802_config.
@daniel.stuart14
i have updater-script like this:
ui_print("ebreo kernel for lg g2 d802 variant");
ui_print("Installing modules...");
mount("ext4", "EMMC", "/dev/block/platform/msm_sdcc.1/by-name/system", "/system");
delete_recursive("/system/lib/modules");
package_extract_dir("system", "/system");
set_perm_recursive(0, 0, 0755, 0644, "/system/lib/modules");
unmount("/system");
package_extract_file("lcd.sh", "/tmp/lcd.sh");
package_extract_file("boot.img", "/tmp/boot.img");
ui_print("Installing boot.img...");
show_progress(0.500000, 10);
set_perm(0, 0, 0755, "/tmp/lcd.sh");
assert(run_program("/tmp/lcd.sh") == 0);
delete("/tmp/lcd.sh");
ui_print("Done!");
show_progress(1.000000, 10);
Click to expand...
Click to collapse
But i have an error when i flash this by twrp...are there an errors?
Ok i have resolve problem with updater-script, device boot but after a cyanogenmod lho my phone reboot again....how can i debug it?
ebreo said:
Ok i have resolve problem with updater-script, device boot but after a cyanogenmod lho my phone reboot again....how can i debug it?
Click to expand...
Click to collapse
Okay, you should use logcat.
But first, try compile without the changes in kernel that you did.
daniel.stuart14 said:
Okay, you should use logcat.
But first, try compile without the changes in kernel that you did.
Click to expand...
Click to collapse
I didn't any changes its clean kernel from source....i will post logs from build.sh script.
How can i use logcat?
Thanks very much daniel!
Result from build.sh script:
OBJCOPY arch/arm/boot/zImage
Kernel: arch/arm/boot/zImage is ready
CAT arch/arm/boot/zImage-dtb
Kernel: arch/arm/boot/zImage-dtb is ready
[email protected]:~/android/kernel/cm_msm8974$ ./build.sh
TEST Build
Pick variant...
1) d800
2) d801
3) d802
4) ls980
5) vs980
#? 3
Checking for build...
Extracting files...
Modules found.
Making dt.img...
DTB combiner:
Input directory: 'arch/arm/boot/'
Output file: 'out/dt.img'
Found file: msm8974-v2-g2-open_com.dtb ... chipset: 126, rev: 131072, platform: 118, subtype: 0
Found file: msm8974-g2-open_com.dtb ... chipset: 126, rev: 0, platform: 118, subtype: 0
Found file: msm8974-v2-2-g2-open_com.dtb ... chipset: 126, rev: 131074, platform: 118, subtype: 0
=> Found 3 unique DTB(s)
Generating master DTB... completed
dt.img created
Making ramdisk...
Making boot.img...
Bumping...
bumped image: ozip/boot_bumped.img
Zipping...
adding: boot.img (deflated 7%)
adding: system/ (stored 0%)
adding: system/lib/ (stored 0%)
adding: system/lib/modules/ (stored 0%)
adding: system/lib/modules/scsi_wait_scan.ko (deflated 57%)
mv: „../ebreo_Kernel-1.0_d802_signed.zip” i „/home/marcio/android/kernel/cm_msm8974/ebreo_Kernel-1.0_d802_signed.zip” to ten sam plik
Done...
Output zip: /home/marcio/android/kernel/cm_msm8974/ebreo_Kernel-.zip
[email protected]:~/android/kernel/cm_msm8974$
Click to expand...
Click to collapse
So all is gone good
oh, okay.
You can boot, and after some minutes it reboot? Or are you in bootloop?
You can only use logcat if the rom starts.
For it, you must enable ADB, and install adb interface in your linux. (can be in windows too.)
After it, connect the device on PC, open the terminal, and put:
adb logcat
You'll need allow it in your device. So, it will start to show a lot of mensages in terminal.
For save it, do a ctrl + c. (to stop the messages), and put it:
adb logcat -c
It'll be saved on you current folder.
daniel.stuart14 said:
oh, okay.
You can boot, and after some minutes it reboot? Or are you in bootloop?
You can only use logcat if the rom starts.
For it, you must enable ADB, and install adb interface in your linux. (can be in windows too.)
After it, connect the device on PC, open the terminal, and put:
adb logcat
You'll need allow it in your device. So, it will start to show a lot of mensages in terminal.
For save it, do a ctrl + c. (to stop the messages), and put it:
adb logcat -c
It'll be saved on you current folder.
Click to expand...
Click to collapse
My problem is that im in bootloop....