[KERNEL][4.1.2][4.2.2][4.3][DUAL BOOT][I9100G] Blazing Kernel v16

Search This thread

Ryuinferno

Senior Member
Apr 3, 2012
3,548
7,112
ryuinferno.github.io
Blazing Kernel v16


**Note: Those coming from older versions and has dual booted, you must extract and place the whole "system/lib/modules" folder from the kernel zip package into /sdcard/SDRoms/update, so it will be like this: /sdcard/SDRoms/update/system/lib/modules. Just reboot and everything will be fine! ;)

Standard disclaimer from CyanogenMod:
Code:
#include 
/*
 * Your warranty is now void.
 *
 * I am not responsible for bricked devices, dead SD cards,
 * thermonuclear war, or you getting fired because the alarm app failed. Please
 * do some research if you have any concerns about features included in this kernel
 * before flashing it! YOU are choosing to make these modifications, and if
 * you point the finger at me for messing up your device, I will laugh at you.
 *
 */

Oh yeah!!! I finally made it! A kernel similar to Siyah kernel! You can use this on AOSP 4.2.2 ROMs or stock Sammy 4.1.2 ROMs, it will work in both! Plus, using a similar dual booting method like what @fuss132 did, you can now dual boot stock+stock, AOSP+AOSP or stock+AOSP!

Features:
** Most of my kernel features can be controlled using Trickster Mod Kernel Settings

- Can be flashed directly using stock recovery!
- Supports DUAL BOOTING
- Compiled using CM source
- Compiled using Linaro toolchain 4.7.4 by me! (optimised for Cortex-A9 architecture by me)
- Linux kernel version 3.0.98
- 3 versions of recovery available (different zImage): Philz, TWRP and CWM!
- Modified CWM to support /preload partition and gesture control: https://github.com/Ryuinferno/android_bootable_recovery
- Default scheduler is cfq
- Default governor is interactive
- MMC_CAP_ERASE already disabled by Samsung -> no more brick bug
- Supports CIFS
- Supports NFS
- USB fast charge
- Custom voltage settings
- Frandom support!
- Patched /dev/random
- More RAM (original=769 MB, Blazing Kernel=774MB)
- Additional governors: HYPER, Scary, wheatley, abyssplug, minmax, lulzactive, lazy, pegasusq, lagfree, smartassV2
- Addtional I/O schedulers: vr, sio, row
- swap support
- zRAM support
- exFAT module support
- Dynamic Fsync
- Dynamic Dirty Page Writeback
- Battery Life eXtender (BLX)
- CK3 tweaks
- Timer slack
- Dynamic timer slack control
- Miscellaneous tweaks

Stock only features:
~ Custom bootanimation (just place bootanimtion.zip in /system/media; to restore original bootanimation, just delete the bootanimtion.zip in /system/media) [AOSP already has this]
~ Custom boot sound (just place PowerOn.ogg in /system/media; to mute, create an empty file named "mute" in /system/media; to unmute, create an empty file named "unmute" in /system/media ; to restore original boot sound, create an empty file named "ori_sound" in /system/media)
~ Init.d scripts support (Place scripts in /system/etc/init.d or /data/etc/init.d) [AOSP already has this]​

Bugs:
** These bugs in AOSP are a compromise to get the kernel working, the code used for vibrations and touchkey lights are completely different, until I become a sensei in C, it can't be fixed for now
AOSP 4.2.2
- Cannot control vibration intensity
- Cannot control touchkey light duration or turn on/off

AOSP 4.3:
- Cannot control vibration intensity
- Slim ROM: Cannot control touchkey lights because Slim is still using old method for now

Stock:
- Cannot control touchkey light duration or turn on/off Solved​

Requirements:
- Running a stock 4.1.2 Samsung ROM or stock 4.1.2 based ROM
- Running a AOSP 4.2.2 ROM
- Running a AOSP 4.3 ROM
- At least 3 GB in internal storage if you want to dual boot

Instructions:
Flash via stock or custom recovery (Safest and easiest method):
1. Choose your recovery type: CWM6 or TWRP.
2. Download the corresponding zip package.
3. Place in sdcard (external sdcard for those running stock recovery)
4. Flash the zip.
5. Reboot. It may take a little while as the kernel has lots of things to configure.​

NOTE:
To those who wanna provide logs, kindly refer to this post: http://forum.xda-developers.com/showpost.php?p=39014273&postcount=201



XDA:DevDB Information
Blazing Kernel v16, a Kernel for the Samsung Galaxy S II

Contributors
Ryuinferno
Kernel Special Features: Dual boot and various kernel optimisations!

Version Information
Status: Stable

Created 2013-07-07
Last Updated 2013-10-24
 
Last edited:

Ryuinferno

Senior Member
Apr 3, 2012
3,548
7,112
ryuinferno.github.io
Kernel Features Explained

What is frandom?
v6 and onwards supports frandom, which is a faster (10-50 times) random number generator than urandom...it generally decreases lag in GUI...if you are using CrossBreeder, it will automatically utilise it...if not, place this script in /etc/init.d and set permissions as rwxrwxrwx (name it whatever you want) and reboot:

Code:
#!/system/bin/sh
# Ryuinferno @ XDA

