[KITCHEN] Extending Sztupy's VirtualBox image Samba + Eclipse IDE - Galaxy S I9000 Android Development

So, I've worked a little bit with sztupy's creation from here:
http://forum.xda-developers.com/showthread.php?t=817387
and I decided to tweak/improve it a bit.
Included:
-ssh
-samba to access files on Debian from the Windows host
-Eclipse IDE to work nice with the linux Kernel
Check the screenshot to get an ideea on how it looks on Eclipse IDE.
Please take note that all the fuss is to get a nice looking with nice features IDE working on windows (but should not be a problem for someone on linux to follow my tutorial).
This is not intended to compile the kernel right from the Eclipse IDE, be it installed on Windows or Linux.
However, with some nicely crafted ssh commands you can tunnel some "make" command over ssh and trigger the compiler on the guest os.
The best stuff of this is that on Windows you get nice software like Beyond & Compare to compare/diff/join source code from different repos/kernels.
Also, something nice on Eclipse is that you can see the defines grayed out if those are not declared, also you can jump easily from a variable to its definition/declaration, etc.

ssh, samba, alter configuration for virtualbox
First thing first, the connection to the VM box over ssh (putty) can easily be achieved following the steps described here:
http://forum.xda-developers.com/showpost.php?p=8868634&postcount=54
###########################################################
Let's continue with setting up some sort of file sharing between host and guest.
Note: to make things easy, login as root.
Now, we can ssh nicely into guest OS, so what about sharing?
Well, we can share files over "Shared folders" feature, but this sucks cause we can't see symlinks in Windows.
So, the best choice would be to install Samba.
Note: People might get better speeds if instead of Samba would try NFS, but tbh, I wasn't able to get a damn working NFS client on Windows.
So, for now, Samba FTW!
Code:
apt-get install samba smbfs
You need to configure the samba share to be able to see it inside the Windows host machine.
edit /etc/samba/smb.conf in your favorite editor and add the following lines:
inside [global] section you should have something like:
Code:
[global]
workgroup = kernelcompiler
security = user
browseable = yes
guest ok = yes
guest only = no
encrypt password = yes
then add a new section, called [kernel-compiler]:
Code:
[kernel-compiler]
#in order to make the files touched on windows not executables add map archive = no
map archive = no
path=/home/kernel
read only = no
writable = yes
browseable = yes
public = no
valid users = kernel
restart the samba daemon:
Code:
/etc/init.d/samba restart
###########################################################
Great, now shut down the Guest (I think the previous restart was not necesary).
On Virtual Box window, all VMs stoped, select File > Preferences.
On the network tab, add a new Host Only network (you can reuse the existing one if you wish and you understand what are you doing).
Alter settings, the IP should be something like: 192.168.134.1 and mask: 255.255.255.0
Disable DHCP server.
Ok. Ok.
The new network interface should be installed.
Right click on the Debian machine, Settings > Network.
On the tab Adapter 2, check Enable Network Adapter, Host Only Adapter, select (the Name field) the network card that we created above and click ok.
The first interface (Adapter 1) NAT is for internet access of the guest os.
The second interface (Adapter 2) Host Only is for communication between guest os and host os. You need that to be able to access Samba. If I think a little that could be used to access also the ssh port...
###########################################################
If we have something left to do is to configure the network settings inside the guest os.
Start virtual box.
Note: Inside /etc/udev/rules.d/ there is a file like: 70-persistent-net.rules Just delete this file if you run into problems while configuring the network interfaces inside guest os.
To enable the second interface (Host Only) do something like:
Code:
ifconfig eth1 192.168.134.1 netmask 255.255.255.0 up
Also, do your stuff (I assume you kinda know how to config the linux box) inside the file:
/etc/network/interfaces
Reboot.
###########################################################
Now you should be able to map the /home/kernel folder in Windows to something like Z: drive.
Ask for help if you don't understand/run into troubles.

Eclipse IDE on Windows
Install Eclipse CDT. Google for it. Chose your Windows/Linux version and install it.
Inside Eclipse installation folder there is a file, eclipse.ini.
Edit it and change the last line (regarding memory) to something like -Xmx768m.
Reason: You need some memory, the linux kernel is kinda big, in order to get comfortable we need to change the default settings.
Note: To run Eclipse, you need Java SDK. Google for it, find it, install it if you don't have Java SDK.
0.###########################################################
Start Eclipse.
New project.
Select a C project. Give it a name. Example: sgs_kernel.
Project type: Makefile project -> Empty Project
Toolchain: --Other Toolchain --
(check screenshot 1)
Note: You can change the location of the folder, you can work with the default one, just don't create the project in the same folder where you have the linux kernel sourcecode.
1.###########################################################
Next
Advanced Settings
In the Properties window that was opened, go on the C/C++ General branch, expand it, Indexer.
Check Enable project specific settings
Uncheck Enable Indexer. I repeat, you have to uncheck in order to disable the indexer.
Apply
Ok
(check screenshot 2)
2.###########################################################
In the Project Explorer select your project (sgs_kernel), right click, New > Folder
Click on Advanced then Link to alternate location (Linked Folder)
Browse and select the root of the kernel of your choice. (you have a kernel folder already, right? If not, check sztupy post regarding git commands to retrieve your own kernel source code)
Finish
(check screenshot 3)
Reason: By linking to alternate location you keep the mess out, the project settings stays on your windows machine, the kernel files remains on the linux machine.
3.###########################################################
Get a cofee. Adding all the files to the project over Samba should take some time.
###########################################################
When it is done, expand the source code tree, inside arch folder select everything except arm folder and right click Resource configuration and then Exclude from Build....
In the new window, check Default, then OK.
The same should be done in the arm folder, so, expand the arm folder and there select all folders starting with "mach-", except mach-s5pv210 which is the platform for our Galaxy S, and we dont want that one to be excluded.
Again right click Resource configuration and then Exclude from Build....
(check screenshot 4)
4.###########################################################
Right click on the project (sgs_kernel) and expand C/C++ General > Paths and Symbols.
On the Symbol tab click on Add... button, check Add to all languages and add the symbol with the name: __KERNEL__ and Value: 1.
(check screenshot 5)
5. ###########################################################
Now the hard part.
To push Eclipse to the limits, we have to add the defines from the include/linux/autoconf.h.
There are several ways to do that, I'm still looking for better ways to do that, but for now the ideea is to use a script that parse the file autoconf.h and extract the defines and push those inside our project.
The script I'm talking about is a python script (yeah, that sucks, something else to install on our kitchen.
Code:
sudo apt-get install python
Note: The python script is attached in this post.
Copy the script autoconf-to-eclipse.py somewhere, example: /home/kernel
Also copy/create a new sh script that will call the python script above, using a syntax like:
Code:
#!/bin/sh
python autoconf-to-eclipse.py /home/kernel/voodoo/linux_gt-i9000/Kernel/include/linux/autoconf.h /home/kernel/voodoo/linux_gt-i9000.eclipse/
The first parameter is the path to the autoconf.h file, the second is the path where you should copy your eclipse project file (that would be the .cproject file).
So you have to copy over the .cproject file from the Windows host project folder C:\Users\XXXXXXX\workspace\sgs_kernel to the linux box to a folder like: /home/kernel/voodoo/linux_gt-i9000.eclipse/
You have samba, right?
Then on the linux guest, run the sh script, that will run the python script.
If everything is ok, then the .cproject file should be much bigger (the defines were imported).
Note: you have to do this step each time you alter the configuration, like running "make menuconfig".
Copy the file back on windows to the project folder and inside eclipse, right click on project folder and hit Refresh.
Wait...
To check everything is ok, right click, Properties, expand C/C++ Projects > Paths and Symbols, Symbols tabs... and there you should have all defines.
(check screenshot 6)
6. ###########################################################
Switch to the Includes Tab in the same branch C/C++ Projects > Paths and Symbols.
Add include folder. Check Add to all languages.
Add arch/arm/mach-s5pv210 folder. Check Add to all languages.
(check screenshot 7)
Apply.
Ok.
END. ###########################################################
Finally.
Right click > Properties > branch C/C++ Projects > Indexer.
Check Enable Indexer.
Ok.
Get a RedBull, it should take a while.
###########################################################
Start coding!
Ask for help if you don't understand/run into troubles.
Credits: Inspiration from here -> http://www.nazgee.eu/en/book/forcing-eclipse-to-work-with-linux-kernel-indexing-kernel-source

awsome work man . thanks to you and sztupy !

This thread is kicked to the front page
Sent from my GT-I9000 using XDA App

ragin said:
This thread is kicked to the front page
Sent from my GT-I9000 using XDA App
Click to expand...
Click to collapse
Kicked again.

Thanks! This pretty much still works for the Gingerbread source except that the autoconf.h is now in include/generated/autoconf.h.

Related

[Updated 10/9/07 v1.0]Pandora's Kitchen Utility - Works on any BuildOS based kitchen

Pandora's Kitchen Option Utility
This utility will allow you to quickly save or recover your settings when customizing the options to your taste.
You will no longer have to go through BuildOS and check all your favorite programs every time you rebuild your image or install a new kitchen set.
Simply define your settings once, and from then on it's but a few clicks away
Troubleshooting:
If you receive an error when clicking "Load Kitchen":
1. The error message will display the path to the file. Check that it is formatted properly. See further down troubleshooting for more info.
2. Under the menu option File is the selection Log File. Click this to open the current log file for the kitchen you attempted to use. The last few lines should point to the option.xml file that caused the error.
3. Try running BuildOS. If it won't open, don't expect this to work. Try to isolate the trouble package and compare to other working ones.
Option.xml file formatting issues:
The file must be saved as Unicode
The file must follow the following format - noting that the entry for Tip is optional and the indention spacing is not displaying properly:
<?xml version="1.0" encoding="UTF-16" standalone="yes"?>
<Items>
<Item name="Time Sync Tab" group="Registry Tweaks" checked="false">
<Tip>Add time sync Tab to Phone Settings</Tip>
<Guid type="p">2f1ae013-04e8-11dc-8314-0800200c9a66</Guid>
</Item>
</Items>
Can't load Saved Configuration:
Your configuration file may have corrupted. Retrieve a backup or recreate it.
Known MAJOR Issues:
No known
Known Deficiencies:
List sorted by in alphabetical order
Future build will integrate BuildOS functionality - single user interface for both
once updated, option.xml files no longer use <cr> for readability. No effect on performance or function.
v1.0 Beta 1 does not read / edit the SYS folder option.xml file(s).
Downloads:
Installer:
Public Beta coming soon... target release of 10/10/07
.NET Framework 2.0 Redistributable (required if you don't already have it on your PC)
RapidShare Link
Revision History:
v1.00 Beta 1: Initial limited beta release
How-to video:
RapidShare Link (updated 10/9/07)
Suggestions:
Word to the wise - BACK UP YOUR KITCHEN!! It will save you much headache should something go wrong.
I can only rub my hands in glee - really look forward to using this as it allows for formal comparative testing between builds for me ;-)
Looks great Matt,
one question, how east is it to update the OEM packages. Same as before,just put them into the kitchen folder?
allan1 said:
Looks great Matt,
one question, how east is it to update the OEM packages. Same as before,just put them into the kitchen folder?
Click to expand...
Click to collapse
Very, then run this utility to set your options to true/false as you desire, then backup the settings so you can easily re-set them if you download a whole new setup.
Super easy and super quick. Just have a few XML formatting issues to resolve before I can get this out
News?
It sounds so good....
i'm getting excited
You're a good egg, you!
are we any closer to a beta yet?

[PC-APP] RecModFolder - fast module to file conversion

