[Xperia Arc Android Development] wedgess:
LuPuS MultiBoot JB Kernel​

​

Instaed of updating the other LuPuS kernel thread as Multiboot i'm posting multiboot kernel here on its own thread so any questions problems can be asked and anwsered here, As I don't have the device I'm asking all of you to help eachother out, if or when I can;t respond. Multiboot was created by CosmicDan on the Xperia PLAY thread big props to him for getting this working. I'm just proting it to your ARC & ARCS.

Please read this thread fully before flashing this kernel.

Disclaimer

[COLOR="DarkOrchid"]#include[/COLOR] [COLOR="Magenta"][/COLOR]
[COLOR="Blue"]/*
* Your warranty is now void.. LOL I guess you knew it already.
*
* I am not responsible for bricked devices, dead SD cards,
* thermonuclear war, you getting dumped or you getting fired because your phone
* bootloops and alarm does not go off. Please do some research if you have any
* concerns about features included in my kernel before using it! YOU and only
* YOU are choosing to make these modifications.
*/

[COLOR="Magenta"]#if[/COLOR]
You have a [COLOR="DarkGreen"]question[/COLOR] post it in the [COLOR="DarkRed"]thread[/COLOR],
Instead of [COLOR="DarkGreen"]Pm'ing me[/COLOR], as other users may
experience you [COLOR="DarkRed"]problems[/COLOR]
[COLOR="Magenta"]#endif[/COLOR][/COLOR]

Multiboot Aware Info​

Ok so first off you must make ROMS multiboot aware by editing the updater-script.

Do NOT install a ROM ZIP in Slot 2 or 3 until it is marked "multiboot-aware". [/U]Otherwise the ROM will format/install to your internal, no matter *what* you do[/B]

To make the changes ill give an example of PACMan ROM

NON-MULTIBOOT AWARE

mount("yaffs2", "MTD", "system", "/system");
package_extract_file("system/bin/backuptool.sh", "/tmp/backuptool.sh");
package_extract_file("system/bin/backuptool.functions", "/tmp/backuptool.functions");
set_perm(0, 0, 0777, "/tmp/backuptool.sh");
set_perm(0, 0, 0644, "/tmp/backuptool.functions");
run_program("/tmp/backuptool.sh", "backup");
unmount("/system");
show_progress(0.500000, 0);
format("yaffs2", "MTD", "system", "0", "/system");
mount("yaffs2", "MTD", "system", "/system");
package_extract_dir("system", "/system");
symlink("Roboto-Bold.ttf", "/system/fonts/DroidSans-Bold.ttf");
symlink("Roboto-Regular.ttf", "/system/fonts/DroidSans.ttf");
symlink("busybox", "/system/xbin/[", "/system/xbin/[[",
"/system/xbin/adjtimex", "/system/xbin/arp", "/system/xbin/ash",
"/system/xbin/awk", "/system/xbin/base64", "/system/xbin/basename",

Change to---

MULTIBOOT AWARE

show_progress(0.500000, 0);
run_program("/sbin/busybox", "mount", "/system");
run_program("/sbin/busybox", "rm", "-Rf", "/system/*");
package_extract_dir("system", "/system");
symlink("Roboto-Bold.ttf", "/system/fonts/DroidSans-Bold.ttf");
symlink("Roboto-Regular.ttf", "/system/fonts/DroidSans.ttf");
symlink("busybox", "/system/xbin/[", "/system/xbin/[[",
"/system/xbin/adjtimex", "/system/xbin/arp", "/system/xbin/ash",
"/system/xbin/awk", "/system/xbin/base64", "/system/xbin/basename",

U don't need to remove backuptool I just did :)

Its just this that needs to be changed the above is an example so people dont get confused :)

This

format("yaffs2", "MTD", "system", "0", "/system");
mount("yaffs2", "MTD", "system", "/system");

To This

run_program("/sbin/busybox", "mount", "/system");
run_program("/sbin/busybox", "rm", "-Rf", "/system/*");

Bugs (important):

- Native App2SD is broken and unreliable. I have tried to fix it but I don't know why it's happening. Do yourself a favor and switch to Link2SD with an ext partition - it's faster, more reliable and allows sharing apps between different slots. (Tip: After installing Link2SD, use it's settings to change 'Default Install Location' to 'Internal' to stop Android ROM from installing apps on SDCard automatically)

- If your ROM has a "Reboot to Recovery" option, using it will load a broken Recovery where no mounts work. I can't fix this, so simply don't use it (just use Vol-Down on normal reboot).

After you made the changes to the ROMS updater script that ROM can now be flashed in Slot 2 or Slot 3.