chmod 666 /dev/frandom
chmod 666 /dev/erandom
mv /dev/random /dev/random.ori
mv /dev/urandom /dev/urandom.ori
ln /dev/frandom /dev/random
ln /dev/erandom /dev/urandom

It is working if you have /dev/random.ori and /dev/urandom.ori after a reboot...to revert, just remove the script (or else, it will be applied on every boot)...

What is swap?
Swap is, in short, virtual RAM. With swap, a small portion of the hard drive is set aside and used like RAM. The computer will attempt to keep as much information as possible in RAM until the RAM is full. At that point, the computer will begin moving inactive blocks of memory (called pages) to the hard disk, freeing up RAM for active processes. If one of the pages on the hard disk needs to be accessed again, it will be moved back into RAM, and a different inactive page in RAM will be moved onto the hard disk (‘swapped’). The trade off is disks and SD cards are considerably slower than physical RAM, so when something needs to be swapped, there is a noticeable performance hit.
Unlike traditional swap, Android’s Memory Manager kills inactive processes to free up memory. Android signals to the process, then the process will usually write out a small bit of specific information about its state (for example, Google Maps may write out the map view coordinates; Browser might write the URL of the page being viewed) and then the process exits. When you next access that application, it is restarted: the application is loaded from storage, and retrieves the state information that it saved when it last closed. In some applications, this makes it seem as if the application never closed at all. This is not much different from traditional swap, except that Android apps are specially programed to write out very specific information, making Android’s Memory Manager more efficient that swap.

To use swap, the easiest way is to install Swapper2

What is zRAM?
That looks accurate, but it's a little hard to understand. A basic explanantion of zRAM is that zRAM compresses an actual block of RAM in order to have more RAM available to the system. If you make the compression too high with zRAM then your device will actually go slower as a result. An example of going over the top would be adding 256MB of RAM using zRAM on a phone that only has 768MB RAM (that's almost a 50% compression rate because ~600MB is available to the user). zRAM also requires the CPU to compress and decompress the data.

To use zRAM, the easiest way is to install Trickster MOD Kernel Settings

What is exFAT?
Read this: http://www.differencebetween.net/technology/software-technology/difference-between-exfat-and-fat32/#ixzz1k5uLzt4l
Summary:
1.exFAT allows for higher drive capacities than FAT32.
2.exFAT has a larger file size limit than FAT32.
3.exFAT uses a free space bitmap while Fat32 doesn’t.
4.FAT32 has greater support than exFAT.
5.FAT32 doesn’t have file number limits while exFAT does.

What is BLX?
This feature has been developed by Ezekeel and allows to set a customized battery charging limit (100% is the default stock value, if you want, you can set a lower value).
As Ezekeel said, it is commonly accepted that both very low and very high charge states accelerate the degradation of the battery capacity (that is why you should store Li-Ion batteries at around 40% charge).
If you set a charging limit equal to 100, this feature will be disabled.

What is Dynamic Fsync?
This feature has been developed by Faux123 and allows to dynamically manage the synchronous writes performed on file system (FSync).
It uses asynchronous writes when the screen is on, instead of synchronous writes, to have better performance and a slightly lower battery drain, while when the screen is off the synchronous writes are re-enabled to flush all the outstanding writes and prevent possible data loss.

What is Dynamic Dirty Page Writebacks?
This feature has been developed by Christopher83 and allows to dynamically manage the dirty page writebacks with two different intervals, one when the screen is on and another when the screen is off.
It is based on a commit of Francisco Franco, but instead of using hard coded values and of disabling at all the dirty page writebacks while the screen is on (possibility of data loss), I preferred to use a customizable higher dirty page writebacks interval (15 seconds) than the default one (5 seconds) while the screen is on and a customizable default interval (5 seconds) when the screen is off.
By using a higher interval we have better performance and less battery consumption, with a very low risk of data loss.

How to customize the dynamic dirty page writebacks feature (default enabled):

Three new procfs parameters are exposed inside /proc/sys/vm path:
- dynamic_dirty_writeback is the activation status of this feature, set 1 to enable it, set 0 to disable it and use the standard behaviour
- dirty_writeback_active_centisecs is the interval for the dirty page writebacks when the system is active (screen on), the default value is 1500 centisecs (15 seconds)
- dirty_writeback_suspend_centisecs is the interval for the dirty page writebacks when the system is suspended (screen off), the default value is 500 centisecs (5 seconds)

1) By directly editing one of the file written above inside /proc/sys/vm and setting the preferred value (note that set value will be lost after a reboot/shutdown)
2) By using Terminal Emulator (note that set value will be lost after a reboot/shutdown)
- Open Terminal Emulator
- Run this command to disable the dynamic dirty page writebacks feature
Code:
su
echo 0 > /proc/sys/vm/dynamic_dirty_writeback
- Or run this command to re-enable the dynamic dirty page writebacks feature
Code:
su
echo 1 > /proc/sys/vm/dynamic_dirty_writeback
- Run this command to set customize the two intervals (30 seconds while the screen is on, 10 seconds when the screen is off)
Code:
su
echo "3000" > /proc/sys/vm/dirty_writeback_active_centisecs
echo "1000" > /proc/sys/vm/dirty_writeback_suspend_centisecs


