Chapter 1: Finding the
cause of the bootloop
Bootloops are mainly
caused because system files interfering with each other which causes instability
and/or crashes at the boot sequence.
To find the cause of a
bootloop you have to think about what you did before getting the bootloop.
Choose one of the
following reasons that caused the bootloop for you and try out its solution.
- After flashing a new
rom
If you flash a new
(base)rom with odin your /data will be kept. This means your old dalvik-cache
will be used for the new system files which would result in a bootloop, to fix
this problem:
1. Start your phone in
CWM Recovery
2. Go to Advanced
3. Choose "Wipe
dalvik-cache"
4. Now go to
"Mounts & Storage"
5. Choose "Wipe
/cache"
6. Reboot your phone
if the problems still
exists after doing that and you're sure it's not related to the rom, then you
need to do this:
1. Start your phone in
CWM Recovery
2. Now go to
"Mounts & Storage"
3. Choose "Wipe
/data"
4. Choose "Wipe
/cache"
5. Reboot your phone
- After restoring a
system only backup
This one is actually
the same as the above one, since only /system is restored (advanced restore)
there is an incorrect dalvik-cache present which will cause the bootloop.
perform the same steps as above to solve the problem.
- After installing a
Mod / Theme or UOT Kitchen output
When you install a Mod
/ Theme or UOT Kitchen output and you get a bootloop, you know there is
something wrong with the file that you are installing. This is mostly caused by
an incorrect BaseROM of the mod/theme, but can also happen if the creator just didn't
create it properly.
Wiping dalvik-cache
won't be enough to fix this, you will need to open the zip on your computer and
look at the files that are installed with the mod/theme. you can do this by
looking into the system folder in the zip, there you can find the files that
are being installed. for example:
You have installed an
Extended Power Menu mod but it causes a bootloop, here is what you do:
1. Open the
installation zip with Winrar (Extended Power Menu in this case)
2. Now look inside the
"system" folder, in my case I found the framework folder inside the
system folder
3. The framework folder
contains: android.policy.jar & framework-res.apk, so these are the
suspicious files.
4. What you simply do
is searching for the original files (from your (base)rom) and drag them into
the framework folder (inside winrar)
5. Now it will ask for
a compression level, choose "Store" and the archive will be done in
seconds.
6. You will need to put
the file on your external sdcard using the "Mount USB Storage" option
in CWM under "Mounts & Storage"
7. Install the zip just
as you did with the mod, you should now be bootloop free, if not reinstall the
zip with a mounted /system (Mounts & Storage > Mount /system) (and you
can optionally wipe /cache and /dalvik-cache, this will never harm any
file/setting.
Q: Ok... but I have no
external sdcard.. how to fix it then?
A: Have a look at the
"Using ADB as solution" chapter
- After setting wrong
permissions
Android is very
dependent on the right permissions, if you adjust file permissions incorrectly
you could get a bootloop, giving a file to less permissions would break it, but
also giving a file to much permissions would break it. most common permissions
of system files are:
- 644 (RW-R-R) - (this
is best known system permission, it exists in /system/app, /system/framework,
/system/etc, /system/lib and allot of seperate files)
- 755 (RWX-RX-RX) -
(mainly used for /system/bin)
- 777 (RWX-RWX-RWX) -
(used for scripts inside /system/etc/init.d and busybox files)
An easy fix is
performing the "Fix permissions" option in CWM under Advanced. be
sure to mount the partitions before running the fix. Although this doesn't
cover all permissions. have a look at the CWM or ADB chapter to find the
solution.
Chapter 2 Using a CWM
ZIP as solution
Using the original cwm
zip is the easiest way, since the zip is already created for you, you only need
to replace the files with the original rom files. You can get those files from
the deodex packages for baseroms which are posted on the forums. If you are
using an odexed ROM, you can get your files from system.img.ext4 (open the
baserom: *.tar.md5 with Winrar and extract system.img.ext4)
Now you can open
system.img.ext4 with "DiskInternals Linux Reader". browse to the
app/framework directory and extract the needed files from the image file.
Once you got the same
files as present in the original CWM zip you can easily drag em into the
archive, then choose "store" as compression level. Now finally you
need to put it on your sdcard and install it.
If you don't have an
external sdcard or you can't reach your internal sdcard (which is very likely
when you have a bootloop), you can use ADB to push the zip to your phone, read
about how to use ADB in Chapter 3.
Commands for
updater-script (located in CWMFIX.zip/META-INF/com/google/android/)
Mount & Install
To mount the system
partition:
mount("ext4",
"EMMC", "/dev/block/mmcblk0p15", "/system");
To extract the system
folder in your zip:
package_extract_dir("system",
"/system");
Setting Permissions
To set permissions of
an individual file:
set_perm(0, 0, Mod,
"File here");
A working example:
set_perm(0, 0, 0644,
"/system/build.prop");
To set permissions of a
directory:
set_perm(0, 0, Mod,
"Dir here without a trailing slash");
Setting Permissions
Recursively
To set permissions to
all files inside a directory (resursive):
set_perm_recursive(0,
0, 0755, Mod, "Dir here without a trailing slash");
A working example:
set_perm_recursive(0,
0, 0755, 0777, "/system/etc/init.d");
Chapter 3 Using ADB as
solution
ADB can be used to
access the phone while booting, be aware that some bootloops make it unable to
use ADB since they do not go further then the samsung logo.
The only tricky part
about using ADB with bootloops is that you have to do it on the right time,
this is just after the Galaxy S Plus logo, so just when the bootanimation
starts. The easiest way to enter your phone in this part is using a batch
script that monitors the state of your device and connects directly when
possible.
I use this script for
example (requires adb.exe and the 2 dlls)
Code:
@echo off
cd /d %~dp0
echo.
echo Waiting for
device...
adb wait-for-device
echo.
adb -d shell stop
adb push mycwmfix.zip
/sdcard/mycwmfix.zip
adb reboot recovery
This script will wait
for the device to become ready, when it's ready it freeze the device, so the
script has more time to push the file (instead of keep rebooting). Then it will
push the specified cwmfix zip to your sdcard, and after that it will reboot in
recovery so you can install the cwm fix you made.
You can also make an
batch script that pushes the files automatically to your phone, here is an
example:
Code:
@echo off
cd /d %~dp0
echo.
echo Waiting for
device...
adb wait-for-device
echo.
adb -d shell stop
adb -d shell su -c
"mount -o remount rw /system"
adb push
framework-res.apk /system/framework/framework-res.apk
adb -d shell chmod 644
/system/framework/framework-res.apk
adb push SystemUI.apk
/system/app/SystemUI.apk
adb -d shell chmod 644
/system/app/SystemUI.apk
adb reboot
This script will wait
for the device to become ready, when it's ready it freeze the device, so the
script has more time to push the file (instead of keep rebooting). Then it will
push framework-res.apk and SystemUI.apk to the directory it belongs to, after
that it changes the permissions of the files to RW-R-R (644) and then it will
reboot.
No comments:
Post a Comment