01/04/2010 update - program can read list of modules from text file.
download link: http://www.4shared.com/file/255038195/c2b5de9b/RecModFolder_04.html
mirror: http://narod.ru/disk/19297102000/RecModFolder_04.zip.html
how to use
1. create text file RecModFolder.txt,
2. write list of modules to this file, for example:
SYS\MediaOS\wmpocx.dll
SYS\OS\dw.exe
SYS\OS\dwui.dll
SYS\OS\DwXfer.dll
3. pass RecModFolder.txt as a parameter:
RecModFolder.exe RecModFolder.txt
that's it.
and, of course, you can convert all modules in folder like this
RecModFolder.exe SYS\AdobeFlash
RecModFolder.exe SYS\AdobeFlashCodecs
there are sample RecModFolder.txt and cmd file that I use with OSBuilder
cmd file is executed from the root of my kitchen, program is in the tools\RecMod subfolder
====================================================
old post:
I developed small tool which helps me to update my kitchen with new OS build.
My device has wm6.1 kernel and I get tired with "too many modules" problem.
I know I can use RecMod to convert modules to files, but it's so slow and inconvenient:
find folder with module,
drop it on recmod.exe,
get new file out of this folder,
delete folder,
move file back,
find, drop, get, delete, move...
find, drop, get, delete, move...
GRRR!!!! =)
My tool will do all these steps for me.
I just select parameters:
1. Folder - folder with modules, for example SYS\21872,
2. Mask (optional) - any mask that is valid in windows is acceptable,
(common masks are *.dll, *.cpl, *.exe, *.mui), no mask means "*".
3. Count (optional) - how many modules to convert, no count means "convert all".
[new in v0.3] If Count is 0, program will only display all modules matching the mask,
and do not change your files.
=======================================
Example 1:
>RecModFolder.exe c:\xda\v1\SYS\21054
means - RecMod all modules in c:\xda\v1\SYS\21054 recursive
=======================================
Example 2:
>RecModFolder.exe c:\xda\v1\SYS\21054 *.exe
means - RecMod all exe modules in c:\xda\v1\SYS\21054 recursive
=======================================
Example 3:
>RecModFolder.exe c:\xda\v1\SYS\21054 *.dll 10
means - RecMod first 10 dll modules in c:\xda\v1\SYS\21054 recursive
=======================================
Algorithm
Code:
read parameters from command line
find all modules in given folder (recursive) using given mask
for each module folder
{
call RecMod
create temporary unique file name (GUID for safety reason)
move new file to parent folder and assign it temporary name
delete module folder (with all files)
rename new file, give it real module name
if (count >= requested count)
{
stop
}
}
=======================================
Installation
make sure you can run RecMod from console, add its folder to PATH or drop RecModFolder.exe to the same folder.
That's it.
=======================================
Tips
You can create shortcut to RecModFolder and drop folders on it from explorer or Total Commander. RecModFolder will convert all modules in that folder to files.
Backup your files. This tool doesn't ask any questions,
it just informs you in case of error and stops immediately.
Save log file and check it for errors.
This is console application - you can use it in bat files.
You can save output of this program to text file - add >fileName.txt to your command line.
example:
RecModFolder.exe c:\xda\v1\SYS\21054 *.dll 10 >log.txt
this command will call RecMod first 10 dll modules in c:\xda\v1\SYS\21054 recursive
and save its output to log.txt.
Do not open folders you want to delete (replace with files) in explorer (or Total Commander, FAR, etc.) while this program works.
very nice, but there is already a similar app which does it from right click menu..
see here -> recmod by OndraSter
you probably have more options on the whole process, but the other tool might be more convenient.. anyways i will try
serfer222, you know that you may be responsible for whole lots of nab made VERY bad rom releases now, lol?
hheh, thanks for that tool anyway.
nosedive said:
very nice, but there is already a similar app which does it from right click menu..
see here -> recmod by OndraSter
you probably have more options on the whole process, but the other tool might be more convenient.. anyways i will try
Click to expand...
Click to collapse
I can explain what is the main difference:
If I choose one module folder, for example
Code:
SYS\21055\SHARED\COMMON\BROWSING\browser.dll\
and select osRecmod "Recmod this folder" it will work.
but if I select parent folder
Code:
SYS\21055\SHARED\COMMON\BROWSING\
osRecmod will just delete this folder and create empty file BROWSING
in the SYS\21055\SHARED\COMMON\
So, you see, it doesn't work for me.
I want to convert all modules inside folder
Code:
SYS\21055\SHARED\COMMON\BROWSING\
in one step. I drag this folder on my tool and all modules are converted to files. That's what I want =)
pupakota said:
serfer222, you know that you may be responsible for whole lots of nab made VERY bad rom releases now, lol?
Click to expand...
Click to collapse
You know, there are a lot of such rom developers already here.
This tool will just save their time and maybe they will find out whole new world outside computer and then will quit rom development... =)
Thank you serfer222 for this application, which complements my kitchen.
By
New version - v0.3.
new option is added - if you set Count to 0 program will just display list of matching modules.
Example: I want to see a list of *.mui module folders that can be converted to files.
Command: >RecModFolder.exe d:\mega2\SYS\21874\ *.mui 0
Output:
Code:
d:\mega2\SYS\21874\SHARED\0409\AdobeFlash_LANG_0409\flashresource.dll.0409.mui
d:\mega2\SYS\21874\SHARED\0409\Autoupdate_Lang_0409\AutoUpdateRes_wpc.exe.0409.mui
d:\mega2\SYS\21874\SHARED\0409\Base_Lang_0409\commctrl.dll.0409.mui
d:\mega2\SYS\21874\SHARED\0409\Base_Lang_0409\commdlg.dll.0409.mui
d:\mega2\SYS\21874\SHARED\0409\Base_Lang_0409\coredll.dll.0409.mui
d:\mega2\SYS\21874\SHARED\0409\Base_Lang_0409\coreres.dll.0409.mui
d:\mega2\SYS\21874\SHARED\0409\Base_Lang_0409\crypt32.dll.0409.mui
d:\mega2\SYS\21874\SHARED\0409\Base_Lang_0409\fatutil.dll.0409.mui
d:\mega2\SYS\21874\SHARED\0409\Base_Lang_0409\filesys.exe.0409.mui
d:\mega2\SYS\21874\SHARED\0409\Base_Lang_0409\gwes.exe.0409.mui
d:\mega2\SYS\21874\SHARED\0409\Base_Lang_0409\ieceext.dll.0409.mui
d:\mega2\SYS\21874\SHARED\0409\Base_Lang_0409\jscript.dll.0409.mui
d:\mega2\SYS\21874\SHARED\0409\Base_Lang_0409\miscres.dll.0409.mui
d:\mega2\SYS\21874\SHARED\0409\Base_Lang_0409\netmui.dll.0409.mui
d:\mega2\SYS\21874\SHARED\0409\Base_Lang_0409\notify.dll.0409.mui
d:\mega2\SYS\21874\SHARED\0409\Base_Lang_0409\OutlookLiveUpdaterResources.dll.0409.mui
d:\mega2\SYS\21874\SHARED\0409\Base_Lang_0409\outres.dll.0409.mui
d:\mega2\SYS\21874\SHARED\0409\Base_Lang_0409\quartz.dll.0409.mui
d:\mega2\SYS\21874\SHARED\0409\Base_Lang_0409\shellres.dll.0409.mui
d:\mega2\SYS\21874\SHARED\0409\Base_Lang_0409\shellresapps.dll.0409.mui
d:\mega2\SYS\21874\SHARED\0409\Base_Lang_0409\syncres.dll.0409.mui
d:\mega2\SYS\21874\SHARED\0409\Base_Lang_0409\tapres.dll.0409.mui
d:\mega2\SYS\21874\SHARED\0409\Base_Lang_0409\tshres.dll.0409.mui
d:\mega2\SYS\21874\SHARED\0409\Base_Lang_0409\unimodem.dll.0409.mui
d:\mega2\SYS\21874\SHARED\0409\Base_Lang_0409\waveapi.dll.0409.mui
d:\mega2\SYS\21874\SHARED\0409\Base_Lang_0409\wsp.dll.0409.mui
d:\mega2\SYS\21874\SHARED\0409\Browsing_Lang_0409\browsres.dll.0409.mui
d:\mega2\SYS\21874\SHARED\0409\Browsing_Lang_0409\mlang.dll.0409.mui
d:\mega2\SYS\21874\SHARED\0409\Browsing_Lang_0409\shdoclc.dll.0409.mui
d:\mega2\SYS\21874\SHARED\0409\Browsing_Lang_0409\shlwapi.dll.0409.mui
d:\mega2\SYS\21874\SHARED\0409\Browsing_Lang_0409\urlmon.dll.0409.mui
d:\mega2\SYS\21874\SHARED\0409\Browsing_Lang_0409\wininet.dll.0409.mui
d:\mega2\SYS\21874\SHARED\0409\CHome_Lang_0409\cmhomeres.dll.0409.mui
d:\mega2\SYS\21874\SHARED\0409\Entertainment_Lang_0409\bbcbres.dll.0409.mui
d:\mega2\SYS\21874\SHARED\0409\Fwupdate_Lang_0409\MdsRes_wpc.exe.0409.mui
d:\mega2\SYS\21874\SHARED\0409\IPSECVPN_Lang_0409\ipsecvpnres.dll.0409.mui
d:\mega2\SYS\21874\SHARED\0409\Skybox_Lang_0409\MyPhoneConsole.exe.0409.mui
d:\mega2\SYS\21874\SHARED\0409\WMWidgets_LANG_0409\riahostres.dll.0409.mui
d:\mega2\SYS\21874\SHARED\0409\WMWidgets_LANG_0409\wmwidgetinstallerres.dll.0409.mui
d:\mega2\SYS\21874\SHARED\0419\AdobeFlash_LANG_0419\flashresource.dll.0419.mui
d:\mega2\SYS\21874\SHARED\0419\Autoupdate_Lang_0419\AutoUpdateRes_wpc.exe.0419.mui
d:\mega2\SYS\21874\SHARED\0419\Base_Lang_0419\commctrl.dll.0419.mui
d:\mega2\SYS\21874\SHARED\0419\Base_Lang_0419\commdlg.dll.0419.mui
d:\mega2\SYS\21874\SHARED\0419\Base_Lang_0419\coredll.dll.0419.mui
d:\mega2\SYS\21874\SHARED\0419\Base_Lang_0419\coreres.dll.0419.mui
d:\mega2\SYS\21874\SHARED\0419\Base_Lang_0419\crypt32.dll.0419.mui
d:\mega2\SYS\21874\SHARED\0419\Base_Lang_0419\fatutil.dll.0419.mui
d:\mega2\SYS\21874\SHARED\0419\Base_Lang_0419\filesys.exe.0419.mui
d:\mega2\SYS\21874\SHARED\0419\Base_Lang_0419\gwes.exe.0419.mui
d:\mega2\SYS\21874\SHARED\0419\Base_Lang_0419\ieceext.dll.0419.mui
d:\mega2\SYS\21874\SHARED\0419\Base_Lang_0419\jscript.dll.0419.mui
d:\mega2\SYS\21874\SHARED\0419\Base_Lang_0419\miscres.dll.0419.mui
d:\mega2\SYS\21874\SHARED\0419\Base_Lang_0419\netmui.dll.0419.mui
d:\mega2\SYS\21874\SHARED\0419\Base_Lang_0419\notify.dll.0419.mui
d:\mega2\SYS\21874\SHARED\0419\Base_Lang_0419\OutlookLiveUpdaterResources.dll.0419.mui
d:\mega2\SYS\21874\SHARED\0419\Base_Lang_0419\outres.dll.0419.mui
d:\mega2\SYS\21874\SHARED\0419\Base_Lang_0419\quartz.dll.0419.mui
d:\mega2\SYS\21874\SHARED\0419\Base_Lang_0419\riresdll.dll.0419.mui
d:\mega2\SYS\21874\SHARED\0419\Base_Lang_0419\shellres.dll.0419.mui
d:\mega2\SYS\21874\SHARED\0419\Base_Lang_0419\shellresapps.dll.0419.mui
d:\mega2\SYS\21874\SHARED\0419\Base_Lang_0419\syncres.dll.0419.mui
d:\mega2\SYS\21874\SHARED\0419\Base_Lang_0419\tapres.dll.0419.mui
d:\mega2\SYS\21874\SHARED\0419\Base_Lang_0419\tshres.dll.0419.mui
d:\mega2\SYS\21874\SHARED\0419\Base_Lang_0419\unimodem.dll.0419.mui
d:\mega2\SYS\21874\SHARED\0419\Base_Lang_0419\waveapi.dll.0419.mui
d:\mega2\SYS\21874\SHARED\0419\Base_Lang_0419\wsp.dll.0419.mui
d:\mega2\SYS\21874\SHARED\0419\Browsing_Lang_0419\browsres.dll.0419.mui
d:\mega2\SYS\21874\SHARED\0419\Browsing_Lang_0419\mlang.dll.0419.mui
d:\mega2\SYS\21874\SHARED\0419\Browsing_Lang_0419\msscript.dll.0419.mui
d:\mega2\SYS\21874\SHARED\0419\Browsing_Lang_0419\shdoclc.dll.0419.mui
d:\mega2\SYS\21874\SHARED\0419\Browsing_Lang_0419\shlwapi.dll.0419.mui
d:\mega2\SYS\21874\SHARED\0419\Browsing_Lang_0419\urlmon.dll.0419.mui
d:\mega2\SYS\21874\SHARED\0419\Browsing_Lang_0419\wininet.dll.0419.mui
d:\mega2\SYS\21874\SHARED\0419\CHome_Lang_0419\cmhomeres.dll.0419.mui
d:\mega2\SYS\21874\SHARED\0419\Entertainment_Lang_0419\bbcbres.dll.0419.mui
d:\mega2\SYS\21874\SHARED\0419\Fwupdate_Lang_0419\MdsRes_wpc.exe.0419.mui
d:\mega2\SYS\21874\SHARED\0419\IPSECVPN_Lang_0419\ipsecvpnres.dll.0419.mui
d:\mega2\SYS\21874\SHARED\0419\MediaOS_Lang_0419\wmploc.dll.0419.mui
d:\mega2\SYS\21874\SHARED\0419\RemoteDesktopMobile_Lang_0419\wpctsc.exe.0419.mui
d:\mega2\SYS\21874\SHARED\0419\Skybox_Lang_0419\MyPhoneConsole.exe.0419.mui
d:\mega2\SYS\21874\SHARED\0419\WindowsLive_Lang_0419\WLMContactsResources.dll.0419.MUI
d:\mega2\SYS\21874\SHARED\0419\WindowsLive_Lang_0419\WLMDeckResources.dll.0419.MUI
d:\mega2\SYS\21874\SHARED\0419\WindowsLive_Lang_0419\WLMHSContainerResources.dll.0419.MUI
d:\mega2\SYS\21874\SHARED\0419\WindowsLive_Lang_0419\WLMHSMailResources.dll.0419.MUI
d:\mega2\SYS\21874\SHARED\0419\WindowsLive_Lang_0419\WLMHSMeResources.dll.0419.MUI
d:\mega2\SYS\21874\SHARED\0419\WindowsLive_Lang_0419\WLMHSMessengerResources.dll.0419.MUI
d:\mega2\SYS\21874\SHARED\0419\WindowsLive_Lang_0419\WLMHSSearchBarResources.dll.0419.MUI
d:\mega2\SYS\21874\SHARED\0419\WindowsLive_Lang_0419\WLMHSSplashResources.dll.0419.MUI
d:\mega2\SYS\21874\SHARED\0419\WindowsLive_Lang_0419\WLMHSSyncResources.dll.0419.MUI
d:\mega2\SYS\21874\SHARED\0419\WindowsLive_Lang_0419\WLMMailResources.dll.0419.MUI
d:\mega2\SYS\21874\SHARED\0419\WindowsLive_Lang_0419\WLMMessengerResources.dll.0419.MUI
d:\mega2\SYS\21874\SHARED\0419\WindowsLive_Lang_0419\WLMServiceResources.dll.0419.MUI
d:\mega2\SYS\21874\SHARED\0419\WindowsLive_Lang_0419\WLMSharedResources.dll.0419.MUI
d:\mega2\SYS\21874\SHARED\0419\WindowsLive_Lang_0419\WLMSpacesResources.dll.0419.MUI
d:\mega2\SYS\21874\SHARED\0419\WindowsLive_Lang_0419\WLMSyncResources.dll.0419.MUI
d:\mega2\SYS\21874\SHARED\0419\WMWidgets_LANG_0419\riahostres.dll.0419.mui
d:\mega2\SYS\21874\SHARED\0419\WMWidgets_LANG_0419\wmwidgetinstallerres.dll.0419.mui
97 modules found.
download it from the first post.
have fun =)
keep on
good job man
I have an idea for next update.
Now I'm using 21874 with my wm6.1 kernel and just simple update it to 21876 is a headache. This tool helps me to convert modules fast, but I still must choose what should be converted. I'm lazyyyy. I did it for 21874 and want to REUSE my old work.
Idea is:
1. run application and choose good existing build AS TEMPLATE.
2. select new build folder and drink a cup of coffee.
3. my app will do the job - take old working build as template and prepare new build exactly the same way.
What do you think? Is there a program that already implement this feature or
I need to create it? (lazy question)
=)
When I start doing recmod the recmodefolder.exe shows this message "Do you have RecMod.exe in PATH?" and then stops.
What happens?
program is updated, list-mode added,
first post is updated
hi, friends, it seems an excerllent apps, but how can i download it? when i visit that link, it seems a Russian web, i even don't know one letter!
can you upload it rapishare ?
www.4shared.com link in the first post
useful App ,, Thanks
when selecting or specifying 1 module folder, it doesen't work for me.
It shows "RecMod 0 modules completed"
It works only using multiple (eg: *.mui).
Maybe the first prob. will be replaced by osrecmod, & ur tool for multiple files ,, LoL
------------
ANY idea of converting back file to module?
-Yasser-

Guide to compiling (covers cm7)