What is timer slack controller and dynamic management of the minimal timer slack value?
The timer slack controller is a feature developed by Kirill Shutemov and it allows to set the minimal timer slack value for every process contained within a control group (cgroup).
A timer slack allows the kernel to manage processes wakeup requests at some future time.
Thanks to this feature, the kernel can set a specific timer slack for the involved processes, minimizing the number of wakeups and allowing a lower system's power consumption.
For further info: Timer slack for slacker developers

Chirstoper83 also implemented a new feature in addition to the above one that allows the dynamic management of the minimal timer slack value.
So, it's possible to use different minimal timer slack value when the system is active and when has been suspended.

How to customize the dynamic timer slack controller feature:

Three new cgroup parameters are exposed inside each processes hierarchy contained in /dev/cpuctl path:
- timer_slack.min_slack_ns is the timer slack used when the system is active for the current processes hierarchy
- timer_slack.min_slack_suspend_ns is the timer slack used when the system is suspended for the current processes hierarchy
- timer_slack.effective_slack_suspend_ns is the timer slack currently used

At the moment, the values chosen and used by Blazing Kernel are the following:
- core processes (/dev/cpuctl), 0 ns when the system is active, 50000 ns when the system is suspended
- foreground apps/processes (/dev/cpuctl/apps), 0 ns when the system is active, 250000 ns when the system is suspended
- background non interactive apps/processes (/dev/cpuctl/apps/bg_non_interactive), 100000000 ns when the system is active, 250000000 ns when the system is suspended

1) By directly editing one of the file written above inside /dev/cpuctl and inside each hierarchy subfolder, by setting the preferred value (note that set value will be lost after a reboot/shutdown)
2) By using Terminal Emulator (note that set value will be lost after a reboot/shutdown)
- Open Terminal Emulator
- Run these commands to set the minimal timer slack for generic and core apps/processes
Code:
su
echo 0 > /dev/cpuctl/timer_slack.min_slack_ns
echo 50000 > /dev/cpuctl/timer_slack.min_slack_suspend_ns
- Run these commands to set the minimal timer slack for apps/processes in foreground
Code:
su
echo 0 > /dev/cpuctl/apps/timer_slack.min_slack_ns
echo 100000 > /dev/cpuctl/apps/timer_slack.min_slack_suspend_ns
- Run these commands to set the minimal timer slack for apps/processes in background and non interactive
Code:
su
echo 100000000 > /dev/cpuctl/apps/bg_non_interactive/timer_slack.min_slack_ns
echo 250000000 > /dev/cpuctl/apps/bg_non_interactive/timer_slack.min_slack_suspend_ns


What are CK3 tweaks?
They are actually patches by Con Kolivas (author of BFQ scheduler), more info in commit message here: https://github.com/Ryuinferno/Blazing_Kernel_t1/commit/3fa18eb9feee1c204b20a63f16136dc2b066581d
 
Last edited:

Ryuinferno

Senior Member
Apr 3, 2012
3,548
7,112
ryuinferno.github.io
ROMs Supported:
Basically ALL ROMs!
- stock Samsung ROMs [4.1.2]
- stock based ROMs [4.1.2]
- MIUI [4.1.2]
- CM 10.1 [4.2.2]
- CM 10.1 [4.3]
- CM 10.1 based ROMs [4.2.2]
- CM 10.2 based ROMs [4.3]
- AOKP [4.2.2]
- AOKP based [4.2.2]
- AOKP based [4.3]
- AOSP based[4.2.2]
- AOSP based[4.3]


CHANGELOG:
Code:
[U]v16:[/U]
- Support for PAC ROM
- Support for CM's newly implemented multi-sim framework
- Updated to Linux kernel 3.0.101 (EOL)
- ExFAT module now compiled from source
- Updated recovery to CWM 6.0.4.4
- For explicit changelogs, refer to my Github (commits are more detailed now)

[U]v15:[/U]
- Support for Android 4.3
- Updated to Linux kernel 3.0.98
- Reduced size of kernel modules (kernel zip package now a lot smaller
- Updated recoveries to CWM 6.0.4.0, TWRP to 2.6.3 and Philz to 5.15.0
- New modified CWM recovery! Features:
    - Touch control!
    - Battery status
    - Prompt before commencing backup (avoids accidental backups)
    - Advanced restore for /preload
    - Rainbow mode! (to activate, scroll down the list for 5 times, scroll back up again to deactivate)
- For explicit changelogs, refer to my Github (commits are more detailed now)

[U]v12:[/U]
- Full rebase of kernel source! Now it is at [url]https://github.com/Ryuinferno/Blazing_Kernel_t1[/url]
- With the rebase of sources, hiccups are eliminated, try it and you will know why...;) 
(there were some code errors when patching the old source)
- Updated to Linux kernel 3.0.88
- Data usage stats fixed
- Compiled with Linaro 4.7.4 toolchain optimised for Cortex-A9 (yes, toolchain compiled by me too)
- Updated recoveries to CWM 6.0.3.5, TWRP to 2.6 and Philz to 5.08.5
- Timer slack and dyanmic timer slack control
- CK3 tweaks
- Updated graphics driver (now also compiled with Linaro!)
- For explicit changelogs, refer to my Github (commits are more detailed now)

