When I started to hack this kernel I decided to build some stuff as modules to make an as much as possible light kernel.
Modules are pieces of code that can be loaded and unloaded into the kernel upon demand. They extend the functionality of the kernel without the need to reboot the system. For example, one type of module is the device driver, which allows the kernel to access hardware connected to the system. Without modules, we would have to build monolithic kernels and add new functionality directly into the kernel image. Besides having larger kernels, this has the disadvantage of requiring us to rebuild and reboot the kernel every time we want new functionality.
Below the stuff that compiled as modules:
- Conservative governor
- Deadline I/O scheduler
There are also other parts of the kernel compiled as modules but loaded by default.
In order to load these module I created some scripts that may run from a terminal emulator or may be copied from /res/scripts to /system/etc/init.d to run every time the phone boots. These scripts must have executable permission to be able to run. Since 1.7.5 version Semaphore Script Manager application by HM.Carbide may be used to handle the scripts easily.
A brief description of each module:
Conservative CPU governor (enable_conservative)
The default CPU governor of Semaphore kernel is the ondemand. Ondemand uses the maximum CPU frequency immediately after the CPU load is above a specific threshold. This makes the device to respond quickly to the demand of load and make it faster.
The conservative governor, when a load is detected above a threshold it starts to scale step by step the frequencies (100,200,400...) until it reaches to the highest frequency. This takes some time and it makes the device to react a little slower. But conservative has better battery life.
CIFS (Common Internet File System) protocol is used to mount shared folder usually of Windows machines. The mounted folder may be accessed from the phone as a local directory. After loading this module you can handle mounting using application from Market as CIFS manager and Mount Manager.
Netfilter (iptables) is a set of modules that is used in Linux for firewall or routing purposes. These modules are needed for firewall applications (Droidwall for example) or for Wifi or USB tethering.
TUN module is needed for VPN connections.
Deadline I/O scheduler (enable_deadline)
By default the noop I/O scheduler is used by Semaphore kernel. If you want to change it you have the option to load and enable the deadline scheduler.
Overclocking Scripts (enable_oc_1000, enable_oc_1200, enable_oc_1300)
These scripts are used to enable overclocking. By default the kernel (as the stock one) uses 5 frequency steps: 100,200,400,800,1000 Mhz. Using enable_oc_1200 or enable_oc_1300 the highest frequency step 1000Mhz is replaced with the 1200MHz/1300MHz step. Using enable_oc_1000 the OC frequency resets to default.
enable_oc_1200, enable_oc_1300 are also exist in Test section of Semaphore Script Manager just for testing purpose. After reboot the phone will reset to default 1000MHz frequency.
Speedmod Color scripts
These scripts do not load modules but are used to enable the speedmod color presets:
- enable_sm_cold script for SpeedMod cold preset
- enable_sm_warm script for SpeedMod warm preset
- enable_sm_neutral script for SpeedMod neutral preset (please note that this is enabled by default)
Virtual /cache to 50MB (enable_cache_50)
You may use this script if you want to download an application larger than 30MB from Android Market. After running this script check that the /cache partition has grown to 50MB from chainfire's ext4 application. Please note that you have to disable this option before converting file systems to ext4.
Chainfire's tweaks to the kernel scheduler
Chainfire's tweaks to the I/O buffering of the kernel.
HM.Carbide's Addon Scripts
Low Memory Killer (LMK)
32mb-multitasking, 48mb-default, 64mb-bigmem, 92mb-chainfire
Hard to kill launcher
reconfigures the priorities
SD-Card read ahead
128kb-default, 256kb-64kb-best, 512kb-64kb-good, 1024kb-64kb, 3072kb-chainfire
Restores the sound files, if they were backuped by the kernel (since 1.7.5)