To get around a ROM not being multiboot aware (if you want to install it in Slot 2 or 3), simply install in Internal (Slot 1) as normal, then set up the second or third slot with "Copy from Internal" instead of "Blank". Then of course you can reformat and reinstall on Internal.

Make sure your SDCard is free of errors. Do a "CHKDSK /f x:" (Check for Errors on x drive and auto-fix) in Windows. Also do this again if you do a battery pull or get hard-reboot in slot 2 or 3 (I will try to add options for this later, see Future Plans section at bottom).

To delete a slot, manually remove the system2/userdata2 (for slot 2) IMG files from the root of your SDCard (will add a maintenance menu option later to do this).

*Never* unmount SDCard in Recovery for Slot 2 and 3. But Mounting USB Storage is 100% fine.

...can't think of anything else right now.

First-time users - Enter Multiboot Menu (Vol-Down key) and go to Internal > Recovery, then format system, data and cache before doing anything else. Very important.

Added Io-schedulers --

- Noop

- Anticipatory

- Deadline

- CFQ

- BFQ

- SIO

Added Governors --

- lagfree

- brazillianwax

- smoothass

- scary

- savagedzen

- smartass

- smartassv2

- interactivex

- minmax

- + the 5or6 that are there with FXP

Lulzactive - Thanks to Tegrak

Based on Interactive and Smartass. When workload is greater than or equal to 60%, the governor scales up

CPU to next higher step. When workload is less than 60%, governor scales down CPU to next lower step.

When screen is off, frequency is locked to global scaling minimum frequency

Virtuous

Virtuous is a modded smartassV2 which gives even more battery time then smartassV2:)

Intellidemand - Thanks to faux123

This is an intelligent ondemand that enters browsing mode to limit max frequency when GPU is idling,

and (exits browsing mode) behaves like ondemand when GPU is busy; to deliver performance for gaming and such.

Intellidemand does not jump to highest frequency when screen is off.

Lazy - Thanks to Ezekeel

The Idea here is to eliminate any instabilities caused by fast frequency switching by ondemand.

Lazy governor polls more often than ondemand, but changes frequency only after completing min_time_state

on a step overriding sampling interval.

Lazy also has a screenoff_maxfreq parameter which when enabled will cause the governor to always

select the maximum frequency while the screen is off.

-Ondemandx:

Basically an ondemand with suspend/wake profiles. This governor is supposed to be a battery friendly ondemand. When screen is off, max frequency is capped at 500 mhz. Even though ondemand is the default governor in many kernel and is considered safe/stable, the support for ondemand/ondemandX depends on CPU capability to do fast frequency switching which are very low latency frequency transitions. I have read somewhere that the performance of ondemand/ondemandx were significantly varying for different i/o schedulers. This is not true for most of the other governors. I personally feel ondemand/ondemandx goes best with SIO I/O scheduler.

-Lionheart:

Is a conservative-based governor. The tunables (such as the thresholds and sampling rate) were changed so the governor behaves more like the performance one, at the cost of battery as the scaling is very aggressive.

To 'experience' Lionheart using conservative, try these tweaks:

sampling_rate:10000 or 20000 or 50000, whichever you feel is safer. (transition latency of the CPU is something below 10ms/10,000uS hence using 10,000 might not be safe).

up_threshold:60

down_threshold:30

freq_step:5

Lionheart goes well with deadline i/o scheduler. When it comes to smoothness (not considering battery drain), a tuned conservative delivers more as compared to a tuned ondemand.

BadAss Governor:

Badass removes all of this "fast peaking" to the max frequency. Badass will also take the gpu load into consideration. If the gpu is moderately busy it will bypass the above check and clock the cpu with 1024Mhz. If the gpu is crushed under load, badass will lift the restrictions to the cpu.

Superbad -

A "superbad" super smooth rendition of a highly optimized "smartass" governor!

Darkside -

A "slightly more agressive smart" optimized governor!

-SLQB - (SLAB allocator with Queue)

-(both)

This memory allocator is designed for small number of CPUs system (such as desktop or smart phone devices). This allocator is design to be simple and it is optimized for using order-0 pages as much as possible (order-0 pages are the simplest therefore quickest type of memory in a Linux system to allocate).

CosmicDan

- For the amazing MultiBoot:)

paxChristos

FXP - Jerpelea

- Sources

DooMLoRD

- Everything he's done for Xperia

Sinkster

- For testing :)

tempest918

- For the New Logo

Anyone else I have left out

Post 2 Contains Downloads And Changelogs / Whats Included

Kernel Sources

Branch jellybean

https://github.com/garwedgess/semc-kernel-msm7x30