[U]v11:[/U]
- Updated to Linux kernel 3.0.75
- BLX
- Dynamic Fsync
- Dynamic Dirty Page Writeback
- Dyanmic mutex spin management
- CRC32 algorithm
- Updated voltage control
- Latest sync with CM for better compatibility
- Fixed MTP not working in stock for certain people
- Philz recovery now available!
- Compiled using Linaro 4.7.4 toolchain 

[U]v10:[/U]
- Updated to Linux kernel 3.0.60 (this is a real update, applied patches [B]step by step[/B] instead of skiping those in between 
(there's one kernel that skipped most of the patches and went to 3.0.75 straight away lol, 
reverted the 3.0.76 and applied 3.0.77, and claims that it is on 3.0.77 now...lol...
and I tried to advice him, but always ignored...:silly:))
- Fixed random reboots in recovery 
- Removed interactiveX governor (main cause of the reboots)
- zRAM support (for fun...lol)
- swap support (for fun...lol)
- exFAT module support (sdcards can be formatted in exFAT format now)
- Compiled using Linaro 4.7.3 toolchain 
  
[U]v9:[/U]
- Initial dual base kernel commit
- Bring forward all features from v8
- Dual boot support

Source code:
https://github.com/Ryuinferno/GT-I9100G-Blazing_Kernel (old)
https://github.com/Ryuinferno/Blazing_Kernel_t1 (new)
 
Last edited:

Ryuinferno

Senior Member
Apr 3, 2012
3,548
7,112
ryuinferno.github.io
Dual Booting
This feature requires extra attention, so please read carefully!
1. Decide which ROM you want to place as secondary ROM. The most suitable ROM would be the one that has less updates and stable. Keep in mind that currently all secondary ROMs will start off clean, means ALL DATA WILL BE CLEARED, and /data is 1GB in size.
Now, decide between step 2 or 3:

Step 2 (Current ROM->Primary, another ROM->Secondary)
1. If you decide to keep using the current ROM you are running as primary ROM, please make a FULL BACKUP now.
2. Since you decide to use another ROM as secondary ROM, AFTER making a backup, flash the other ROM. Then, flash the latest kernel zip package.
3. Now, reboot the phone and install the control app & Terminal Emulator (install Terminal Emulator first). You will see this:
gEcGCAF.png

4. Hit the Deploy Files button, then the Dual Boot Setup button and wait for the process to finish.
5. The default ROM now is your phone ROM (primary ROM). To boot into SD ROM (secondary ROM) or from SD ROM to phone ROM, hit the Switch ROM button.
6. Restore your primary ROM now. But remember to flash the kernel zip package again.
7. Booting time may take longer as you are dual booting and dalvik-cache is building up.
8. Repeat all the steps above every time you wanna change new ROMs (means new zip packages).


Step 3 (Current ROM->Secondary, another ROM->Primary)

1. If you decide to use the current ROM as secondary and do not mind about data loss, please flash the latest kernel zip package now.
2. Now, reboot the phone and install the control app & Terminal Emulator (install Terminal Emulator first). You will see this:
gEcGCAF.png

3. Hit the Deploy Files button, then the Dual Boot Setup button and wait for the process to finish.
4. The default ROM now is your phone ROM (primary ROM). To boot into SD ROM (secondary ROM) or from SD ROM to phone ROM, hit the Switch ROM button. (Will show current ROM in the future)
5. Flash the new ROM you want to use as primary now. Remember to flash the kernel zip too.
6. Booting time may take longer as you are dual booting and dalvik-cache is building up.
7. Repeat all the steps above every time you wanna change new ROMs (means new zip packages).



**NOTE: MTP, USB mass storage or ADB and GPS does not work on secondary ROM
 
Last edited:
F

fuss132

Guest
Aosp + Stock dualboot?
Wow hows that working? :)
All in one kernel?

Sent from my GT-I9100G using xda app-developers app
 

Ryuinferno

Senior Member
Apr 3, 2012
3,548
7,112
ryuinferno.github.io
Guys, anyone using stock based MIUI ROM, please check in /system/framework and see whether you have a file named "framework2.jar" or not...If you don't have, DO NOT use this on MIUI yet! I repeat, DO NOT USE IT YET! I need to configure more files...:)...and please report back here...

Yup, confirmed working...:)
 
Last edited:

amit.inchal

Senior Member
Sep 26, 2012
380
176
Bangalore
Oh my god!!!!! Was my first expression wen i read the title......
Oh [email protected]#k was the reaction wen i read op......
Awesome work brother......
Lots and lots of thnx to u buddy.....
Genius is the only word tht comes to me for u now.....:thumbup:

Sent from my GT-I9100G using xda app-developers app
 
  • Like
Reactions: Ryuinferno

biagio7xD

Senior Member
Dec 14, 2012
543
1,890
fantastic =).....any question...do you compile it with cm source and this command

. build/envsetup.sh
breakfast i9100g
make bootimage

or no ? =) thanks for all
 

mortallkombat