This guide is geared to people that are new to ubuntu but would like to start playing with the internals of their android device and maybe even make themselves a rom,
disclaimer: if you break your equipment well that just plain sucks
If you are new to linux or wanna learn more about ubuntu, here is a link to the ubuntu 10.10 wiki and is full of great info
http://ubuntuguide.org/wiki/Ubuntu:Maverick
So you got yourself a nice copy of Ubuntu 9.10/10.04/10.10 and you have every intention of building a rom for yourself or maybe you just wanna learn the inside workings of android, well there are a few extra steps for getting it set up in 9.10/10.04. Gonna try to make this an easy transition since most of you are coming from a windows based machine. Make sure that you have at least a 30 gb partition set up to follow along with this guide, more is better but I know some don't have the hard drive space to spare.
So let's get our hands dirty
First we need to set up java and get a few programs, but first we need to open up our software settings, this is achieved by going up to our MENU BAR, going to SYSTEM and then then ADMINISTRATION. We will then go into SOFTWARE SOURCES. On 9.10/10.04, the repository for java 5 was removed so we need to add 9.04's repository. So let's go to our second tab marked “other software” and click ADD. A small box will open up asking us to add a apt line. So we have two software lines to add individually.
(on 10.10 software sources is inside update manager, clicking settings gets you into it)
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
deb http://us.archive.ubuntu.com/ubuntu/ jaunty multiverse
then
deb http://us.archive.ubuntu.com/ubuntu/ jaunty-updates multiverse
Now, make sure that both are checked to be used in software sources and close the window. It should ask to update your sources, allow it to (insert screenshot)
Some people have problems with internal wireless cards so this might be a fix for you which was an issue for me and thankfully Garok89 had the answer. This fix works on Broadcom based cards only (including Dell wireless cards).
For the wireless card (plug in via ethernet of course)
Open up a terminal and type
sudo apt-get install bcmwl-kernel-source bcmwl-modaliases
Reboot and then enable via System>Administration>Hardware Drivers
and see if it now says that you have proprietary drivers now
gingerbread is 64 bit only
http://groups.google.com/group/android-building/browse_thread/thread/852d63ab6124c87e?pli=1
Let's open up a pretty little terminal and let's get some debs (debs are Linux distribution specific packages like we have apks in android). After entering this command it will ask you to input the "[sudo] Password for xxxxx", this is the password you use to logon. (When you type your password you will not see anything, this is for security purposes)
sudo apt-get install git-core gnupg sun-java5-jdk flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev sun-java6-jdk gitg qt3-dev-tools libqt3-mt-dev eclipse valgrind
NOTE: If we want to build with a x64-bit system we must also do the following
sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl sun-java5-jdk zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev sun-java6-jdk gitg qt3-dev-tools libqt3-mt-dev eclipse valgrind pngcrush wput
It is quite a lot but it will download quickly depending on your internet connection, but almost all are needed, and yes, I did put in both java 5 and 6 because for some reason it helps having both installed side by side.
(don't forget to run update manager again and get your system up to date)
well while we are here we midas well set up our tool for downloading the source
REPO
Repo is a tool that makes it easier to work with Git in the context of Android. It is a almost the same as Git and we will go into the differences at a later time
we are gonna make sure that we are in our right directory so
cd ~
~ means home/user dir, so in my case it would be /home/sykopompos/ but using ~ allows us to simplify our use.
Mkdir bin
export PATH=${PATH}:~/bin
by typing echo $PATH we can see the all of what is in our path
curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
to get the repo script
then we give it executable permissions so we can run it as a program
chmod a+x ~/bin/repo
Now we have repo set up we can move on to other things. Let's get going with setting up the android sdk. Let's go to the sdk's page in our web browser
http://developer.android.com/sdk/index.html
and select the newest linux version and download. When it is finished downloading open it up and extract it to your home/user folder and rename it to androidsdk for guide following ease purposes
next let's set up eclipse
open up eclipse, it will be in your menu bar under programming. just let it save to the workspaces folder that it defaults to and open up the help tab up on the top bar and go down to install new software
and add this line into the open text bar and type this
http://dl-ssl.google.com/android/eclipse/
now click add and in the box down below you will see it says developer tools. Click on the little check box and hit next. You should see android development tools hit next and follow the prompts and wait for it to download and install. You will have to agree to the terms to download, You will get a warning about unsigned content, just say yes. Once it is done click to restart Eclipse then go up to the window tab and go down to preferences, in the new window that pops up, go to android and add in where your android sdk is. Just hit ok and not apply or it will complain.
close out of that window than go down to in the window tab again and go into android sdk and avd manager. Go down to available packages and click on the little check box again. Download all available packages (you can prob get away without downloading anything pre 1.5/cupcake. Let that download and exit out
testsigning
go up to places on your desktop menu bar and go into your home folder. Press Ctrl and h together on your keyboard to show hidden folders. Anything marked with a . in front of it is hidden, we are looking for a folder name .gnome2, go into it and look for nautilus-scripts. Once inside this folder, right click on a empty space and select create document and then empty file and name it sign. Open up that empty document and copy and paste this script from dumbfaq on xda
#!/bin/bash
# Update the Loc var to where YOU stored the testsign.jar file !
SUCCESS=
Loc=~/androidsdk/tools/
for arg
do
TMP=$(ls $arg | sed 's/\(.*\)\..*/\1/')
EXT=${arg##*.}
java -classpath "$Loc"testsign.jar testsign "$arg" "$arg"-signed 2> /tmp/signTmp
SUCCESS=$?
if [ $SUCCESS -eq 1 ]
then
zenity --info --title "Sign APK" --text "signing FAILED! \n`cat /tmp/signTmp`"
exit 1
fi
mv $TMP.$EXT-signed $TMP-signed.$EXT
done
zenity --info --title "Sign APK" --text "signing completed!"
save and exit out and right click on our new script and select properties. select thru the tabs and look for a check box that says allow executing as a program. click on it and now we have a pretty little script that we can just right click on a update.zip file and sign with our test keys for flashing. but first we need to download the testsign java file and add it to our androidsdk/tools folder http://rapidshare.com/files/257189327/testsign.jar do not extract this just add it to the tools folder.
Last but not least, we need to set up adb
Open up a terminal (you might still have the previous one open, you can use that just make sure you are at ~/) and type
gedit .bashrc
paste this in the top
#AndroidDev PATH
export PATH=${PATH}:~/androidsdk/tools
export PATH=${PATH}:~/androidsdk/platform-tools
save and exit
we will check what our phone's vendor id is, this is helpfull to see if our phone is on the list, with all the growing numbers of new manufacturs producing android it is hard know every vendor's id so type
lsusb
while your phone is connected to see our vendor id and you will see something like this, if you have a device not listed please send me the vendor id at [email protected] so i can update in for others
Bus 002 Device 004: ID 0bb4:0c91 High Tech Computer Corp. (example is G2)
In this case the Vendor Id is “18d1″ and the Product ID is “4e12″. Please keep in mind that the Vendor ID for HTC changed from “0bb4″ to “18d1″. The older HTC phones like the G1 have a Vendor ID of “0bb4″.
in most cases as seen below we only need the vendor id and with a new device you can just c+p the line and replace the vendor id
so now we can make our rules file for connecting for adb so
sudo gedit /etc/udev/rules.d/51-android.rules
paste
SUBSYSTEM=="usb", ATTRS{idVendor}=="0bb4", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0502", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="12d1", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="1004", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="22b8", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="04e8", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0fce", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0489", MODE="0666"
SUBSYSTEM==”usb”, ATTRS{idVendor}==”18d1″, SYMLINK+=”android_adb”, MODE=”0666″
SUBSYSTEM=="usb", ATTRS{idVendor}=="04e8", MODE="0666", GROUP="plugdev"
save and exit
reboot your computer to have the new changes take effect otherwise adb will not be in your $PATH
let's check to make sure our device is seen by adb by typing
adb devices
it should give you info back that you are connected if you are not or it doesn't read the vendor id than it might be a little bit more complicated, note adb will not read if you have usb mass storage mounted, also need usb debugging on in settings/apllications/development on your phone
Now we have a complete android development environment, aren't you proud of yourself. You are well on your way to making your own custom rom
it is a wise idea to have a backup of a system dump for stock apps and to get a feel for the way android is set up and also to pull any needed files from that are easily viewed on your computer at least as refefence connect your phone in adb in the terminal type
cd ~/
mkdir stock
cd stock
adb pull /system/ ~/stock/
this will make a system dump of your systems folder of your device, a wise idea would be to make a zipped versions of it and put it someplace secure
Compiling cyanogenmod 7 source
Now we work on actually pulling sources and compiling source code. Since Cyanogenmod 7 is the most popular we will work with this (as of writing 1/15/11, cm7 source does not have a Rc1 yet so non official builds after the bacon script has the KANG attached to them)
So let’s pull cm7, open a terminal and type these commands
(you can name your source folder whatever you like but for guide purposes it will be cm7)
(make sure you are at ~)
mkdir cm7
cd cm7
repo init -u git://github.com/CyanogenMod/android.git -b gingerbread
It will ask you to enter your name and email (this is completely optional and you can just press enter to skip)
Press y and enter to confirm that your identity is correct, press y again to enable user color
You will now see repo initialized in our in our cm7 folder
Now we can use repo sync (this acts as a git clone to copy the source to our local branch)
In the terminal type
repo sync
This will take a while to download depending on your internet connection since it is pulling in over 2gb of source code (don’t use tethering during this as it will eat up your data for the month)
(you can use -j`grep 'processor' /proc/cpuinfo | wc -l` to run at full cpu speed. -j# (# means twice the amount of cores in your computer) means jobs. I will compare this to workers, your cpu could be a dual core, quad core and/or have hyperthreading (hyperthreading means a quad core will be seen as having 8 cores, I7 are considered this) well each one of your cores is a worker so one worker would be -j2 meaning the worker will handle 2 jobs. If you tell your workers to do more jobs then they won’t be happy being overloaded just like how any worker would be and will actually be slower. Now -j`grep 'processor' /proc/cpuinfo | wc -l` means read your computer’s info and run at optimal speed, now why choose between the 2 well you might not wanna run at max speed and just wanna use only half your power so you use your computer for other things during)
When we are done syncing we can get back to work
I am gonna use vision as an example but you can change it to suit the device you are working on
connect your phone you are gonna work for adb and open a terminal or use current previous terminal
(note, the proprietary vendors have been modified to work for gingerbread so make sure you have either the most up to date cm7src build or when rc1/stable comes out on your phone to get the proper files)
(this assumes you are using a previous and are in cm7)
cd device
cd htc/vision
bash extract-files.sh
cd ~/cm7
cd vendor/cyanogen/
bash get-rommanager
cd ~/cm7
We now have pull the proprietary files for our phone so we can inject them into our build along with rom manager since it is required and will fail the build if you don’t
(if you look in your cm7 source you will now see inside vendor a folder called htc (our manufactor, if you are working on a samsung or motorola you will see that) and inside it you will see your device)
We are actually now ready to build so in our terminal
source build/envsetup.sh
lunch cyanogen_vision-eng
make clean
make bacon -j`grep 'processor' /proc/cpuinfo | wc -l`
Now our build is compiling
(the lunch command pulls target specific info so there is no need for a buildspec.mk to be made as lunch does this for us)
(always make clean between builds to remove old compiled files and make sure you have a fully working build with each update, it takes a bit longer but it is worth it)
(make bacon is a script that runs make otapackage and the squisher script which uses pngcrush to cut down the size and also removes unneeded things added by doing a -eng build, it also resigns it)
When your build is complete you should have a update-cm-7.0.0-RC0-vision-KANG-signed.zip in your cm7/out/target/product folder, this is your new build.
Congratulations on your first build from cm7 source
Now for a new build you would repo sync again, make clean and make bacon again
Kernel compiling
We are gonna be pulling the cyanogenmod htc msm 7x30 kernel source, this covers ace, vision and glacier
so let’s open up a terminal and clone the kernel source so we can work with it
cd ~/
mkdir kernel
cd kernel
git clone git://github.com/CyanogenMod/htc-kernel-msm7x30.git
cd htc-kernel-msm7x30
We now have our source pulled and now need to set up our cross-compilier so we can make our kernel
export CROSS_COMPILE=~/cm7/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-
export ARCH=arm
Now have our cross compilier toolchain set up and will need to now tell it what to build, I find that make menuconfig is just plain ugly and rough to work with so
make xconfig
This will load a nice menu UI for us to work with, we are not gonna get into modifying the kernel but just a default config so go up to file and click load and select arch, then arm, then configs.
select cyanogen_vision_defconfig and click open, this will load the default cyanogen kernel config and is what you will find in a cm7 build (or glacier or ace depending what you are building for)
You can just click the x button in the corner to close it and collect save changes
Now we can compile our kernel, we can us the -j command like before to speed it up
make -j`grep 'processor' /proc/cpuinfo | wc -l`
Once the kernel compiles we have to grab our zimage and our wifi module (the couple lines up will show you the modules made and the location)
The zimage is our kernel and it can it can be found at /kernel/htc-kernel-msm7x30/arch/arm/boot/ and our wifi module name as bcm4329.ko (modules have a .ko extension) is found at /kernel/htc-kernel-msm7x30/drivers/net/wireless/bcm4329/
These are the only things we need to worry about. Now you can adb push the wifi module onto your phone and fastboot the zimage or we can have it built into our build by going to cm7/device/htc/vision/ and replacing the kernel with our zimage (will need to rename zimage to kernel) and putting our wifi module in modules and overwriting the one currently there (Make a backup of the stock kernel and wifi modules to replace your’s just in case)
Now you have your own kernel and you can compile it into your build
reserved jhjlkk,mlkjnl;klm
reserved for future use
you guys can post now
Instead of make bacon -j`grep 'processor' /proc/cpuinfo | wc -l`, you can type mka bacon. mka uses schedtool (may have to install the package) as well as auto doing the correct number of jobs.
And after you do a ". build/envsetup.sh", you can just type reposync, rather than repo sync do do a faster sync of the repos because it will do a -j10. (repo supports multiple simultaneous jobs (ie -j#)
Wow a lot to learn. Now I have to kick the dust off my Linux and see what version it is and how much of a partition I made. Now I have something to do along with being a flash junkie.
I want to really Thank You for this guide. I really commend those that try to help others. Some people might not be able to do this no matter how easy you make it. But some including myself will find this information very useful.
A big thanks.

			
				
Thank you for sharing this with the Community.
Holy mother of matrimony, with corpses
You say 2.3 is 64-Bit only. Is that referring to the OS on the computer?
bubonik said:
You say 2.3 is 64-Bit only. Is that referring to the OS on the computer?
Click to expand...
Click to collapse
The os needs to be 64 bit, that is according to google's android blog
Sent from my HTC Vision using XDA App
gridlock32404 said:
The os needs to be 64 bit, that is according to google's android blog
Sent from my HTC Vision using XDA App
Click to expand...
Click to collapse
Hmm Not sure what ubuntu 10.04 is? 32 or 64 bit? Also can I make a extra partition for this as the original one for ubuntu is only 15 mb? And do I make it ext4 or Fat32?
bobsbbq said:
Hmm Not sure what ubuntu 10.04 is? 32 or 64 bit? Also can I make a extra partition for this as the original one for ubuntu is only 15 mb? And do I make it ext4 or Fat32?
Click to expand...
Click to collapse
You can make it a new partition but you will have to change all the commands to the new partition so it might be more hassle than it is worth. Make it ext 4 for speed cause it is a native linux file system
Sent from my HTC Vision using XDA App
Updated the op with a link regarding gingerbread needing a 64bit os host
I'm gonna learn how to make bacon! Thanks for this thread.
Wish you had this up last month when I was pulling my hair out trying to figure this crap out. Thanks for it!
Is ffc working? ;p
The link in the first posst to ubuntu pocket guide is not working . It gets you to 4shared,but when trying to download it i just get that link is broken
I've built a rom for my incredible. I haven't flashed it as I went to work, and by the time I came back it was out of date lol. I ran it in a 32 bit VM, so I don't know what's up with needing 64 bit, as it's not what I used and got a good build I believe.

[ROM][Discontinued] ArchiDroid [CM_ROM][Linaro 4.7][Flexible] [V2.5.2] [01/08/14]

{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
Clean | Stable | Flexible | Optimized | Excellent
-> ArchiDroid 2.X <-
A Port of JustArchis Rom to our S1
Changelog
ArchiDroid 2.5.2
- Added additional r_submix audio module, idea thanks to @nelsonw # This should help with chromecast
- Updated PA GAPPS to 25 July
- Updated Nova Launcher to 3.0.2
- Updated Google Keyboard
- Updated XPrivacy to 2.2.2
- Updated Onandroid to 9.51
- Updated cm and ArchDroid sources (31.07.14)
Download
All Files Mediafire
Stable: ArchiDroid 2.4.5 Mediafire
Experimental: ArchiDroid 2.5.2 Dev-Host, Mirror: Mediafire
Remember that you don't need anything else to flash. Google Apps are included already.
Known Issues
All known and unknown Cyanogen Rom bugs (if any)
INSTALLATION INSTRUCTIONS
- Download the latest build of ArchiDroid ROM
1.- Wipe data / factory reset (mandatory if you coming from STOCK OR 4.2.X version or any other ROM)
2.- Install the Main ROM via Aroma installer, make your choices and lean back.
3.- Reboot
Attention: first boot will last a couple of minutes, at least almost 5 minutes or a few more. So after flashing take a rest and drink a coffee or a beer !
And after rom has booted up, led it settle a bit, till all apps and settings are initialised!
UPDATE INSTRUCTIONS
- Download the latest build of ArchiDroid ROM
- Take a nandroid backup
- Flash ROM using recovery and aroma installer
- Reboot
- Enjoy!
Known Bugs
-tethering is not working proper fixed in v2.5.0
In Aroma Installer you can select for example:
- 3 different Kernels: Stock, Neo and Mackay
- different Launchers
- different Keyboards
- different Bootanimations
- many additional apps
- to add nav bar
- to select: ro.config.low_ram=true or ro.config.low_ram=false (transparent statusbar)
and many other things
Follow ArchiDroid On XDA!
Write A Review!
Rate This Thread!
Buy JustArchi a Beer!
Like ArchiDroid On Facebook!
Hit Thanks!
XDA:DevDB Information
[ROM] [4.4.4. - KTU84P] [OmniROM] [Linaro 4.7] [Experimental] [Flexible] [Excellent] [01/08/14] ArchiDroid V2.5.2 | Power In Your Hands, a ROM for the Samsung Galaxy S1 I9000
This Rom is an official kanging of i9300 thread by @JustArchi lead developer and author of ArchiDroid ®. So all credits and thanks goes to JustArchi!!
Contributors
rodman01
ROM OS Version: 4.4.x KitKat
ROM Kernel: Linux 3.0.x
Based On: CyanogenROM / ArchiDroid / SelfKANG
Version Information
Status: Experimental 4.4.4 v
Created 2014-04-23
Last Updated 2014-08-01
[SIZE="+3"]ArchiDroid's FAQ / Q&A Section for i9300[/SIZE]​[SIZE="+1"]There is a special thread in the SIII section with and for FAQs. If you are interested in, I am sure there are good infos about the rom, for everybody and also related to our S1.[/SIZE]​
[SIZE="+1"]Features / Why ArchiDroid?[/SIZE]
First of all, ArchiDroid includes everything available in it's base. The whole point of ArchiDroid is to improve the base, without needing of making any trade-offs, so by flashing ArchiDroid, you're getting everything offered by the base itself. There's nothing to lose, everything to gain.
You can read detailed information about every ArchiDroid component here. It's a massive wall of text, so I'm only going to list the core features without describing them.
These were written from scratch, they're completely unique and you won't find exactly the same implementation in any other ROM.
ArchiDroid-Unique features:
- ArchiDroid's AROMA Installer
- ArchiDroid's Pocket Debian
- ArchiDroid's Flasher
- ArchiDroid's RunOnce
- ArchiDroid's Init
- ArchiDroid's Backend Control
- ArchiDroid's HArdware Volatile Entropy Gathering and Expansion Daemon (Haveged)
- ArchiDroid's Fast Random Number Generator (Frandom)
- ArchiDroid's Adblock (dnsmasq/dnrd, dnsproxy2, pixelserv)
- ArchiDroid's Forced Update
Apart from that, here, on the credits page, you can find all third-party projects, which have been implemented into ArchiDroid. In addition to that, it's up to YOU to decide if you want to install something, or not.
ArchiDroid focuses on flexibility and user choice.
If you're looking for fastest ROM, choose ArchiDroid.
If you're looking for most battery-saving ROM, choose ArchiDroid
If you're looking for cutting-edge functions, choose ArchiDroid
If you're looking for the most flexible rom ever created, definitely choose ArchiDroid
ArchiDroid adjusts to your needs. You can make it whatever you want. With bunch of presets, modes and questions, you can make your ArchiDroid behave. Check yourself why ArchiDroid is The TOP 1 ROM for Galaxy S3http://forum.xda-developers.com/galaxy-s3#romList, according to number of followers, rates, reviews and downloads count. Check the Reviews, take a look at Video Reviews, do whatever you want to, ArchiDroid is proven to be one of the best ROMs for Galaxy S3, ever created.
Try ArchiDroid once, and you'll never look back. I can assure you.
Disclaimer
Developer's Kitchen
Unless stated otherwise, all ArchiDroid components are licensed under the Apache License:
Code:
Copyright 2014 [email protected]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Especially:
ArchiDroid is one of the most complex ROMs ever created. When you start digging in my work, you can very easily get lost. And I'm not talking about base itself, but about everything next to it. You can use every part of my work, as long as:
1. You include proper credit where you should. This usually includes proper comment in a script/file and in the credits of the project, including license (if needed)
2. You let me know about this fact. Through PM on xda or e-mail
I'm always happy to help, especially with the problems I faced in the past. However I also want to be respected, considering that most of the ArchiDroid parts were written from scratch.
ArchiDroid 2.X vs. ArchiDroid 1.X
The long battle between choosing over ArchiDroid 2.X and 1.X is still recent. There's no one real and true answer to this. It's up to YOU to decide who wins this battle, because obviously every user is different. I'm only going to give you some tips and briefly describe differences.
Despite the name, ArchiDroid 2.X and 1.X are totally different ROMs. It all started with ArchiDroid 1.X, a ROM based on Sammy's stock firmware, with all needed goodies and features baked in. Then eventually I managed to implement everything what I ever wanted to implement, therefore making ArchiDroid 1.X more or less complete. Then I started with ArchiDroid 2.X project, built from scratch from AOSP sources, with all source codes available.
The point is, ArchiDroid 1.X is more or less complete, there's no "real" development going on, as I obviously don't have samsung sources to begin fun with. On the other hand, ArchiDroid 2.X will never be finished, there's always something to improve, something to add, something to fix... This is ongoing process, which will reach the end when I finally break my SGS3 or change the phone to another one .
If you're new user or you don't know how AOSP works on our SGS3s then I highly suggest to flash ArchiDroid 1.X firstly. ArchiDroid 2.X is targeted at advanced users, who don't mind some "core" features being broken. It will NEVER be as stable as ArchiDroid 1.X is, so if stability is the number 1 for you, choose 1.X.
ArchiDroid comparision
From 1-10, based on my own point of view
Stability
2.X - 5
1.X - 8
Compatibility
2.X - 4
1.X - 9
Battery
2.X - 6
1.X - 9
Performance
2.X - 9
1.X - 6
Features
2.X - 9
1.X - 4
Android Updates
2.X - 9
1.X - 6
-----------
Overall
2.X - 42
1.X - 42
This is ArchiDroid comparision in a nutshell. If you ask me, I think that ArchiDroid 1.X is far better choice for daily driver, but if you're advanced user and you know how to deal with possible broken functions then you can have great time using ArchiDroid 2.X as well.
Remember that only ArchiDroid 1.X supports Samsungs-specific features, such as Smart Stay, Screen mirroring, Allshare or whatever. This also includes closed-source proprietary drivers, such as many bluetooth headsets, which won't work under open-source AOSP. Think twice before considering 2.X if you're addicted to these Samsung goodies.
On the other hand, ArchiDroid 2.X is the only ArchiDroid with "real" development going on, however all universal changes are also backported back to ArchiDroid 1.X, so you're not missing any feature, which benefits also Sammy's base.
That's it. I hope that a choice between both of these awesome roms is a bit easier now. If you still can't decide I suggest to flash both of them for some time and then decide which suits you better.
Know Your ArchiDroid
ArchiDroid is not only a rom. It's not only a baked android with third-party apps, modifications and tweaks. ArchiDroid is an universal backend which improves rom by many built-in functions.
Let me tell you a story. During developing first version of ArchiDroid 2.0 I experienced many problems, which were not that easy to solve. First of all - apps data. Trust me or not but you can't simply extract data, put it in /data/data after install and hope that it works. Android will detect such injection, report inconsistent of data and wipe everything attached to that. Okay so... How I should provide you with my boeffla preset? CoolTool settings? STweaks profile? If I put my data during flashing it'll get wiped. If I put my data and deny wiping it then Android will report inconsistent of data to user and work unstable. Yes guys, it's impossible to do so without a trick or without recompiling whole rom.
I won't tell you a whole story, because you probably don't want to hear about ArchiDroid development. I'll simply tell you that I overcome MANY difficulties, simply because I do what I like, and I like what I do. After countless number of hours, I can finally provide you with the ROM, which is the best. Why is it the best? Because I'm improving the base, and I'm not making any trade-offs.
Video Reviews / How ArchiDroid looks like?
@Koogly
@SkywalkerZ
ArchiDroid User Signatures
ArchiDroid Features
Know your ArchiDroid, learn how to use it
Introduction / Basics
Welcome to ArchiDroid's world mortal. In this tutorial we will show you what ArchiDroid has "inside" and what it really offers. All of things included in this post are ArchiDroid-specific, which means that you won't find any ROM with the same features, as they're written from scratch.
Here you can find some definitions of the words used in sections below. You should know most of them, but in case somebody is lost here you can get back on track.
Terminal, Shell - Typical android shell, which may be obtained in three ways.
1. Through native Android Debug Bridge (ADB) with command "adb shell" from the PC or even "ADB through network" (if supported).
2. Through any Android terminal app, f.e. Android Terminal Emulator bundled with ArchiDroid.
3. Through secure shell daemon (sshd), which needs to be turned on firstly. This is extremely useful in terms of pocket debian, which will be described later.
You can use any of these methods to access android's terminal, however usually Android Terminal Emulator will be the easiest one, as it's android app bundled with ArchiDroid. WARNING! Most of the commands below WILL require root access. You can log in to super user shell by "su" command right after obtaining shell. If you're unsure if you're logged as root or not, "whoami" command should print actual user, "root" or "unknown uid 0" are OK, others are not.
ArchiDroid's Pocket Debian
From wikipedia:
From debian site:
How exactly this covers our beloved SGS3 (and countless number of other android arm-based phones)?
As you may (or even should!) know, Android operates on it's own Linux-based kernel. Android's kernel is literally a fork of Linux kernel, with a few special/unique functions which are required, mostly hardware-specific. Because of that kernel itself is VERY compatible with everything based on Linux.
However there have always existed one typical problem, lack of proper environment. We have a great kernel, great power, linux-based android environment, but this environment lacks of very common and required libraries/binaries. If you ever wondered what is or what does busybox, this is the answer. Busybox is just a small package which offers a few standalone GNU/Linux binaries, which are required to make certain things work. For example, swap priorities. Android knows what swap is, and nothing else. It doesn't know that swap could have a priority, so if you use android's swapon command on 4 devices, it will firstly fill first device, and then proceed to the next. That's why we need busybox in ALL custom kernels, because android environment isn't enough.
However busybox sometimes isn't enough. If we focus only on Android itself, it is. But if you for example want to run stricly linux-based service, I don't know, a web server for example... Is it possible to run a native linux web server on an android? No, it's not. You should firstly compile such service on arm architecture, including all dynamic and static libraries (wrrr ) in it only to finally get mad because of missing libraries or other dependencies. Of course if you're patient you'd finally compile everything and set up, however how long would it take? A few days maybe? If you're skilled in what you're doing...
This is why I included built-in "pocket" debian in ArchiDroid. It's FULLY compatible with everything compiled/based on armhf/armel GNU/Linux architecture, for example Raspberry Pi. With two easy commands you can literally jump into debian environment and use every typical GNU/Linux utilities known from debian itself. Of course this means nothing for most of the users, because they'll never have any reason to use such debian environment but from the developer side, it's big step forward. The best example is with github. As you know ArchiDroid has it's own repo on github, from where you can download/manage stuff. There also exists git app for linux and windows. If you want to follow "expert" way of flashing experimental ArchiDroid version, such program is required. The scenario is the same as compiling web server for an android, it requires much more effort than it's worth. And even then you can end up with syncing external dependencies and searching for solutions for the problems you've never seen before... And with ArchiDroid's pocket debian? It's as simple as in any debian/ubuntu distro. "apt-get update && apt-get install git" and voila. Your git is installed and ready for work. Going further I've even included git in pocket debian itself. Okay, I have debian, I have git, and what next? With git utility I can for example provide you with delta updates for ArchiDroid! ArchiDroid can easily use pocket debian to set up and sync ArchiDroid's repository and then pack and flash latest version without even needing of a PC, using 7-zip or anything else. Another example? A web server. I know that it's very dev-specific but if you for any reason need a web server running, just for example to test simple website, you can have it with just one command. Going further, VNC? MySQL server? PHP? Python? Perl? Ruby? Maybe conditional tasks with cron? Persistent minimal IRC client? rtorrent with rutorrent GUI over WWW? The list goes on... Anything based on linux will work. You can even host a server for your favourite game, as long as it has armhf/armel binaries (unfortunately most of the games don't).
So that's it. In short, debian is an operating system built-in in ArchiDroid to provide you with (unfortunately missing) GNU/Linux environment, with full power, ready to handle anything you could request. I made my best to include fully working debian in ArchiDroid for a minimal cost. Whole OS is packed in one big tar file, compressed using highest bzip2. As for now pocket debian has ONLY 40 megabytes of size, maybe in future it will have up to 50 megabytes, but no more. It's a VERY small cost for having such great power, especially if you know how to use it.
This is a really cutting-edge feature, mostly because I have no limitiations what I can include in my ROM right now, and while other developers are dealing with OpenDelta updates and many Android-based problems, I'm just launching my pocket debian and manages linux stuff.
I'm SURE that most of the advanced ArchiDroid user will just LOVE this feature, as much as I love it. I'm looking forward to your responses how YOU use pocket debian with your ArchiDroid. It's also a great time to learn what does the debian offer and how you can simplify your common tasks with just one example debian utility .
Technical informations:
1. Pocket Debian does not cause any additional overhead. We don't need to use emulation, neither virtualization to boot our monster. I used chroot technology to "jump" into debian environment with already running kernel and Android. That means additional required CPU/RAM is based on what you run in pocket debian. Booting itself doesn't require anything, just about one megabyte of ram for /bin/bash shell .
2. Android has some restrictions, mostly sockets. It doesn't allow to create inet sockets by default, even for root users. You will need to add your custom debian users to special group called "inet" (GID 3003) to allow creating of inet sockets, and you may also need to add a group to net_raw group (GID 3004) to allow creating of raw sockets. Please keep in mind that it's only required if you're running an app which required it's own socket, for example mysql server. So apt-get install mysql-server will fail right after booting, you will need to use "addgroup mysql inet" and then apt-get -f install to complete installation. Of course "mysql" is the new user under which mysql-server really operates. I've added root to both of these groups by default.
3. The only "real" restriction is the kernel. Our debian uses Android kernel and it's filesystem. It should work with most common tasks but in some cases our kernel may lack specific modules or built-in code, for example tun/tap required for OpenVPN. Still it's enough to run pretty much everything and if you get in touch with your favourite kernel developer you can also kindly ask for specific missing things.
4. Debian is built and included thanks to debootstrap utility, ArchiDroid command used for creating debian environment is debootstrap --verbose --arch armhf --include=git,ca-certificates,ssh,htop,tightvncserver,xterm,xfonts-base --exclude=manpages,man-db,rsyslog,vim-common,vim-tiny testing debian http://ftp.fr.debian.org/debian
HowTo:
Pocket Debian contains two main terminal commands, "adlinux" and "debian". Both of them are described below. By adlinux and debian you boot and jump into debian's chroot, which means you can use any debian-specific commands.
Examples:
passwd - changes password of actual user. This is needed to login as specific user, for example through ssh.
service ssh start - starts local SSH (secure shell) daemon on native port :22, to which you can easily access via any client supporting ssh, f.e. PuTTY. So basicly after you start shell you can literally connect to your local area network (LAN) IP on port 22 f.e. through PuTTY from your PC.
ifconfig - prints network-related informations about online interfaces, including your local IP, which may be useful for connecting to SSH.
htop - Enhanced top utility. Gives you very good terminal-based view on actual running processes, used ram, load, and more.
apt-get update - Syncs with debian's apt repository. This is mandatory to use many of apt commands because ArchiDroid's debian comes without local repo available, however fully configured to download and access it with just one command
apt-get install XXX - installs packet XXX from debian's repository.
apt-cache search XXX - searches for all packets including keyword "XXX". Ultra useful in terms of searching for specific packet.
Please note that pocket debian is VERY similar to normal native Debian/Ubuntu distribution, therefore above commands are not ArchiDroid's magic, they're very widely used in Debian/Ubuntu distros. If you want to learn more, most of the Debian/Ubuntu tutorials will be very helpful.
ArchiDroid's Pocket Debian Booter (adlinux)
You can call "adlinux" command from your favourite terminal.
adlinux is designed to boot and prepare ArchiDroid's Pocket Debian environment. It requires mode to be specified, and also respects any extra arguments passed.
If you call standalone "adlinux" command then it will print usage and then ask you what you want to do with giving proper informations about every choice. Additionally if you know what you want to do, you can also pass arguments directly to adlinux command, f.e. by executing "adlinux default", which will execute adlinux with "default" mode.
Available modes:
default - Will mount /data /system /storage/sdcard0 /storage/sdcard1 and core filesystems in chroot. Default suggested mode
safe - Will mount only core filesystems in chroot. Useful if you don't want to share your storage in chroot
bare - Won't mount even core filesystems such as /proc /dev or /sys. Requires "debian force" to enter chroot. This is the "real" safe mode. You won't be able to interact with an android in any way, while debian itself will work in very limited environment, making core functions unavailable. Suggested only for testing purposes
rebuild - Will automatically reboot your device and remove debian folder in the safe way. WILL CAUSE ALL DEBIAN DATA TO BE LOST!
unmount - Will automatically reboot your device to safely unmount debian environment
Extra options:
extsd - Use external sd card (/storage/sdcard1 /storage/extSdCard), if possible
intsd - Use internal sd card (/data/media/0)
Additional information about modes:
Debian shares core kernel filesystems in "safe" and "default" modes, while it also shares your internal and external sd card in "default" mode. This is nothing to be scared of, as you have full control of what you run in debian, however please note that you CAN'T do whatever you want. All mounted partitions in debian are "binded". "Bind" means that it's mirrored to the mount point and all changes on mounted partition WILL affect the mount point, which is logical. This is nothing to be scared of, as long as you know that debian only extends your environment, it does not fully works in it's own and you CAN cause serious problems from inside of chroot. The only really safe mode is "bare" mode, however in "bare" mode debian can't really do anything, as kernel filesystems are absolutely required for most of the functions. Okay so, you need to know one thing. If you have booted debian you SHOULD NOT touch debian's folder, which is ArchiDroid/debian (on your internal or external sd card, depends what you choosed).. As you know debian for example binds /data to it's folder /data, which is physically ArchiDroid/debian/data. If you for example delete ArchiDroid/debian through root explorer WITH mounted debian then it will ALSO delete debian/data folder, which is binded to /data, and therefore will delete your whole internal sd card, that's why it's extremely important to take care because booted debian becomes part of the android and deleting it can cause at least soft bricks, with a possibility of hard as well. If you want to delete debian folder PLEASE use "rebuild" mode, only through this way you're absolutely sure that nothing bad happens and you won't delete your whole system partition by accident.
Note about extsd option:
Debian requires symlink functionality, typically native windows filesystems DON'T support symlinks, therefore you need to have your external sd card formatted in one of the native linux filesystems, f.e. ext4. adlinux will automatically tell you if debian can be unpacked and used on your external sd card, however it won't be possible under most common filesystems, such as exFAT or FAT32.
Technical informations:
1. Pocket debian archive is located in ArchiDroid/System/debian.tar.gz file. This is "bare" system used for creating environment for the first time, you should not touch it.
2. adlinux detects if debian is already extracted when booting, if not, it's firstly extracted from the file described above.
3. After extracting (if required), core filesystems are mounted with "bind" option based on the mode you've selected in "mode" question above. Typically it mounts /data /system /storage/sdcard0 /storage/sdcard1 /storage/extSdCard /dev /proc /sys.
4. Unmounting is not fully supported right now (linux barrier), therefore both "unmount" and "rebuild" options require a restart to execute properly.
ArchiDroid's Pocket Debian Shell/Chroot (debian)
You can call "debian" command from your favourite terminal.
debian command is designed to allow you "jumping" into debian chroot created by adlinux. Please read how adlinux command works firstly if you haven't done that already. debian command checks if core filesystems are available (if debian is booted), and if they are then it firstly modifies required environment variables to make debian happy (such as TERM, HOME, PATH), then it changes root (chroots) into debian folder, therefore allowing you to execute everything from inside of chroot. It's very generic command, therefore standalone "debian" command won't give you a choice the way adlinux did.
Available options (parameters):
force - required for jumping into bare debian, created with "adlinux bare" command above. This skips debian checks for mounted core filesystems, normally you should avoid it at all cost, unless you know what you're doing. If core filesystems are missing then it's very likely that your debian will be disabled in more than 90%.
extsd - Use external sd card (/storage/sdcard1 /storage/extSdCard), if possible
intsd - Use internal sd card (/data/media/0)
cmd - Executes command in debian chroot
WARNING! cmd parameter will cause all further parameters to be threated as a command passed to debian, therefore you need to make sure that this is the last debian parameter which you want. For example "debian force cmd service ssh start" will skip filesystems checks and execute "service ssh start" in debian's chroot, however "debian cmd force service ssh start" will pass "force service ssh start" to debian, therefore respecting filesystems checks and passing invalid command.
This function is extremely useful for making init.d and other startup scripts. For example you can easily call "adlinux default" and then "debian cmd service ssh start" to call secure shell daemon on every boot with two easy steps.
Technical informations:
1. debian command uses chroot technology to change root of current shell to debian shell.
2. After chrooting to debian directory, /bin/bash shell is automatically called as default debian shell.
ArchiDroid's Flasher (adflash)
You can call "adflash" command from your favourite terminal.
adflash is a great small utility, which allows you to easily update your ArchiDroid to latest stable or experimental version with one easy command and delta upgrade. It utilizes ArchiDroid functions, therefore you must be running ArchiDroid to use it.
If you call standalone "adflash" command then it will print usage and then ask you what you want to do with giving proper informations about every choice. Additionally if you know what you want to do, you can also pass arguments directly to adflash command, f.e. by executing "adflash 2e git", which will execute adflash with 2.X-EXPERIMENTAL version using git mode.
Available versions:
2e - 2.X-EXPERIMENTAL
2s - 2.X-STABLE
1e - 1.X-EXPERIMENTAL
1s - 1.X-STABLE
Extra options:
git - Sets up local git repository, which gives you delta upgrades and bandwidth saving
direct - Downloads targeted branch as .zip file directly from github
clean - Cleans everything up, including local repo and tmp folder from ArchiDroid directory specified below
extsd - Use external sd card (/storage/sdcard1 /storage/extSdCard)
intsd - Use internal sd card (/data/media/0)
nozip - Shows changelog and changes only
Okay so, the most interesting option is the mode...
Direct mode is simple, fast and effective. It downloads target version (stable or experimental) from GitHub server, then it repacks downloaded zip file and makes it available for flash. You should use this mode for one-time downloads, such as once per stable version or two. The only advantage of this method is the ability to download from github (and with one command).
Git mode is complex. It uses ArchiDroid's Pocket Debian (read above) for cloning and updating local ArchiDroid repo. This gives several number of advantages, mostly for using experimental versions. Firstly, by having local ArchiDroid repo you have to download ONLY changes between your snapshot and server's snapshot, which means delta upgrades. Secondly, you have access to all commits from target branch, so you know exactly what has changed since your latest download. Again, this is extremely useful for experimental branch, as changelog may not be up-to-date. Keep in mind that git mode will require additional space on your device for keeping ArchiDroid repository, therefore you sacrifice some space for delta upgrades. This mode is extremely useful for flashing ArchiDroid often, for example daily experimental versions, because in fact you download only new commits instead of whole repo/archive.
ArchiDroid's RunOnce (Backend)
ArchiDroid's Init (Backend)
ArchiDroid's Backend Control
ArchiDroid Backend Control is a set of settings, which controls behaviour of ArchiDroid's Init. It's located in /system/archidroid/dev and contains a number of files, which are recognized by ArchiDroid's Init. You shouldn't directly touch /system/archidroid/dev, instead you can control behaviour of ArchiDroid's Backend through /system/archidroid/scripts. They can be easily executed through any script manager, f.e. Root Browser or Android Terminal Emulator. Some of the settings are also located in /system/archidroid/etc folder, mostly configurations for binaries utilized by ArchiDroid's Init.
ArchiDroid's HArdware Volatile Entropy Gathering and Expansion Daemon (Haveged)
The haveged project is an attempt to provide an easy-to-use, unpredictable random number generator based upon an adaptation of the HAVEGE algorithm. Haveged was created to remedy low-entropy conditions in the Linux random device that can occur under some workloads, especially on headless servers. Current development of haveged is directed towards improving overall reliablity and adaptability while minimizing the barriers to using haveged for other tasks.
The original HAVEGE research dates back to 2003 and much of the original haveged documentation is now quite dated. Recent work on haveged has included an effort to provide more recent information on the project and its applications.
The original research behind HAVEGE use was based upon studies of the behavior of processor caches from a hardware level. The 'Flutter' documents attempt to provide a modern view of HAVEGE at software level through the use of a diagnostic build of haveged that captures the non deterministic inputs to haveged for analysis by external tools.
ArchiDroid has built-in haveged entropy generator. It's controlable through ArchiDroid's Backend Control - ArchiDroid_Haveged_EnableDisable.sh. It's turned on in default configuration, through HAVEGED_ENABLED
ArchiDroid's Fast Random Number Generator (Frandom)
Frandom is a Linux kernel random number generator, which is 10-50 times faster than what you get from Linux' built-in /dev/urandom. And it uses very little (/dev/frandom) or none (/dev/erandom) of the kernel's entropy pool, so it is very useful for applications that require a handy source for lots of random data.
ArchiDroid has built-in frandom activator. It's controlable through ArchiDroid's Backend Control - ArchiDroid_Frandom_EnableDisable.sh. It's turned on in default configuration, through FRANDOM_ENABLED.
Notice: Kernel must support frandom module to actually make use of that. Init will try to search for frandom.ko module and load it, then use /dev/erandom for both /dev/random and /dev/urandom. If your kernel supports frandom, it will work. If it doesn't, obviously this will be skipped even if you have FRANDOM_ENABLED. Check ArchiDroid Init log located in /data/media/0/ArchiDroid/Init.log to check if frandom works properly for you.
ArchiDroid's Adblock (dnsmasq/dnrd, dnsproxy2, pixelserv)
dnsproxy2 is a replacement DNS proxy for Android 4.3+
This currently allows the user to manually override the DNS server IP,
and it sets the correct UID on outbound requests so they can be filtered
via iptables / AFWall+ / DroidWall / etc.
Dnsmasq is a lightweight server designed to provide DNS, DHCP and TFTP services to a small-scale network. It can serve the names of local machines which are not in the global DNS. The DHCP server integrates with the DNS server and allows machines with DHCP-allocated addresses to appear in the DNS with names configured either in each host or in a central configuration file. Dnsmasq supports static and dynamic DHCP leases and BOOTP for network booting of diskless machines.
Dnrd, Domain Name Relay Daemon is a caching, forwarding DNS proxy server. Most useful on vpn or dialup firewalls but it is also a nice DNS cache for minor networks and workstations.
Pixelserv is a super minimal webserver, it's one and only purpose is serving a 1x1 pixel transparent gif file. Using some creative firewalling (netfilter/iptables) rules you can redirect some webrequests (for adds for example) to pixelserv.
ArchiDroid has built-in Adblock. It's controlable through ArchiDroid's Backend Control:
ArchiDroid_Adblock_DnsmasqDnrdModeSwitch.sh
ArchiDroid_Adblock_EnableDisable.sh
ArchiDroid_Adblock_EnableDisableLocalDNSes.sh
ArchiDroid_Adblock_EnableDisableLocalDNSesDaemon.sh
ArchiDroid_Adblock_LockUnlockHosts.sh
ArchiDroid_Adblock_MoabAdawayHostsSwitch.sh
ArchiDroid_Adblock_Reload.sh
It's turned on in default configuration, through:
ADBLOCK_ENABLED
ADBLOCK_LOCAL_DNSES_DAEMON_ENABLED
ADBLOCK_LOCAL_DNSES_ENABLED
ADBLOCK_USE_ADAWAY_HOSTS
ADBLOCK_USE_DNSMASQ
In short. This is a very advanced and powerful solution for blocking ads through DNS queries. First of all we're forwarding all DNS traffic to localhost (127.0.0.1). Then we're handling them through local DNS server - dnsmasq (default), or dnrd (option). Our local DNS server reads blocked hostnames through special /system/archidroid/etc/hosts file, then if no record is found, it forwards DNS query to OpenDNS/Google DNS servers, or if it's found, returns 127.0.0.1 as the address. Lastly, pixelserv is providing a 1x1 NULLGIF response on local web server, so instead of big black/white screen instead of the AD, we get 1x1 transparent pixel, which usually perfectly hides ad from the app or the website.
Extra features:
1. You can specify if you want to use dnsmasq (default), or dnrd (option) as a local dns server. Dnsmasq is more flexible, modern, faster and has less memory footprint, however I also left dnrd as an option, because it's proven to work stable.
2. You can specify hosts file, which you want to use. In default configuration we use AdAway's hosts file, with more than 30 thousand of records, which results in extra ~2.5 MB memory usage. You have also an option to use MOAB (Mother Of Ad Blocking) hosts file, with more than 330 thousand of records, which will result in about ~30 MB memory usage. Eventually you can append your own rules or use non-standard hosts file, available in /system/archidroid/etc/hosts. Pro tip: You can point AdAway to use this hosts file (/system/archidroid/etc/hosts_adaway), which will result in automatic updates. /system/archidroid/etc/hosts is a symbolic link, either to hosts_away or hosts_moab, if you want to specify your own hosts, you can delete symbolic link and write your own rules.
3. Original /system/etc/hosts file has been locked from editing. This is to ensure that AdAway or other adblockers won't use obsolete and slow method of blocking ads through hosts. The whole point of implementing Adblock in ArchiDroid is to provide you with super-fast, flexible and effective way of blocking ads, also with getting rid of black/white ad screen. In 99% situations you don't want to touch ArchiDroid's default behaviour, as it blocks ads perfectly. Eventually, if you have a very good reason, you can unlock original hosts file through ArchiDroid's Backend Control and modify them, however keep in mind that every additional rule WILL slow down your network speed.
4. In default configuration local dns server uses two OpenDNS servers at port 5353, two Google DNS servers at port 53 and up to two local DNS servers provided by your Wi-Fi/3G connection, which overall gives a sum of 6 remote dns servers. In some rare scenarios (f.e. some wi-fi hotspots) you can notice that a moron, administrator of this wi-fi, blocked all dns queries and forces you to use his DNSes. This is BAD because of freedom and so on, but it's very common practice, that's why I turned on local DNSes as well. If you want to improve your privacy at least a bit, you can disable local DNS servers and then use only OpenDNS and Google DNS.
5. Above option initialy has been written to allow you one-time access to such non-trusty wi-fi's. But if you for any reason need automatic update of your local DNSes (3G and Wi-Fi's will use different local DNSes), you can also turn on Local DNSes Daemon, which will automatically query and update local DNSes if needed. This is also turned on in addition to local dnses above, of course in default preset.
ArchiDroid's Forced Update (RunOnce)
Forced update selected during mode selection in aroma tells RunOnce to work in "INSTALL" mode even on "UPDATE" mode, apart from that it works exactly the same as update mode, only RunOnce is affected.
Credits
First of all many thanks to JustArchi, who gave me the permission to port this rom
and helped me not only one time to get all things to work :good:!!!
Many many thanks JustArchi for the help and support!​
ArchiDroid Core
- AROMA Installer
- AROMA Filemanager
- Didhiy Kernel
- Neo Kernel
- PhilZ Touch Recovery
- SuperSU
- Nova Launcher
- TouchPal Keyboard
- Hacker's Keyboard
- Android Terminal Emulator
- BetterBatteryStats
- Cool Tool
- Greenify
- MX Player & Custom Codec
- LMT
- Root Browser
- Titanium Backup
- CrossBreeder
- Online Nandroid
- Xposed Framework
- App Settings
- XPrivacy
- Debian
- cURL
- GitHub
ArchiDroid 2.X
- OmniROM for GT-I9300
- Linaro Toolchain
- Spirit 2
- Wanam Xposed
Special thanks to:
- Kenshin, for graphic design and ArchiDroid Touhou bootanimation
- @mrtur, for graphic design and helpful hand during ArchiDroid experimental tests
- @malachow, for helping users across both international and polish board, sharing the spirit of ArchiDroid
- All ArchiDroid Contributors, for improving and making ArchiDroid better!
- ArchiDroid Facebook Group, for beta-testing the very first alphas of ArchiDroid 2.0.0
- ROM Cleaner, for awesome generic list of bloatware
- Android Revolution HD, for being ex-ArchiDroid 1.X base
- WanamLite, for being ex-ArchiDroid 1.X base
- Temasek's Unofficial Build, for being ex-ArchiDroid 2.X base
- crDroid, for being ex-ArchiDroid 2.X base
- You, for choosing ArchiDroid over other available ROMs
I'm very happy to see ArchiDroid running also on Galaxy S .
Let me know @rodman01 if you need any help or a helpful hand, and watch my github for ArchiDroid updates .
Thanks, yes I am happy too, that I got it to work finally (kernel choice is working, but selectable modes I skipped for the moment)...your help to get this all was highly appreciated and needed and I am sure I will come back again with questions . And yes sure, I will watch your github and when I as soon as I have time, I will create branch on my repo with the changes I made :good:.
rodman01 said:
Thanks, yes I am happy too, that I got it to work finally (kernel choice is working, but selectable modes I skipped for the moment)...your help to get this all was highly appreciated and needed and I am sure I will come back again with questions . And yes sure, I will watch your github and when I as soon as I have time, I will create branch on my repo with the changes I made :good:.
Click to expand...
Click to collapse
If I can suggest anything...
Make sure that my backend works properly on SGS, you can check logs in /data/media/0/ArchiDroid, and use ArchiDroid app to check if everything works properly (haveged, dnsmasq, dnsproxy2, pixelserv etc. should be ON). This give you a few ArchiDroid-unique features described in development thread. I used advanced SGS3-optimizations, so I'm wondering if you can launch it on SGS .
Apart from that my github is a real mine of knowledge, so if you dig deep enough you should get answers to everything .
And of course, I'm very glad to see that you made it!
Yes sure you can and I will check it...to be honest haven't realized this and afraid that this won't work , but will see and probably can fix this in one of the next versions (if possible in general for and with the S1?).
rodman01 said:
Yes sure you can and I will check it...to be honest haven't realized this and afraid that this won't work , but will see and probably can fix this in one of the next versions (if possible in general for and with the S1?).
Click to expand...
Click to collapse
I'll need to recompile these binaries for generic ARM target instead of SGS3 then, just watch my github and cherry-pick proper commit when it arrives .
haveged, dnsmasq, dnsproxy2, pixelserv are on and it seems that they are running. In init.log there are a few lines mentioning for example: no such file or directory. If you want and if helpfull I can pass you the logs you want.
rodman01 said:
haveged, dnsmasq, dnsproxy2, pixelserv are on and it seems that they are running. In init.log there are a few lines mentioning for example: no such file or directory. If you want and if helpfull I can pass you the logs you want.
Click to expand...
Click to collapse
If my binaries are running properly then it's great, you should have working adblock and entropy >= 1024.
Send me RunOnce and Init logs .
Yes sure no problem. Here are the log files attached....
rodman01 said:
Yes sure no problem. Here are the log files attached....
Click to expand...
Click to collapse
Wed Apr 23 00:17:20 CEST 2014
ArchiDroid 2.4.3 EXPERIMENTAL [KVT49L]
Linux localhost 3.0.101-KK44-x-aries-cma #1 PREEMPT Tue Apr 1 07:47:49 WIB 2014 armv7l GNU/Linux
INFO: ArchiDroid_RunOnce executed!
INFO: I'm a child!
WARNING: Forcing Install mode, even if Update mode found!
INFO: Install mode detected, I'm either after full wipe or forced to think so. Turning on ADMANY and DBUPDATE
I found ./de.robv.android.xposed.installer which need merging (data)
I found ./ds.cpuoverlay which need merging (data)
I found ./com.android.settings which need merging (data)
I found ./eu.chainfire.supersu which need merging (data)
I found ./org.omnirom.device which need merging (data)
INFO: I found 5 folders which need merging (data)
INFO: boot-dmesg NOT detected, turning off logcat banner
INFO: RunOnce Semaphore started
INFO: Android created settings.db for me, how cute! Performing DBUPDATE
INFO: Applying AOSP-specific DBUPDATE
INFO: Finished DBUPDATE
INFO: I'm currently merging com.android.settings, called by ADMANY
INFO: Done! 4 to go
INFO: I'm currently merging de.robv.android.xposed.installer, called by ADMANY
INFO: Done! 3 to go
INFO: I'm currently merging ds.cpuoverlay, called by ADMANY
INFO: Done! 2 to go
INFO: I'm currently merging eu.chainfire.supersu, called by ADMANY
INFO: Done! 1 to go
INFO: I'm currently merging org.omnirom.device, called by ADMANY
INFO: Done! 0 to go
INFO: I looped 91 times and didn't have to exit from infinite loop, that's nice (RunOnce Semaphore)
INFO: Calling Post-Installation functions (if any)
INFO: Could not detect RunOnce in init.d after cleanup, that's good
INFO: Reboot required, I'm rebooting the device right now
INFO: ArchiDroid RunOnce finished
Wed Apr 23 00:21:17 CEST 2014
Click to expand...
Click to collapse
RunOnce works great!
However Init not so .
HAVEGED: ArchiDroid entropy set to: 1024. Available entropy can't get below this level
HAVEGED: Current available entropy: 183
Click to expand...
Click to collapse
Looks like haveged is not working at all.
Apart from that, one more issue found:
/system/xbin/ARCHIDROID_INIT[438]: can't create /dev/archidroid/cron/events/internal/MONITOR_START_HAVEGED: No such file or directory
Click to expand...
Click to collapse
Is /dev directory available in your system?
Code:
ADPROC="/dev/archidroid"
mkdir -p "$ADPROC"
Because this piece of code should create archidroid dir in /dev.
---------- Post added at 10:37 PM ---------- Previous post was at 10:29 PM ----------
Also, check Cron.log in ArchiDroid dir (/data/media/0/ArchiDroid) if it's not infinite-looping due to that... .
JustArchi said:
Is /dev directory available in your system?
Code:
ADPROC="/dev/archidroid"
mkdir -p "$ADPROC"
Because this piece of code should create archidroid dir in /dev.
Click to expand...
Click to collapse
Yes the folder is available, but almost all files have 0.0 b size, could it be that sym links and/or missing or wrong permissions are the reason?
rodman01 said:
Yes the folder is available, but almost all files have 0.0 b size, could it be that sym links and/or missing or wrong permissions are the reason?
Click to expand...
Click to collapse
Check if you can create a folder in it as root: mkdir /dev/whatever
Perhaps I'll need to move my ADPROC somewhere else, as your device may not support folders in /dev.
Also, I added a safety check for that .
https://github.com/JustArchi/ArchiDroid/commit/b8cae2000d8802e7f9e270eb43b3c621895d9340
JustArchi said:
Check if you can create a folder in it as root: mkdir /dev/whatever
Perhaps I'll need to move my ADPROC somewhere else, as your device may not support folders in /dev.
Also, I added a safety check for that .
https://github.com/JustArchi/ArchiDroid/commit/b8cae2000d8802e7f9e270eb43b3c621895d9340
Click to expand...
Click to collapse
Yes you are right, seems that creating folders in /dev is not possible.
rodman01 said:
Yes you are right, seems that creating folders in /dev is not possible.
Click to expand...
Click to collapse
Try as root, as user you'll always get permission denied .
ok sorry, but no folder wasn't created, although terminal has asked for su permissions and had been given. But no new folder to see.
rodman01 said:
ok sorry, but no folder wasn't created, although terminal has asked for su permissions and had been given. But no new folder to see.
Click to expand...
Click to collapse
I'll need to add some more tunables to properly support your device. As for now you should sync with my work (mostly https://github.com/JustArchi/ArchiDroid/commit/b8cae2000d8802e7f9e270eb43b3c621895d9340) and ignore those errors .
Thanks for your help and as for now :good:...will sync it and try a new build, think tomorrow.

[EOL] [ROM] [5.1.1] [CyanogenMod] [GCC 4.9] [Excellent] [15/11/15] ArchiDroid V3.1.5

{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
Clean | Stable | Flexible | Optimized | Excellent
Changelog
ArchiDroid 3.1.5
- Newest ArchiKernel snapshot
- Updated GAPPS, sources and other common things
ArchiDroid 3.1.4
- Newest ArchiKernel snapshot
- Updated GAPPS, sources and other common things
ArchiDroid 3.1.3
- [i9300] Changed malloc implementation to dlmalloc
- Implemented dex-preoptimization for ART
- Removed xposed due to incompatibility with dex-preoptimized ART
- Newest ArchiKernel snapshot
- [nicki] AK: Added mpdecision switch to Synapse
- [nicki] Added optional dual-sim patch to AROMA
- Updated GAPPS, sources and other common things
ArchiDroid 3.1.2
- Switched arm-linux-androideabi toolchain back to SaberMod
- Fixed wrong auto-vectorization of ID3 iterator causing various media crashes with badly-tagged MP3s
- Newest ArchiKernel snapshot
- Updated GAPPS
- Updated Xposed
- Other misc changes and bugfixes
ArchiDroid 3.1.1
- ArchiDroid Optimizations V4.1
- ArchiDroid is now built with UBERTC 4.9 androideabi (instead of SaberMod 4.9) and 5.2 ArchiToolchain eabi (instead of 5.1)
- Newest ArchiKernel snapshot
- Updated GAPPS
- Updated Xposed
- Other misc changes and bugfixes
ArchiDroid 3.1
- Initial release
Important notes
- YOU DIRTY FLASH AT YOUR OWN RISK.
- FULL WIPE IS ALWAYS SUGGESTED WHEN FLASHING NEW VERSION.
- DON'T EXPECT A BUGLESS EXPERIENCE IF YOU DIRTY FLASH OR USE TITANIUM BACKUP.
ArchiDroid 3.1 is major new release based on CyanogenMod 12.1 (Android 5.1.1 Lollipop). There are too many changes compared to previous release of AD 3.0.X, so you should treat this version as totally new ROM. Here you can find some important notes to make update easier, and to avoid some possible issues:
- The only two kernels supported by AD are stock one, and ArchiKernel. AK is suggested one by me, as it already includes all major improvements I wanted to add, such as OC or deep AD optimizations. I DO NOT RECOMMEND FLASHING ANY OTHER CUSTOM KERNELS. Only AK uses my own AnyKernel method which guarantees 100% compatibility with the ROM, if you're using any other kernel you're doing it at your own risk, and it's nearly guaranteed to cause very deep incompatibility issues, which will hurt overall system stability.
- If coming from AD 3.0.X or any other ROM, regardless what it is, you should make full wipe. ArchiDroid is smart enough to detect itself during install and offer you an update, but this option should not be used with major release such as this one. Full wipe in necessary.
- It also means that you should AVOID restoring old, incompatible data with apps such as Titanium Backup. Full wipe means full wipe, not half wipe and restoring data later. Of course, it's up to you if you want to follow my suggestions or not, but do not expect that you'll have bugfree experience otherwise.
- You should update your recovery prior to flashing, again, regardless of what recovery you have now. The best way is to do so right from ArchiDroid ZIP, as AD offers updating recovery prior to flashing the rest, from AROMA. On the preset screen you can choose "Recovery", which will flash stock kernel + recovery combo (TWRP self-compiled by me). Then reboot recovery and flash the rest. All other recoveries, including other/older TWRPs are unsupported and you're using them at your own risk.
- While not mandatory, I suggest also a wipe of whole internal SD card (/data and /data/media), as this will make sure than no junk is left. If you don't want to do so, at least make sure to remove /data/media/0/ArchiDroid folder prior to flashing, even if you have experimental AD 3.1 already. I do not track all regressions and doing so will make sure that backend works in intended way. A best way to do so is to update your recovery first, then through TWRP file manager navigate to /data/media/0 and remove whole ArchiDroid folder.
- AD already has built-in GAPPS, provided by OpenGApps project. Flashing other GAPPS is not recommended, but if you know what you're doing you can still untick all Google Apps offered in AROMA (Whole GAPPS category including core gapps + also google launcher and google keyboard) and install your own GAPPS package after AD installation. Although, as I said, I suggest to stick with AD gapps, as they're proven to be working well, and they're tested by me and other experimental users.
TL;DR
- Use only ArchiKernel or Stock kernel included in AROMA
- Make full wipe
- Update recovery prior to flashing
- Wipe internal storage, or at least remove /data/media/0/ArchiDroid
- Flash AD
- Do not restore old data through titanium backup
- Enjoy your fresh ArchiDroid experience
Download
All Files XDA
Stable: ArchiDroid 3.1.5 GitHub | XDA Direct | XDA Torrent
Oldstable: ArchiDroid 3.0.1.1 GitHub | XDA Direct | XDA Torrent
Remember that you don't need anything else to flash. Google Apps are included already.
Known Issues
All known and unknown CyanogenMod bugs (if any)
Follow ArchiDroid On XDA!
Like ArchiDroid On Facebook!
Write A Review!
Rate This Thread!
Buy Me A Beer!
Hit Thanks!
XDA:DevDB Information
[EOL] [ROM] [5.1.1] [CyanogenMod] [GCC 4.9] [Excellent] [15/11/15] ArchiDroid V3.1.5, ROM for the Sony Xperia M
Contributors
JustArchi
Source Code: https://github.com/ArchiDroid/ArchiDroid/tree/nicki-cm-stable
ROM OS Version: 5.1.x Lollipop
ROM Kernel: Linux 3.4.x
Based On: CyanogenMod
Version Information
Status: Stable
Created 2014-07-06
Last Updated 2020-09-13
Reserved
[SIZE="+3"]ArchiDroid's FAQ / Q&A[/SIZE]​[SIZE="+1"]Please use above thread for information purpose only as it covers Samsung Galaxy S3 i9300[/SIZE]​
[SIZE="+1"]Features / Why ArchiDroid?[/SIZE]
First of all, ArchiDroid includes everything available in it's base. The whole point of ArchiDroid is to improve the base, without needing of making any trade-offs, so by flashing ArchiDroid, you're getting everything offered by the base itself. There's nothing to lose, everything to gain.
You can read detailed information about every ArchiDroid component here. It's a massive wall of text, so I'm only going to list the core features without describing them.
These were written from scratch, they're completely unique and you won't find exactly the same implementation in any other ROM.
ArchiDroid-Unique features:
- ArchiDroid's AROMA Installer
- ArchiDroid's Pocket Debian
- ArchiDroid's Flasher
- ArchiDroid's RunOnce
- ArchiDroid's Init
- ArchiDroid's Backend Control
- ArchiDroid's HArdware Volatile Entropy Gathering and Expansion Daemon (Haveged)
- ArchiDroid's Fast Random Number Generator (Frandom)
- ArchiDroid's Adblock (dnsmasq/dnrd, dnsproxy2, pixelserv)
- ArchiDroid's Forced Update
Apart from that, here, on the credits page, you can find all third-party projects, which have been implemented into ArchiDroid. In addition to that, it's up to YOU to decide if you want to install something, or not.
ArchiDroid focuses on flexibility and user choice.
If you're looking for fastest ROM, choose ArchiDroid.
If you're looking for most battery-saving ROM, choose ArchiDroid
If you're looking for cutting-edge functions, choose ArchiDroid
If you're looking for the most flexible rom ever created, definitely choose ArchiDroid
ArchiDroid adjusts to your needs. You can make it whatever you want. With bunch of presets, modes and questions, you can make your ArchiDroid behave. Check yourself why ArchiDroid is The TOP 1 ROM for Galaxy S3http://forum.xda-developers.com/galaxy-s3#romList, according to number of followers, rates, reviews and downloads count. Check the Reviews, take a look at Video Reviews, do whatever you want to, ArchiDroid is proven to be one of the best ROMs for Galaxy S3, ever created, and now strikes directly at Xperia M.
Try ArchiDroid once, and you'll never look back. I can assure you.
Disclaimer
ARCHIDROID SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING, WITHOUT LIMITATION, THE WARRANTIES THAT IT IS FREE OF DEFECTS, VIRUS FREE, ABLE TO OPERATE ON AN UNINTERRUPTED BASIS, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING.
Click to expand...
Click to collapse
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 ROM 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. Hard. A lot.
Click to expand...
Click to collapse
Developer's Kitchen
Unless stated otherwise, all ArchiDroid components are licensed under the Apache License:
Code:
Copyright 2014 [email protected]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Especially:
4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:
You must give any other recipients of the Work or Derivative Works a copy of this License; and
You must cause any modified files to carry prominent notices stating that You changed the files; and
You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and
If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License.
You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.
Click to expand...
Click to collapse
ArchiDroid is one of the most complex ROMs ever created. When you start digging in my work, you can very easily get lost. And I'm not talking about base itself, but about everything next to it. You can use every part of my work, as long as:
1. You include proper credit where you should. This usually includes proper comment in a script/file and in the credits of the project, including license (if needed)
2. You let me know about this fact. Through PM on xda or e-mail
I'm always happy to help, especially with the problems I faced in the past. However I also want to be respected, considering that most of the ArchiDroid parts were written from scratch.
Know Your ArchiDroid
ArchiDroid is not only a rom. It's not only a baked android with third-party apps, modifications and tweaks. ArchiDroid is an universal backend which improves rom by many built-in functions.
Let me tell you a story. During developing first version of ArchiDroid 2.0 I experienced many problems, which were not that easy to solve. First of all - apps data. Trust me or not but you can't simply extract data, put it in /data/data after install and hope that it works. Android will detect such injection, report inconsistent of data and wipe everything attached to that. Okay so... How I should provide you with my boeffla preset? CoolTool settings? STweaks profile? If I put my data during flashing it'll get wiped. If I put my data and deny wiping it then Android will report inconsistent of data to user and work unstable. Yes guys, it's impossible to do so without a trick or without recompiling whole rom.
I won't tell you a whole story, because you probably don't want to hear about ArchiDroid development. I'll simply tell you that I overcome MANY difficulties, simply because I do what I like, and I like what I do. After countless number of hours, I can finally provide you with the ROM, which is the best. Why is it the best? Because I'm improving the base, and I'm not making any trade-offs.
GitHub / Versioning / Experimental Versions
ArchiDroid version contains 3 numbers. X.Y.Z. X is the base number of the rom. For now it won't change because ArchiDroid 1 is based on Sammy Rom and ArchiDroid 2 is based on CyanogenMod. Basically we have two numbers left, Y and Z. Y number will change when I'll implement something really new, when I'll make some advanced improvements or after many Z changes. Z number is the "standard" update, like updated sources, some bugfixes and so on.
I've learned many things since releasing of first ArchiDroid 1.0.0. Because of that I've also created a GitHub repository, which you can find here. What does it mean for you? First of all as you can see there are 2 different branches. nicki-cm-stable and nicki-cm-experimental. What does it mean? You can enter selected branch and click on "Commits" button to see every single update which I've made to selected branch. Experimental branches will get updates nearly every single day, while stable branch will form from a snapshot of current experimental branch, whenever I feel like it's ready.
However that doesn't mean you need to wait for my stable updates! You can easily "pack" latest experimental and flash without needing to wait for my weekly build. I'll tell you how to download and flash it by yourself.
[Newbie Version]
1. Open nicki-cm-experimental branch.
2. Click on Download Zip button located in bottom-right corner.
3. Install 7-Zip if you don't have that already. Other programs may, or may not work correctly.
4. Right-Click on zip, select Extract Here
5. Navigate to newly created ArchiDroid-nicki-cm-experimental folder
6. Select all files APART FROM __build folder, right-click and select 7-Zip => Add to archive
7. Make sure that you have zip format, fastest compression (to save some megabytes) and feflate method of compression.
8. Done! Copy newly created ArchiDroid-nicki-cm-experimental.zip to your phone and flash as usual.
[Expert Version]
1. Install Git for Windows or Linux
2. If you're on windows then make sure that windows won't change LF into CRLF (git config --global core.autocrlf false)
3. Clone my git repository using .git file. Keep in mind to specify depth, as this repo is really big. (git clone https://github.com/ArchiDroid/ArchiDroid.git --branch nicki-cm-experimental --depth 1)
4. Install 7-Zip if you don't have that already. Other programs may, or may not work correctly.
5. Select all files APART FROM __build folder, right-click and select 7-Zip => Add to archive
6. Make sure that you have zip format, fastest compression (to save some megabytes) and feflate method of compression.
7. Done! Copy newly created ArchiDroid-nicki-cm-experimental.zip to your phone and flash as usual.
8. In order to update your local repo execute git pull origin nicki-cm-experimental and go to point 5.
Additionally you can watch my short video, which shows how to flash experimental ArchiDroid going through "Expert Version".
Reserved
Video Reviews / How ArchiDroid looks like?
@Koogly
ArchiDroid User Signatures
ArchiDroid Features
Know your ArchiDroid, learn how to use it
Introduction / Basics
Welcome to ArchiDroid's world mortal. In this tutorial we will show you what ArchiDroid has "inside" and what it really offers. All of things included in this post are ArchiDroid-specific, which means that you won't find any ROM with the same features, as they're written from scratch.
Here you can find some definitions of the words used in sections below. You should know most of them, but in case somebody is lost here you can get back on track.
Terminal, Shell - Typical android shell, which may be obtained in three ways.
1. Through native Android Debug Bridge (ADB) with command "adb shell" from the PC or even "ADB through network" (if supported).
2. Through any Android terminal app, f.e. Android Terminal Emulator bundled with ArchiDroid.
3. Through secure shell daemon (sshd), which needs to be turned on firstly. This is extremely useful in terms of pocket debian, which will be described later.
You can use any of these methods to access android's terminal, however usually Android Terminal Emulator will be the easiest one, as it's android app bundled with ArchiDroid. WARNING! Most of the commands below WILL require root access. You can log in to super user shell by "su" command right after obtaining shell. If you're unsure if you're logged as root or not, "whoami" command should print actual user, "root" or "unknown uid 0" are OK, others are not.
ArchiDroid's Pocket Debian
From wikipedia:
Debian is an operating system composed of free software mostly carrying the GNU General Public License. The operating system is developed by an internet collaboration of volunteers aligned with The Debian Project.
Click to expand...
Click to collapse
From debian site:
As most of you know, Linux is just a kernel. And, for a long time, the Linux kernel ran only on the Intel x86 series of machines, from the 386 up.
However, this is no longer true, by any means. The Linux kernel has now been ported to a large, and growing, list of architectures. Following close behind, we have ported the Debian distribution to these architectures. In general, this is a process with a sticky start (as we get libc and the dynamic linker working smoothly), and then a relatively routine, if lengthy job, of attempting to recompile all our packages under the new architectures.
Debian is an operating system (OS), not a kernel (actually, it is more than an OS since it includes thousands of application programs)
Click to expand...
Click to collapse
How exactly this covers our beloved phone (and countless number of other android arm-based phones)?
As you may (or even should!) know, Android operates on it's own Linux-based kernel. Android's kernel is literally a fork of Linux kernel, with a few special/unique functions which are required, mostly hardware-specific. Because of that kernel itself is VERY compatible with everything based on Linux.
However there have always existed one typical problem, lack of proper environment. We have a great kernel, great power, linux-based android environment, but this environment lacks of very common and required libraries/binaries. If you ever wondered what is or what does busybox, this is the answer. Busybox is just a small package which offers a few standalone GNU/Linux binaries, which are required to make certain things work. For example, swap priorities. Android knows what swap is, and nothing else. It doesn't know that swap could have a priority, so if you use android's swapon command on 4 devices, it will firstly fill first device, and then proceed to the next. That's why we need busybox in ALL custom kernels, because android environment isn't enough.
However busybox sometimes isn't enough. If we focus only on Android itself, it is. But if you for example want to run stricly linux-based service, I don't know, a web server for example... Is it possible to run a native linux web server on an android? No, it's not. You should firstly compile such service on arm architecture, including all dynamic and static libraries (wrrr ) in it only to finally get mad because of missing libraries or other dependencies. Of course if you're patient you'd finally compile everything and set up, however how long would it take? A few days maybe? If you're skilled in what you're doing...
This is why I included built-in "pocket" debian in ArchiDroid. It's FULLY compatible with everything compiled/based on armhf/armel GNU/Linux architecture, for example Raspberry Pi. With two easy commands you can literally jump into debian environment and use every typical GNU/Linux utilities known from debian itself. Of course this means nothing for most of the users, because they'll never have any reason to use such debian environment but from the developer side, it's big step forward. The best example is with github. As you know ArchiDroid has it's own repo on github, from where you can download/manage stuff. There also exists git app for linux and windows. If you want to follow "expert" way of flashing experimental ArchiDroid version, such program is required. The scenario is the same as compiling web server for an android, it requires much more effort than it's worth. And even then you can end up with syncing external dependencies and searching for solutions for the problems you've never seen before... And with ArchiDroid's pocket debian? It's as simple as in any debian/ubuntu distro. "apt-get update && apt-get install git" and voila. Your git is installed and ready for work. Going further I've even included git in pocket debian itself. Okay, I have debian, I have git, and what next? With git utility I can for example provide you with delta updates for ArchiDroid! ArchiDroid can easily use pocket debian to set up and sync ArchiDroid's repository and then pack and flash latest version without even needing of a PC, using 7-zip or anything else. Another example? A web server. I know that it's very dev-specific but if you for any reason need a web server running, just for example to test simple website, you can have it with just one command. Going further, VNC? MySQL server? PHP? Python? Perl? Ruby? Maybe conditional tasks with cron? Persistent minimal IRC client? rtorrent with rutorrent GUI over WWW? The list goes on... Anything based on linux will work. You can even host a server for your favourite game, as long as it has armhf/armel binaries (unfortunately most of the games don't).
So that's it. In short, debian is an operating system built-in in ArchiDroid to provide you with (unfortunately missing) GNU/Linux environment, with full power, ready to handle anything you could request. I made my best to include fully working debian in ArchiDroid for a minimal cost. Whole OS is packed in one big tar file, compressed using highest bzip2. As for now pocket debian has ONLY 40 megabytes of size, maybe in future it will have up to 50 megabytes, but no more. It's a VERY small cost for having such great power, especially if you know how to use it.
This is a really cutting-edge feature, mostly because I have no limitiations what I can include in my ROM right now, and while other developers are dealing with OpenDelta updates and many Android-based problems, I'm just launching my pocket debian and manages linux stuff.
I'm SURE that most of the advanced ArchiDroid user will just LOVE this feature, as much as I love it. I'm looking forward to your responses how YOU use pocket debian with your ArchiDroid. It's also a great time to learn what does the debian offer and how you can simplify your common tasks with just one example debian utility .
Technical informations:
1. Pocket Debian does not cause any additional overhead. We don't need to use emulation, neither virtualization to boot our monster. I used chroot technology to "jump" into debian environment with already running kernel and Android. That means additional required CPU/RAM is based on what you run in pocket debian. Booting itself doesn't require anything, just about one megabyte of ram for /bin/bash shell .
2. Android has some restrictions, mostly sockets. It doesn't allow to create inet sockets by default, even for root users. You will need to add your custom debian users to special group called "inet" (GID 3003) to allow creating of inet sockets, and you may also need to add a group to net_raw group (GID 3004) to allow creating of raw sockets. Please keep in mind that it's only required if you're running an app which required it's own socket, for example mysql server. So apt-get install mysql-server will fail right after booting, you will need to use "addgroup mysql inet" and then apt-get -f install to complete installation. Of course "mysql" is the new user under which mysql-server really operates. I've added root to both of these groups by default.
3. The only "real" restriction is the kernel. Our debian uses Android kernel and it's filesystem. It should work with most common tasks but in some cases our kernel may lack specific modules or built-in code, for example tun/tap required for OpenVPN. Still it's enough to run pretty much everything and if you get in touch with your favourite kernel developer you can also kindly ask for specific missing things.
4. Debian is built and included thanks to debootstrap utility, ArchiDroid command used for creating debian environment is debootstrap --verbose --arch armhf --include=git,ca-certificates,ssh,htop,tightvncserver,xterm,xfonts-base --exclude=manpages,man-db,rsyslog,vim-common,vim-tiny testing debian http://ftp.fr.debian.org/debian
HowTo:
Pocket Debian contains two main terminal commands, "adlinux" and "debian". Both of them are described below. By adlinux and debian you boot and jump into debian's chroot, which means you can use any debian-specific commands.
Examples:
passwd - changes password of actual user. This is needed to login as specific user, for example through ssh.
service ssh start - starts local SSH (secure shell) daemon on native port :22, to which you can easily access via any client supporting ssh, f.e. PuTTY. So basicly after you start shell you can literally connect to your local area network (LAN) IP on port 22 f.e. through PuTTY from your PC.
ifconfig - prints network-related informations about online interfaces, including your local IP, which may be useful for connecting to SSH.
htop - Enhanced top utility. Gives you very good terminal-based view on actual running processes, used ram, load, and more.
apt-get update - Syncs with debian's apt repository. This is mandatory to use many of apt commands because ArchiDroid's debian comes without local repo available, however fully configured to download and access it with just one command
apt-get install XXX - installs packet XXX from debian's repository.
apt-cache search XXX - searches for all packets including keyword "XXX". Ultra useful in terms of searching for specific packet.
Please note that pocket debian is VERY similar to normal native Debian/Ubuntu distribution, therefore above commands are not ArchiDroid's magic, they're very widely used in Debian/Ubuntu distros. If you want to learn more, most of the Debian/Ubuntu tutorials will be very helpful.
ArchiDroid's Pocket Debian Booter (adlinux)
You can call "adlinux" command from your favourite terminal.
adlinux is designed to boot and prepare ArchiDroid's Pocket Debian environment. It requires mode to be specified, and also respects any extra arguments passed.
If you call standalone "adlinux" command then it will print usage and then ask you what you want to do with giving proper informations about every choice. Additionally if you know what you want to do, you can also pass arguments directly to adlinux command, f.e. by executing "adlinux default", which will execute adlinux with "default" mode.
Available modes:
default - Will mount /data /system /storage/sdcard0 /storage/sdcard1 and core filesystems in chroot. Default suggested mode
safe - Will mount only core filesystems in chroot. Useful if you don't want to share your storage in chroot
bare - Won't mount even core filesystems such as /proc /dev or /sys. Requires "debian force" to enter chroot. This is the "real" safe mode. You won't be able to interact with an android in any way, while debian itself will work in very limited environment, making core functions unavailable. Suggested only for testing purposes
rebuild - Will automatically reboot your device and remove debian folder in the safe way. WILL CAUSE ALL DEBIAN DATA TO BE LOST!
unmount - Will automatically reboot your device to safely unmount debian environment
Extra options:
extsd - Use external sd card (/storage/sdcard1 /storage/extSdCard), if possible
intsd - Use internal sd card (/data/media/0)
Additional information about modes:
Debian shares core kernel filesystems in "safe" and "default" modes, while it also shares your internal and external sd card in "default" mode. This is nothing to be scared of, as you have full control of what you run in debian, however please note that you CAN'T do whatever you want. All mounted partitions in debian are "binded". "Bind" means that it's mirrored to the mount point and all changes on mounted partition WILL affect the mount point, which is logical. This is nothing to be scared of, as long as you know that debian only extends your environment, it does not fully works in it's own and you CAN cause serious problems from inside of chroot. The only really safe mode is "bare" mode, however in "bare" mode debian can't really do anything, as kernel filesystems are absolutely required for most of the functions. Okay so, you need to know one thing. If you have booted debian you SHOULD NOT touch debian's folder, which is ArchiDroid/debian (on your internal or external sd card, depends what you choosed).. As you know debian for example binds /data to it's folder /data, which is physically ArchiDroid/debian/data. If you for example delete ArchiDroid/debian through root explorer WITH mounted debian then it will ALSO delete debian/data folder, which is binded to /data, and therefore will delete your whole internal sd card, that's why it's extremely important to take care because booted debian becomes part of the android and deleting it can cause at least soft bricks, with a possibility of hard as well. If you want to delete debian folder PLEASE use "rebuild" mode, only through this way you're absolutely sure that nothing bad happens and you won't delete your whole system partition by accident.
Note about extsd option:
Debian requires symlink functionality, typically native windows filesystems DON'T support symlinks, therefore you need to have your external sd card formatted in one of the native linux filesystems, f.e. ext4. adlinux will automatically tell you if debian can be unpacked and used on your external sd card, however it won't be possible under most common filesystems, such as exFAT or FAT32.
Technical informations:
1. Pocket debian archive is located in ArchiDroid/System/debian.tar.gz file. This is "bare" system used for creating environment for the first time, you should not touch it.
2. adlinux detects if debian is already extracted when booting, if not, it's firstly extracted from the file described above.
3. After extracting (if required), core filesystems are mounted with "bind" option based on the mode you've selected in "mode" question above. Typically it mounts /data /system /storage/sdcard0 /storage/sdcard1 /storage/extSdCard /dev /proc /sys.
4. Unmounting is not fully supported right now (linux barrier), therefore both "unmount" and "rebuild" options require a restart to execute properly.
ArchiDroid's Pocket Debian Shell/Chroot (debian)
You can call "debian" command from your favourite terminal.
debian command is designed to allow you "jumping" into debian chroot created by adlinux. Please read how adlinux command works firstly if you haven't done that already. debian command checks if core filesystems are available (if debian is booted), and if they are then it firstly modifies required environment variables to make debian happy (such as TERM, HOME, PATH), then it changes root (chroots) into debian folder, therefore allowing you to execute everything from inside of chroot. It's very generic command, therefore standalone "debian" command won't give you a choice the way adlinux did.
Available options (parameters):
force - required for jumping into bare debian, created with "adlinux bare" command above. This skips debian checks for mounted core filesystems, normally you should avoid it at all cost, unless you know what you're doing. If core filesystems are missing then it's very likely that your debian will be disabled in more than 90%.
extsd - Use external sd card (/storage/sdcard1 /storage/extSdCard), if possible
intsd - Use internal sd card (/data/media/0)
cmd - Executes command in debian chroot
WARNING! cmd parameter will cause all further parameters to be threated as a command passed to debian, therefore you need to make sure that this is the last debian parameter which you want. For example "debian force cmd service ssh start" will skip filesystems checks and execute "service ssh start" in debian's chroot, however "debian cmd force service ssh start" will pass "force service ssh start" to debian, therefore respecting filesystems checks and passing invalid command.
This function is extremely useful for making init.d and other startup scripts. For example you can easily call "adlinux default" and then "debian cmd service ssh start" to call secure shell daemon on every boot with two easy steps.
Technical informations:
1. debian command uses chroot technology to change root of current shell to debian shell.
2. After chrooting to debian directory, /bin/bash shell is automatically called as default debian shell.
ArchiDroid's Flasher (adflash)
You can call "adflash" command from your favourite terminal.
adflash is a great small utility, which allows you to easily update your ArchiDroid to latest stable or experimental version with one easy command and delta upgrade. It utilizes ArchiDroid functions, therefore you must be running ArchiDroid to use it.
If you call standalone "adflash" command then it will print usage and then ask you what you want to do with giving proper informations about every choice. Additionally if you know what you want to do, you can also pass arguments directly to adflash command, f.e. by executing "adflash 2e git", which will execute adflash with 2.X-EXPERIMENTAL version using git mode.
Available versions:
2e - 2.X-EXPERIMENTAL
2s - 2.X-STABLE
1e - 1.X-EXPERIMENTAL
1s - 1.X-STABLE
Extra options:
git - Sets up local git repository, which gives you delta upgrades and bandwidth saving
direct - Downloads targeted branch as .zip file directly from github
clean - Cleans everything up, including local repo and tmp folder from ArchiDroid directory specified below
extsd - Use external sd card (/storage/sdcard1 /storage/extSdCard)
intsd - Use internal sd card (/data/media/0)
nozip - Shows changelog and changes only
Okay so, the most interesting option is the mode...
Direct mode is simple, fast and effective. It downloads target version (stable or experimental) from GitHub server, then it repacks downloaded zip file and makes it available for flash. You should use this mode for one-time downloads, such as once per stable version or two. The only advantage of this method is the ability to download from github (and with one command).
Git mode is complex. It uses ArchiDroid's Pocket Debian (read above) for cloning and updating local ArchiDroid repo. This gives several number of advantages, mostly for using experimental versions. Firstly, by having local ArchiDroid repo you have to download ONLY changes between your snapshot and server's snapshot, which means delta upgrades. Secondly, you have access to all commits from target branch, so you know exactly what has changed since your latest download. Again, this is extremely useful for experimental branch, as changelog may not be up-to-date. Keep in mind that git mode will require additional space on your device for keeping ArchiDroid repository, therefore you sacrifice some space for delta upgrades. This mode is extremely useful for flashing ArchiDroid often, for example daily experimental versions, because in fact you download only new commits instead of whole repo/archive.
ArchiDroid's RunOnce (Backend)
ArchiDroid's Init (Backend)
ArchiDroid's Backend Control
ArchiDroid Backend Control is a set of settings, which controls behaviour of ArchiDroid's Init. It's located in /system/archidroid/dev and contains a number of files, which are recognized by ArchiDroid's Init. You shouldn't directly touch /system/archidroid/dev, instead you can control behaviour of ArchiDroid's Backend through /system/archidroid/scripts. They can be easily executed through any script manager, f.e. Root Browser or Android Terminal Emulator. Some of the settings are also located in /system/archidroid/etc folder, mostly configurations for binaries utilized by ArchiDroid's Init.
ArchiDroid's HArdware Volatile Entropy Gathering and Expansion Daemon (Haveged)
The haveged project is an attempt to provide an easy-to-use, unpredictable random number generator based upon an adaptation of the HAVEGE algorithm. Haveged was created to remedy low-entropy conditions in the Linux random device that can occur under some workloads, especially on headless servers. Current development of haveged is directed towards improving overall reliablity and adaptability while minimizing the barriers to using haveged for other tasks.
The original HAVEGE research dates back to 2003 and much of the original haveged documentation is now quite dated. Recent work on haveged has included an effort to provide more recent information on the project and its applications.
The original research behind HAVEGE use was based upon studies of the behavior of processor caches from a hardware level. The 'Flutter' documents attempt to provide a modern view of HAVEGE at software level through the use of a diagnostic build of haveged that captures the non deterministic inputs to haveged for analysis by external tools.
ArchiDroid has built-in haveged entropy generator. It's controlable through ArchiDroid's Backend Control - ArchiDroid_Haveged_EnableDisable.sh. It's turned on in default configuration, through HAVEGED_ENABLED
ArchiDroid's Fast Random Number Generator (Frandom)
Frandom is a Linux kernel random number generator, which is 10-50 times faster than what you get from Linux' built-in /dev/urandom. And it uses very little (/dev/frandom) or none (/dev/erandom) of the kernel's entropy pool, so it is very useful for applications that require a handy source for lots of random data.
ArchiDroid has built-in frandom activator. It's controlable through ArchiDroid's Backend Control - ArchiDroid_Frandom_EnableDisable.sh. It's turned on in default configuration, through FRANDOM_ENABLED.
Notice: Kernel must support frandom module to actually make use of that. Init will try to search for frandom.ko module and load it, then use /dev/erandom for both /dev/random and /dev/urandom. If your kernel supports frandom, it will work. If it doesn't, obviously this will be skipped even if you have FRANDOM_ENABLED. Check ArchiDroid Init log located in /data/media/0/ArchiDroid/Init.log to check if frandom works properly for you.
ArchiDroid's Adblock (dnsmasq/dnrd, dnsproxy2, pixelserv)
dnsproxy2 is a replacement DNS proxy for Android 4.3+
This currently allows the user to manually override the DNS server IP,
and it sets the correct UID on outbound requests so they can be filtered
via iptables / AFWall+ / DroidWall / etc.
Dnsmasq is a lightweight server designed to provide DNS, DHCP and TFTP services to a small-scale network. It can serve the names of local machines which are not in the global DNS. The DHCP server integrates with the DNS server and allows machines with DHCP-allocated addresses to appear in the DNS with names configured either in each host or in a central configuration file. Dnsmasq supports static and dynamic DHCP leases and BOOTP for network booting of diskless machines.
Dnrd, Domain Name Relay Daemon is a caching, forwarding DNS proxy server. Most useful on vpn or dialup firewalls but it is also a nice DNS cache for minor networks and workstations.
Pixelserv is a super minimal webserver, it's one and only purpose is serving a 1x1 pixel transparent gif file. Using some creative firewalling (netfilter/iptables) rules you can redirect some webrequests (for adds for example) to pixelserv.
ArchiDroid has built-in Adblock. It's controlable through ArchiDroid's Backend Control:
ArchiDroid_Adblock_DnsmasqDnrdModeSwitch.sh
ArchiDroid_Adblock_EnableDisable.sh
ArchiDroid_Adblock_EnableDisableLocalDNSes.sh
ArchiDroid_Adblock_EnableDisableLocalDNSesDaemon.sh
ArchiDroid_Adblock_LockUnlockHosts.sh
ArchiDroid_Adblock_MoabAdawayHostsSwitch.sh
ArchiDroid_Adblock_Reload.sh
It's turned on in default configuration, through:
ADBLOCK_ENABLED
ADBLOCK_LOCAL_DNSES_DAEMON_ENABLED
ADBLOCK_LOCAL_DNSES_ENABLED
ADBLOCK_USE_ADAWAY_HOSTS
ADBLOCK_USE_DNSMASQ
In short. This is a very advanced and powerful solution for blocking ads through DNS queries. First of all we're forwarding all DNS traffic to localhost (127.0.0.1). Then we're handling them through local DNS server - dnsmasq (default), or dnrd (option). Our local DNS server reads blocked hostnames through special /system/archidroid/etc/hosts file, then if no record is found, it forwards DNS query to OpenDNS/Google DNS servers, or if it's found, returns 127.0.0.1 as the address. Lastly, pixelserv is providing a 1x1 NULLGIF response on local web server, so instead of big black/white screen instead of the AD, we get 1x1 transparent pixel, which usually perfectly hides ad from the app or the website.
Extra features:
1. You can specify if you want to use dnsmasq (default), or dnrd (option) as a local dns server. Dnsmasq is more flexible, modern, faster and has less memory footprint, however I also left dnrd as an option, because it's proven to work stable.
2. You can specify hosts file, which you want to use. In default configuration we use AdAway's hosts file, with more than 30 thousand of records, which results in extra ~2.5 MB memory usage. You have also an option to use MOAB (Mother Of Ad Blocking) hosts file, with more than 330 thousand of records, which will result in about ~30 MB memory usage. Eventually you can append your own rules or use non-standard hosts file, available in /system/archidroid/etc/hosts. Pro tip: You can point AdAway to use this hosts file (/system/archidroid/etc/hosts_adaway), which will result in automatic updates. /system/archidroid/etc/hosts is a symbolic link, either to hosts_away or hosts_moab, if you want to specify your own hosts, you can delete symbolic link and write your own rules.
3. Original /system/etc/hosts file has been locked from editing. This is to ensure that AdAway or other adblockers won't use obsolete and slow method of blocking ads through hosts. The whole point of implementing Adblock in ArchiDroid is to provide you with super-fast, flexible and effective way of blocking ads, also with getting rid of black/white ad screen. In 99% situations you don't want to touch ArchiDroid's default behaviour, as it blocks ads perfectly. Eventually, if you have a very good reason, you can unlock original hosts file through ArchiDroid's Backend Control and modify them, however keep in mind that every additional rule WILL slow down your network speed.
4. In default configuration local dns server uses two OpenDNS servers at port 5353, two Google DNS servers at port 53 and up to two local DNS servers provided by your Wi-Fi/3G connection, which overall gives a sum of 6 remote dns servers. In some rare scenarios (f.e. some wi-fi hotspots) you can notice that a moron, administrator of this wi-fi, blocked all dns queries and forces you to use his DNSes. This is BAD because of freedom and so on, but it's very common practice, that's why I turned on local DNSes as well. If you want to improve your privacy at least a bit, you can disable local DNS servers and then use only OpenDNS and Google DNS.
5. Above option initialy has been written to allow you one-time access to such non-trusty wi-fi's. But if you for any reason need automatic update of your local DNSes (3G and Wi-Fi's will use different local DNSes), you can also turn on Local DNSes Daemon, which will automatically query and update local DNSes if needed. This is also turned on in addition to local dnses above, of course in default preset.
ArchiDroid's Forced Update (RunOnce)
Forced update selected during mode selection in aroma tells RunOnce to work in "INSTALL" mode even on "UPDATE" mode, apart from that it works exactly the same as update mode, only RunOnce is affected.
Last one.
Download links now available.
Please note that it's the first release of ArchiDroid 2.X for Xperia M so it's pretty much a beta release. However I couldn't find any major issues so you don't need to worry about bugs.
Xperia M-specific informations:
1. Kernel is compiled from FreeXperia sources, with small additions to make it work with ArchiDroid Optimizations. Including being compiled with GCC 4.8.
2. I decided that TWRP is at the moment the most stable and feature-rich recovery for nicki, so ArchiDroid kernel natively comes with TWRP recovery.
3. You can flash this ROM using any custom recovery available at the moment, including TWRP, CWM and PhilZ. Just keep in mind that ROM will overwrite kernel (and your recovery) after installation. I strongly suggest to stay with ArchiDroid kernel as it has pretty neat optimizations (linked above) but it's your choice.
Missing reserved posts, including credits will be added ASAP.
Have fun, please give feedback . If you appreciate my work, you can always buy me a beer!
What about sd support?
Sent from my Xperia M using XDA Premium 4 mobile app
theviper said:
What about sd support?
Sent from my Xperia M using XDA Premium 4 mobile app
Click to expand...
Click to collapse
ArchiDroid is very strongly based on CyanogenMod 11, so everything what works for CM most likely will also work for AD.
Will try
Anyways features are bit complicated for me
Hehe
Sent from my Xperia M using XDA Premium 4 mobile app
theviper said:
Will try
Anyways features are bit complicated for me
Hehe
Sent from my Xperia M using XDA Premium 4 mobile app
Click to expand...
Click to collapse
This is not a toy, ArchiDroid has even his own Debian OS inside . However thanks to my AROMA installer flashing and using AD can be ultimately easy or ultimately advanced, everything depends on you.
JustArchi said:
This is not a toy, ArchiDroid has even his own Debian OS inside . However thanks to my AROMA installer flashing and using AD can be ultimately easy or ultimately advanced, everything depends on you.
Click to expand...
Click to collapse
Thats awsm man
Downloading now
Will report soon
Sent from my Xperia M using XDA Premium 4 mobile app
Hello rom is totally awsm but can u tell me how to disable those status bar thinga
Sent from my Xperia M using XDA Premium 4 mobile app
theviper said:
Hello rom is totally awsm but can u tell me how to disable those status bar thinga
Sent from my Xperia M using XDA Premium 4 mobile app
Click to expand...
Click to collapse
Reading Q&A may help .
Are you going to update this rom with new cm fxp builds?
Awwww yeah @JustArchi in the house. Great to see you here man, goodluck with this !
On topic, will be waiting patiently to try this as I am currently busy with something else.
Really awesome rom mean :good: :fingers-crossed:
Barua said:
Are you going to update this rom with new cm fxp builds?
Click to expand...
Click to collapse
I'm using their sources so you can expect updates from time to time. However Xperia M is not my daily device.
Really awesome rom @JustArchi I flashed it yesterday night and untill now just the fastest rom I ever used, also the 160dpi is cool en look great really thanks for this masterpiece, I'm never leave Archidroid
EDIT: I see you have not included frandrom are u thinking to implement that in the next release ?
Sent from my C1905 using XDA Free mobile app
android-turk said:
Really awesome rom @JustArchi I flashed it yesterday night and untill now just the fastest rom I ever used, also the 160dpi is cool en look great really thanks for this masterpiece, I'm never leave Archidroid
EDIT: I see you have not included frandrom are u thinking to implement that in the next release ?
Sent from my C1905 using XDA Free mobile app
Click to expand...
Click to collapse
Fairly easy but I don't want to touch the kernel too much. Right now it includes only two little fixes for GCC 4.8.
Also, yeah, this is potentially the fastest and most optimized ROM for Xperia M at the moment, thanks to my optimizations and GCC 4.8.
hey
this will work on xperia M Dual with both sim card slot ????

Categories

Resources