Senior Member
Dec 27, 2010
240
8
Hmmmmmmmmmm don't know what 2 say yet but will still stay on v8 for a couple of days b4 trying this out cos I just flashed v8 2day......wanna ask if some1 doesn't want 2 dual boot, do d person really need this kernel over v8.....? Looks like d v8 will be as stable as pre 8 for me....its working fine since mrng....so this thread means d other thread is closed I guess
Well I can't forget 2 say thanks 4 d progress.....thumbs up

Sent from my GT-I9100G using xda premium
 

Ryuinferno

Senior Member
Apr 3, 2012
3,548
7,112
ryuinferno.github.io
fantastic =).....any question...do you compile it with cm source and this command

. build/envsetup.sh
breakfast i9100g
make bootimage

or no ? =) thanks for all

No

Hmmmmmmmmmm don't know what 2 say yet but will still stay on v8 for a couple of days b4 trying this out cos I just flashed v8 2day......wanna ask if some1 doesn't want 2 dual boot, do d person really need this kernel over v8.....? Looks like d v8 will be as stable as pre 8 for me....its working fine since mrng....so this thread means d other thread is closed I guess
Well I can't forget 2 say thanks 4 d progress.....thumbs up

Sent from my GT-I9100G using xda premium

Just flash it over...the source used for compilation is different from v8...you can use the kernel as usual...the dual boot is just for those who wants it (which requires extra steps)...;)
 

Top Liked Posts

  • There are no posts matching your filters.
  • 91
    Blazing Kernel v16


    **Note: Those coming from older versions and has dual booted, you must extract and place the whole "system/lib/modules" folder from the kernel zip package into /sdcard/SDRoms/update, so it will be like this: /sdcard/SDRoms/update/system/lib/modules. Just reboot and everything will be fine! ;)

    Standard disclaimer from CyanogenMod:
    Code:
    #include 
    /*
     * Your warranty is now void.
     *
     * I am not responsible for bricked devices, dead SD cards,
     * thermonuclear war, or you getting fired because the alarm app failed. Please
     * do some research if you have any concerns about features included in this kernel
     * before flashing it! YOU are choosing to make these modifications, and if
     * you point the finger at me for messing up your device, I will laugh at you.
     *
     */

    Oh yeah!!! I finally made it! A kernel similar to Siyah kernel! You can use this on AOSP 4.2.2 ROMs or stock Sammy 4.1.2 ROMs, it will work in both! Plus, using a similar dual booting method like what @fuss132 did, you can now dual boot stock+stock, AOSP+AOSP or stock+AOSP!

    Features:
    ** Most of my kernel features can be controlled using Trickster Mod Kernel Settings

    - Can be flashed directly using stock recovery!
    - Supports DUAL BOOTING
    - Compiled using CM source
    - Compiled using Linaro toolchain 4.7.4 by me! (optimised for Cortex-A9 architecture by me)
    - Linux kernel version 3.0.98
    - 3 versions of recovery available (different zImage): Philz, TWRP and CWM!
    - Modified CWM to support /preload partition and gesture control: https://github.com/Ryuinferno/android_bootable_recovery
    - Default scheduler is cfq
    - Default governor is interactive
    - MMC_CAP_ERASE already disabled by Samsung -> no more brick bug
    - Supports CIFS
    - Supports NFS
    - USB fast charge
    - Custom voltage settings
    - Frandom support!
    - Patched /dev/random
    - More RAM (original=769 MB, Blazing Kernel=774MB)
    - Additional governors: HYPER, Scary, wheatley, abyssplug, minmax, lulzactive, lazy, pegasusq, lagfree, smartassV2
    - Addtional I/O schedulers: vr, sio, row
    - swap support
    - zRAM support
    - exFAT module support
    - Dynamic Fsync
    - Dynamic Dirty Page Writeback
    - Battery Life eXtender (BLX)
    - CK3 tweaks
    - Timer slack
    - Dynamic timer slack control
    - Miscellaneous tweaks

    Stock only features:
    ~ Custom bootanimation (just place bootanimtion.zip in /system/media; to restore original bootanimation, just delete the bootanimtion.zip in /system/media) [AOSP already has this]
    ~ Custom boot sound (just place PowerOn.ogg in /system/media; to mute, create an empty file named "mute" in /system/media; to unmute, create an empty file named "unmute" in /system/media ; to restore original boot sound, create an empty file named "ori_sound" in /system/media)
    ~ Init.d scripts support (Place scripts in /system/etc/init.d or /data/etc/init.d) [AOSP already has this]​

    Bugs:
    ** These bugs in AOSP are a compromise to get the kernel working, the code used for vibrations and touchkey lights are completely different, until I become a sensei in C, it can't be fixed for now
    AOSP 4.2.2
    - Cannot control vibration intensity
    - Cannot control touchkey light duration or turn on/off

    AOSP 4.3:
    - Cannot control vibration intensity
    - Slim ROM: Cannot control touchkey lights because Slim is still using old method for now

    Stock:
    - Cannot control touchkey light duration or turn on/off Solved​

    Requirements:
    - Running a stock 4.1.2 Samsung ROM or stock 4.1.2 based ROM
    - Running a AOSP 4.2.2 ROM
    - Running a AOSP 4.3 ROM
    - At least 3 GB in internal storage if you want to dual boot

    Instructions:
    Flash via stock or custom recovery (Safest and easiest method):
    1. Choose your recovery type: CWM6 or TWRP.
    2. Download the corresponding zip package.
    3. Place in sdcard (external sdcard for those running stock recovery)
    4. Flash the zip.
    5. Reboot. It may take a little while as the kernel has lots of things to configure.​

    NOTE:
    To those who wanna provide logs, kindly refer to this post: http://forum.xda-developers.com/showpost.php?p=39014273&postcount=201



    XDA:DevDB Information
    Blazing Kernel v16, a Kernel for the Samsung Galaxy S II

    Contributors
    Ryuinferno
    Kernel Special Features: Dual boot and various kernel optimisations!

    Version Information
    Status: Stable

    Created 2013-07-07
    Last Updated 2013-10-24
    20
    ROMs Supported:
    Basically ALL ROMs!
    - stock Samsung ROMs [4.1.2]
    - stock based ROMs [4.1.2]
    - MIUI [4.1.2]
    - CM 10.1 [4.2.2]
    - CM 10.1 [4.3]
    - CM 10.1 based ROMs [4.2.2]
    - CM 10.2 based ROMs [4.3]
    - AOKP [4.2.2]
    - AOKP based [4.2.2]
    - AOKP based [4.3]
    - AOSP based[4.2.2]
    - AOSP based[4.3]


    CHANGELOG:
    Code:
    [U]v16:[/U]
    - Support for PAC ROM
    - Support for CM's newly implemented multi-sim framework
    - Updated to Linux kernel 3.0.101 (EOL)
    - ExFAT module now compiled from source
    - Updated recovery to CWM 6.0.4.4
    - For explicit changelogs, refer to my Github (commits are more detailed now)
    
    [U]v15:[/U]
    - Support for Android 4.3
    - Updated to Linux kernel 3.0.98
    - Reduced size of kernel modules (kernel zip package now a lot smaller
    - Updated recoveries to CWM 6.0.4.0, TWRP to 2.6.3 and Philz to 5.15.0
    - New modified CWM recovery! Features:
        - Touch control!
        - Battery status
        - Prompt before commencing backup (avoids accidental backups)
        - Advanced restore for /preload
        - Rainbow mode! (to activate, scroll down the list for 5 times, scroll back up again to deactivate)
    - For explicit changelogs, refer to my Github (commits are more detailed now)
    
    [U]v12:[/U]
    - Full rebase of kernel source! Now it is at [url]https://github.com/Ryuinferno/Blazing_Kernel_t1[/url]
    - With the rebase of sources, hiccups are eliminated, try it and you will know why...;) 
    (there were some code errors when patching the old source)
    - Updated to Linux kernel 3.0.88
    - Data usage stats fixed
    - Compiled with Linaro 4.7.4 toolchain optimised for Cortex-A9 (yes, toolchain compiled by me too)
    - Updated recoveries to CWM 6.0.3.5, TWRP to 2.6 and Philz to 5.08.5
    - Timer slack and dyanmic timer slack control
    - CK3 tweaks
    - Updated graphics driver (now also compiled with Linaro!)
    - For explicit changelogs, refer to my Github (commits are more detailed now)
    
    [U]v11:[/U]
    - Updated to Linux kernel 3.0.75
    - BLX
    - Dynamic Fsync
    - Dynamic Dirty Page Writeback
    - Dyanmic mutex spin management
    - CRC32 algorithm
    - Updated voltage control
    - Latest sync with CM for better compatibility
    - Fixed MTP not working in stock for certain people
    - Philz recovery now available!
    - Compiled using Linaro 4.7.4 toolchain 
    
    [U]v10:[/U]
    - Updated to Linux kernel 3.0.60 (this is a real update, applied patches [B]step by step[/B] instead of skiping those in between 
    (there's one kernel that skipped most of the patches and went to 3.0.75 straight away lol, 
    reverted the 3.0.76 and applied 3.0.77, and claims that it is on 3.0.77 now...lol...
    and I tried to advice him, but always ignored...:silly:))
    - Fixed random reboots in recovery 
    - Removed interactiveX governor (main cause of the reboots)
    - zRAM support (for fun...lol)
    - swap support (for fun...lol)
    - exFAT module support (sdcards can be formatted in exFAT format now)
    - Compiled using Linaro 4.7.3 toolchain 
      
    [U]v9:[/U]
    - Initial dual base kernel commit
    - Bring forward all features from v8
    - Dual boot support

    Source code:
    https://github.com/Ryuinferno/GT-I9100G-Blazing_Kernel (old)
    https://github.com/Ryuinferno/Blazing_Kernel_t1 (new)
    17
    Dual Booting
    This feature requires extra attention, so please read carefully!
    1. Decide which ROM you want to place as secondary ROM. The most suitable ROM would be the one that has less updates and stable. Keep in mind that currently all secondary ROMs will start off clean, means ALL DATA WILL BE CLEARED, and /data is 1GB in size.
    Now, decide between step 2 or 3:

    Step 2 (Current ROM->Primary, another ROM->Secondary)
    1. If you decide to keep using the current ROM you are running as primary ROM, please make a FULL BACKUP now.
    2. Since you decide to use another ROM as secondary ROM, AFTER making a backup, flash the other ROM. Then, flash the latest kernel zip package.
    3. Now, reboot the phone and install the control app & Terminal Emulator (install Terminal Emulator first). You will see this:
    gEcGCAF.png

    4. Hit the Deploy Files button, then the Dual Boot Setup button and wait for the process to finish.
    5. The default ROM now is your phone ROM (primary ROM). To boot into SD ROM (secondary ROM) or from SD ROM to phone ROM, hit the Switch ROM button.
    6. Restore your primary ROM now. But remember to flash the kernel zip package again.
    7. Booting time may take longer as you are dual booting and dalvik-cache is building up.
    8. Repeat all the steps above every time you wanna change new ROMs (means new zip packages).


    Step 3 (Current ROM->Secondary, another ROM->Primary)

    1. If you decide to use the current ROM as secondary and do not mind about data loss, please flash the latest kernel zip package now.
    2. Now, reboot the phone and install the control app & Terminal Emulator (install Terminal Emulator first). You will see this:
    gEcGCAF.png

    3. Hit the Deploy Files button, then the Dual Boot Setup button and wait for the process to finish.
    4. The default ROM now is your phone ROM (primary ROM). To boot into SD ROM (secondary ROM) or from SD ROM to phone ROM, hit the Switch ROM button. (Will show current ROM in the future)
    5. Flash the new ROM you want to use as primary now. Remember to flash the kernel zip too.
    6. Booting time may take longer as you are dual booting and dalvik-cache is building up.
    7. Repeat all the steps above every time you wanna change new ROMs (means new zip packages).



    **NOTE: MTP, USB mass storage or ADB and GPS does not work on secondary ROM
    16
    Ho yeah...after debugging for half a day, I finally fixed the random reboots in recovery...expect v10 anytime soon...:)
    13
    Kernel Features Explained

    What is frandom?
    v6 and onwards supports frandom, which is a faster (10-50 times) random number generator than urandom...it generally decreases lag in GUI...if you are using CrossBreeder, it will automatically utilise it...if not, place this script in /etc/init.d and set permissions as rwxrwxrwx (name it whatever you want) and reboot:

    Code:
    #!/system/bin/sh
    # Ryuinferno @ XDA
    
    chmod 666 /dev/frandom
    chmod 666 /dev/erandom
    mv /dev/random /dev/random.ori
    mv /dev/urandom /dev/urandom.ori
    ln /dev/frandom /dev/random
    ln /dev/erandom /dev/urandom

    It is working if you have /dev/random.ori and /dev/urandom.ori after a reboot...to revert, just remove the script (or else, it will be applied on every boot)...

    What is swap?
    Swap is, in short, virtual RAM. With swap, a small portion of the hard drive is set aside and used like RAM. The computer will attempt to keep as much information as possible in RAM until the RAM is full. At that point, the computer will begin moving inactive blocks of memory (called pages) to the hard disk, freeing up RAM for active processes. If one of the pages on the hard disk needs to be accessed again, it will be moved back into RAM, and a different inactive page in RAM will be moved onto the hard disk (‘swapped’). The trade off is disks and SD cards are considerably slower than physical RAM, so when something needs to be swapped, there is a noticeable performance hit.
    Unlike traditional swap, Android’s Memory Manager kills inactive processes to free up memory. Android signals to the process, then the process will usually write out a small bit of specific information about its state (for example, Google Maps may write out the map view coordinates; Browser might write the URL of the page being viewed) and then the process exits. When you next access that application, it is restarted: the application is loaded from storage, and retrieves the state information that it saved when it last closed. In some applications, this makes it seem as if the application never closed at all. This is not much different from traditional swap, except that Android apps are specially programed to write out very specific information, making Android’s Memory Manager more efficient that swap.

    To use swap, the easiest way is to install Swapper2

    What is zRAM?
    That looks accurate, but it's a little hard to understand. A basic explanantion of zRAM is that zRAM compresses an actual block of RAM in order to have more RAM available to the system. If you make the compression too high with zRAM then your device will actually go slower as a result. An example of going over the top would be adding 256MB of RAM using zRAM on a phone that only has 768MB RAM (that's almost a 50% compression rate because ~600MB is available to the user). zRAM also requires the CPU to compress and decompress the data.

    To use zRAM, the easiest way is to install Trickster MOD Kernel Settings

    What is exFAT?
    Read this: http://www.differencebetween.net/technology/software-technology/difference-between-exfat-and-fat32/#ixzz1k5uLzt4l
    Summary:
    1.exFAT allows for higher drive capacities than FAT32.
    2.exFAT has a larger file size limit than FAT32.
    3.exFAT uses a free space bitmap while Fat32 doesn’t.
    4.FAT32 has greater support than exFAT.
    5.FAT32 doesn’t have file number limits while exFAT does.

    What is BLX?
    This feature has been developed by Ezekeel and allows to set a customized battery charging limit (100% is the default stock value, if you want, you can set a lower value).
    As Ezekeel said, it is commonly accepted that both very low and very high charge states accelerate the degradation of the battery capacity (that is why you should store Li-Ion batteries at around 40% charge).
    If you set a charging limit equal to 100, this feature will be disabled.

    What is Dynamic Fsync?
    This feature has been developed by Faux123 and allows to dynamically manage the synchronous writes performed on file system (FSync).
    It uses asynchronous writes when the screen is on, instead of synchronous writes, to have better performance and a slightly lower battery drain, while when the screen is off the synchronous writes are re-enabled to flush all the outstanding writes and prevent possible data loss.

    What is Dynamic Dirty Page Writebacks?
    This feature has been developed by Christopher83 and allows to dynamically manage the dirty page writebacks with two different intervals, one when the screen is on and another when the screen is off.
    It is based on a commit of Francisco Franco, but instead of using hard coded values and of disabling at all the dirty page writebacks while the screen is on (possibility of data loss), I preferred to use a customizable higher dirty page writebacks interval (15 seconds) than the default one (5 seconds) while the screen is on and a customizable default interval (5 seconds) when the screen is off.
    By using a higher interval we have better performance and less battery consumption, with a very low risk of data loss.

    How to customize the dynamic dirty page writebacks feature (default enabled):

    Three new procfs parameters are exposed inside /proc/sys/vm path:
    - dynamic_dirty_writeback is the activation status of this feature, set 1 to enable it, set 0 to disable it and use the standard behaviour
    - dirty_writeback_active_centisecs is the interval for the dirty page writebacks when the system is active (screen on), the default value is 1500 centisecs (15 seconds)
    - dirty_writeback_suspend_centisecs is the interval for the dirty page writebacks when the system is suspended (screen off), the default value is 500 centisecs (5 seconds)

    1) By directly editing one of the file written above inside /proc/sys/vm and setting the preferred value (note that set value will be lost after a reboot/shutdown)
    2) By using Terminal Emulator (note that set value will be lost after a reboot/shutdown)
    - Open Terminal Emulator
    - Run this command to disable the dynamic dirty page writebacks feature
    Code:
    su
    echo 0 > /proc/sys/vm/dynamic_dirty_writeback
    - Or run this command to re-enable the dynamic dirty page writebacks feature
    Code:
    su
    echo 1 > /proc/sys/vm/dynamic_dirty_writeback
    - Run this command to set customize the two intervals (30 seconds while the screen is on, 10 seconds when the screen is off)
    Code:
    su
    echo "3000" > /proc/sys/vm/dirty_writeback_active_centisecs
    echo "1000" > /proc/sys/vm/dirty_writeback_suspend_centisecs


    What is timer slack controller and dynamic management of the minimal timer slack value?
    The timer slack controller is a feature developed by Kirill Shutemov and it allows to set the minimal timer slack value for every process contained within a control group (cgroup).
    A timer slack allows the kernel to manage processes wakeup requests at some future time.
    Thanks to this feature, the kernel can set a specific timer slack for the involved processes, minimizing the number of wakeups and allowing a lower system's power consumption.
    For further info: Timer slack for slacker developers

    Chirstoper83 also implemented a new feature in addition to the above one that allows the dynamic management of the minimal timer slack value.
    So, it's possible to use different minimal timer slack value when the system is active and when has been suspended.

    How to customize the dynamic timer slack controller feature:

    Three new cgroup parameters are exposed inside each processes hierarchy contained in /dev/cpuctl path:
    - timer_slack.min_slack_ns is the timer slack used when the system is active for the current processes hierarchy
    - timer_slack.min_slack_suspend_ns is the timer slack used when the system is suspended for the current processes hierarchy
    - timer_slack.effective_slack_suspend_ns is the timer slack currently used

    At the moment, the values chosen and used by Blazing Kernel are the following:
    - core processes (/dev/cpuctl), 0 ns when the system is active, 50000 ns when the system is suspended
    - foreground apps/processes (/dev/cpuctl/apps), 0 ns when the system is active, 250000 ns when the system is suspended
    - background non interactive apps/processes (/dev/cpuctl/apps/bg_non_interactive), 100000000 ns when the system is active, 250000000 ns when the system is suspended

    1) By directly editing one of the file written above inside /dev/cpuctl and inside each hierarchy subfolder, by setting the preferred value (note that set value will be lost after a reboot/shutdown)
    2) By using Terminal Emulator (note that set value will be lost after a reboot/shutdown)
    - Open Terminal Emulator
    - Run these commands to set the minimal timer slack for generic and core apps/processes
    Code:
    su
    echo 0 > /dev/cpuctl/timer_slack.min_slack_ns
    echo 50000 > /dev/cpuctl/timer_slack.min_slack_suspend_ns
    - Run these commands to set the minimal timer slack for apps/processes in foreground
    Code:
    su
    echo 0 > /dev/cpuctl/apps/timer_slack.min_slack_ns
    echo 100000 > /dev/cpuctl/apps/timer_slack.min_slack_suspend_ns
    - Run these commands to set the minimal timer slack for apps/processes in background and non interactive
    Code:
    su
    echo 100000000 > /dev/cpuctl/apps/bg_non_interactive/timer_slack.min_slack_ns
    echo 250000000 > /dev/cpuctl/apps/bg_non_interactive/timer_slack.min_slack_suspend_ns


    What are CK3 tweaks?
    They are actually patches by Con Kolivas (author of BFQ scheduler), more info in commit message here: https://github.com/Ryuinferno/Blazing_Kernel_t1/commit/3fa18eb9feee1c204b20a63f16136dc2b066581d