I'm new to Android and have a few question that didn't get answered by trying to Google it. I have bought my first Android phone (A Samsung Galaxy S2, after years of being a Symbian fanboy), but have not received it yet.
1. Does everything run on top of Dalvik JVM? At the bottom is the Linux kernel. Then there is a Linux process which runs Dalvik VM. Could for instance Sun's JVM run on a Linux process of its own or another Linux application?
2. Can C/C++ Linux program run on Android? Though compiled for ARM. Android has NDK (Native Development Kit) which allows it to run C/C++ applications inside Android applications, but I'm wondering about running C/C++ applications directly on Android. BusyBox is coded in C, but runs on Android. Is it running directly on the kernel's linux process or within an Android application on Dalvik?
3. The latter(Q2) would indicate that not everything run on top of Dalvik. Otherwise C/C++ programs would not run.
4. Android uses ADB (Android Debug Bridge) for its CLI magic. BusyBox uses Ash. Can one install bash as the default shell, with full GNU Core Utilities commands? Some forum posts indicate that it is possible to install an ARM re-compiled bash version.
5. Android can be rooted by installing applications like Super User or BusyBox that would let the user execute applications as root. That would indicate that there exist a root user, in addition to the actual user. Is this similar to how it is on Linux? Can I define a password for the root user so that no applications can run root directly?
Edit: Seems each application is a different user on the system.
6. Are all user data stored in the database SQLite that are stored on the phone? User data is accessible through different applications, but how does Android determine access rights to it?
7. I have read that Android applications run on their own Linux process and are assigned a unique user ID. Does this mean that we can run ps to see all running processes or does it act like the Sun JVM just showing each VM process? However looks like different applications can run in the same process. Can these be distinguished or do we just the the once process.
8, Is the camera application (that some have made modifications of) a Google app or Samsung app? Just wondering since the former would allow such modified versions to run on other than Samsung phones, but given that different phones have different camera specs I don't see how this could go well.
9. Can the codes typed in the dialer be executed through a shell instead (adb)?
10. Can I get an overview of permissions given to applications? Can they be revoked after once granted?
i have question,too.thanks
Ill Be back with most of your answers. Im on my phone. Ill be at a comp in few.
Sent from my Incredible using Tapatalk
I'm also wondering about how the methods of rooting works.
Some offers rooting by means of a modified kernel.
Another method entails using programs like SuperOneClick or GingerBreak.
Can anyone describe to me what exactly does these methods do?
In order to have root I guess the user root needs to be created/activated/enabled on the phone. Also programs like su and Superuser needs to be installed, perhaps with Busybox.
Those are the methods for root, but I want to know what needs to be done on the phone in order to root it.
Can I root my device (Samsung Galaxy S2) manually without any modified kernels or special programs?
DJViking said:
10. Can I get an overview of permissions given to applications? Can they be revoked after once granted?
Click to expand...
Click to collapse
You can see the permissions an app has through Settings->Apps->Manage Apps i think. There are also apps on the market summarising that.
Revoking or granting only certain permissions is not available natively.
I believe they are working on that in cyanogenmod.
Revoking a needed permission will usually make the app in question crash.
DJViking said:
8, Is the camera application (that some have made modifications of) a Google app or Samsung app? Just wondering since the former would allow such modified versions to run on other than Samsung phones, but given that different phones have different camera specs I don't see how this could go well.
Click to expand...
Click to collapse
If you have a samsung device, the camera app will be from samsung.
It is not impossible to have the google camera app running on your device, it might need some tinkering though (see cyanogenmod).
DJViking said:
7. I have read that Android applications run on their own Linux process and are assigned a unique user ID. Does this mean that we can run ps to see all running processes or does it act like the Sun JVM just showing each VM process? However looks like different applications can run in the same process. Can these be distinguished or do we just the the once process.
Click to expand...
Click to collapse
Yes you can, here is the about from running "ps" on my i9000 : http://pastie.org/2089555
Only apps from the same developer ( meaning signed with the same signature), can be run in the same process. This is not default and only happens when the developer requests it. This is not very common.
DJViking said:
6. Are all user data stored in the database SQLite that are stored on the phone? User data is accessible through different applications, but how does Android determine access rights to it?
Click to expand...
Click to collapse
Through the android permission system.
PHP:
<uses-permission android:name="android.permission.READ_SMS"></uses-permission>
<uses-permission android:name="android.permission.WRITE_SMS"></uses-permission>
will be needed to read and write from/to the sms database.
I hate to sound like a noob but this is really bothering me, what the hell does BusyBox do? What's the point of it? Someone please explain this to me.
Thanks
Ervin
ErvMeister said:
I hate to sound like a noob but this is really bothering me, what the hell does BusyBox do? What's the point of it? Someone please explain this to me.
Thanks
Ervin
Click to expand...
Click to collapse
Where'd you get the busybox installer from?
From:
http://www.busybox.net/about.html
BusyBox: The Swiss Army Knife of Embedded Linux
BusyBox combines tiny versions of many common UNIX utilities into a single small executable. It provides replacements for most of the utilities you usually find in GNU fileutils, shellutils, etc. The utilities in BusyBox generally have fewer options than their full-featured GNU cousins; however, the options that are included provide the expected functionality and behave very much like their GNU counterparts. BusyBox provides a fairly complete environment for any small or embedded system.
BusyBox has been written with size-optimization and limited resources in mind. It is also extremely modular so you can easily include or exclude commands (or features) at compile time. This makes it easy to customize your embedded systems. To create a working system, just add some device nodes in /dev, a few configuration files in /etc, and a Linux kernel.
Click to expand...
Click to collapse
Basically, if you use wanna use the shell (using Terminal Emulator or SSH) busybox will be very useful to you.
I got it from the market, i don't use the Terminal Emulator but what is SSH? I frequently use 4shared.com and share files between my phone and my Mac. I am planning to install the ICBITNB ROM tonight. I think i'm going to uninstall BusyBox. Don't feel as it i need it.
Thanks for everything
You need busybox. I consider it part of root. It's not like it is in your way. You should keep it because programs like titanium backup need it.
Sent from my SGH-T959V using XDA Premium App
Well i have Better App Manager, i do have titanium backup as a backup to better app manager. Thanks for the advice Jager555. I'll keep it.
https://market.android.com/details?id=com.galoula.LinuxInstall
New every thing. Redesign of everything every where, rewite of all English parts, many bug fixes.
What for ? install Debian using debootstrap in chroot, and use your Android device like if you had installed Linux on a standard computer.
Bugs shall be reported to [email protected] .
Misc questions about how to use and feature request and general discussions to [email protected]
Market description:
This application will allow you to install a complete Debian distribution in your Android device. Based on chroot, it will perform a standard debootstrap and install a legacy Debian so that you can install, and run any classic Linux command, tool, daemon or service.
The package has few limitations; it is not restricted to Debian; we already offer the choice to use Ubuntu, and will add more distributions in close future. Each distribution is available in several tastes (stable, testing ...). It will not require to reboot; chroot is run inside Android. Installation can be done on any storage device, either on SD card, or inernal memory; no need to repartition any thing, run mkfs or fdisk. We do with what you let use. If you have almost nothing, the package will manage with almost nothing; if you can afford for a large ext4 partition on your SD card, the package will be happy to use it.
It will allow you to install all classic LAMP services like Apache, MySql, PHP, Samba, Netatalk, or just any classic Linux tool like vim, xterm, aterm, Abiword, Firefox, dillo, wget, cron, Perl, Python ... just everything.
Package utilisation will require a rooted device.
Reasons to install this package can not be listed. Just too many: want a cron daemon ? want to have gcc inside your phone ? want to recompile some kernel driver because the legacy Android driver for your Wi-Fi card has is bogus or limited ? want to use vim, or the real full featured desktop ls, ip, nmap, or top commands ? this package will give you all this for free, and much much more.
Requierments:
- an Android device based on some Linux kernel
- a rooted environment
- 300M free space
That's all.
Optionnal registration on our website, http://android.galoula.com/LinuxInstall/Register.php , will allow you to use advanced management features, and install package from within the application interface. You will not need to type any strange command in any terminal. And you will be able to make some services start automaticly at phone boot, and/or application start.
Online documentation: http://android.galoula.com/en/LinuxInstall/
Quick installation guide: http://android.galoula.com/en/LinuxInstall/QuickTutorial.html
Click to expand...
Click to collapse
Free space must be on sd-card or phone memory?
Both accepted You choose where to install.
500M by default on SD card using loop method (on ext2 or fat). Down to 180M using the directory method (does not work on FAT).
thanks for this man.
Sorry if this is a noob question but will this in any way brick/soft brick my device?
Sent from my GT540RR using XDA App
Yes, it can.
But this app is underdevelopment since almost two years, and nobody ever bricked yet. I have written a very long complete tutorial, where I say what you should NOT do. I could easily tell you how to brick in 5 steps.
But we have been working very hard on default settings, to make default settings as much safe as possible.
There are many bugs, many known bugs; but 99.999% bugs will just make the chroot not work. Data loss is very rare. Data loss was highly probable in previous version 3.2 . But default settings are now safer. And if you do not do what we claim to be dangerous ... you are safe.
The most frequent case with 3.2 was complete wipe of /sdcard and /data . This have been fixed.
We never ran into wipe of /system until now. Never bricked.
And since Galoula and me are working on it, we are the most exposed ones. We test every single feature, in all possible situations. And when we find a wipe case, we repro it dozen time until we understand why, and how to fix, so that it won't happen to YOU.
3.3 is way safer than 3.2. And nobody reported wipe on 3.2 ...
But if you blindely clik any where, yes it can. And if I tell you where to click, you can brick in 5 steps for sure And it won't be a soft brick. I promise a good real brick where even HTC will be in trouble to repair it It's explained in the tutorial.
Wow. Thanks for the reply. At least i have an idea now. Is the tut on the app itself? I'll nake sure to read it very carefully coz i wanna learn all about this stuff
Sent from my GT540RR using XDA App
A not so short tuto is inside; but since most mobile devices have only one screen, you may want to read the online tuto on your computer: http://android.galoula.com/en/LinuxInstall/
Default settings are safe. Just follow the guide.
Will go ahead and read this tut. I'll make sure to give feedback. Thanks for paying attention to this noob
Sent from my GT540RR using XDA App
this is just great, are there any videos or screen shots?
edit: nevermind i just checked the market
Feel free to send us screen shots; I am not good at doing that (i can to shots, but I don't know what could be nice to upload).
We would apreciate shots of working (of course ) VNC clients connected to server running localy, or local consoles (like Connectbot) doing funny things.
Send to support. Thanks.
Spent the whole weekend on this...
I'm trying o get an X- GUI on the Samsung Captivate, (hope i said that right) like Ubuntu so i can VNC to a linux desktop environment. I'm on FASTY and wondering why I keep running into refusal of connection. I have the password and localhost as well as the port correct. I've lost sleep on making this work. Can anyone help...?
You question is somehow off topic.
You seem to have a basic VNC connexion issue.
Could not help without deeper description. And I rarely use VNC, i have very low experience.
First point: do you have free space in the distro ? depending on installation method, and what you installed, you may have run out of disk space (especially Ubuntu, uses lot more than Legacy Debian).
The distribution manager is still beta AOT. It may report the VNC service to be up and running, when it could not rally run. First thing to check is: is it up ?
- from local machine, to ps, and check if process is up
- from remote machine, just scan your IP for the device. VNC should be port 5800 or 5900, forgot which one.
Your VNC password is *NOT* your distribution password. VNC password need to be set at a different place (this is VNC specific; VNC is not UNIX, and never claimed to be fully a *UNIX "merged" service*).
Never used VNC in LinuxInstaller. Never yet. Not enough time to test it. We take report, and will test only major and frequent issues. We have many "easy success" reports, so, we don't worry about it. We have much more issues about rooting (getting root on phone), and starting debootstrap; this is what we focus on.
Make sure you have enough free space (at least 50M free left), then join any Debian or Ubuntu forum. They will ask you if you have a CLI; you shall use either adb shell, or connectbot. Fact you are in a chroot is not an issue, chrooting is not frequent for debian users, chrooting is the normal procedure to install Gentoo; and all debootstrap users use chroot daily; forums should not reject you for this reason. As long as you have a CLI.
Good luck.
Lost me fast...
Sorry..but you lost me, and FAST! I really don't have the terminology down...but I do have the Linux 3.3 Installer running properly...it indicates so. I was assuming that this would allow me to somehow load Ubuntu on my Captivate..as I've seen on some screen shots...I guess I'm just lost...a little knowledge is dangerous...I have a little. Just enough to accomplish the basics..but the vernacular is LOST to me. Guess I'll have to wait for the Ubuntu apk...thanks for trying...
I've got this errors...(see attached files).
I have busybox 1.19, connectbot and the superuser (v2.3.6.3 and su binary v2.3.2, the latest from the maket)...
What can I do?
you guys are still lucky.your able to make it work...
im running the ongoing cm7 2.3.5 on moto defy...
kernel is not supporting this yet.
hailmary what's missing in your kernel ? I don't know any Android that won't have ext2 in; if you have an Android without any ext2 filesystem, please contact me in private, I know it could be done, and I would be VERY CURIOUS to see how HTC did it.
If you are missing loop support in kernel, try block or directory method. Blocck will require ext2; directory won't (but will work only over ext FS ... so ... unless you can use NFS )
dugryce , ScumpinatoS, I will come back later (maybe today, maybe not).
ScumpinatoS said:
I've got this errors...(see attached files).
I have busybox 1.19, connectbot and the superuser (v2.3.6.3 and su binary v2.3.2, the latest from the maket)...
What can I do?
Click to expand...
Click to collapse
Reading the first message, you as, as said, a CPU issue. What's your CPU ? device model ?
run in some console:
uname -a
which tail
Application could not load viable environment to work; it is an issue, but it can be fixed. I can help digging, but I won't give you any solution. Send an email to Galoula; the bug report system via the console should work for you.
doublehp said:
Reading the first message, you as, as said, a CPU issue. What's your CPU ? device model ?
run in some console:
uname -a
which tail
Application could not load viable environment to work; it is an issue, but it can be fixed. I can help digging, but I won't give you any solution. Send an email to Galoula; the bug report system via the console should work for you.
Click to expand...
Click to collapse
I have a Huawei Ideos CPU: MSM7225 without GPU.
I am use it and try install Ubuntu Natty but after download all deb package i get error installation, "issue binary, try other version"
Can someone help me what distro (Ubuntu/Debian) and what version of it that have installed succesfully.. please...
Sent from my GT-S5570 using XDA App
by default android seems to royally suck at it. i'm hoping for a way to force android to give all available resources to the active app? to me it seems like common sense but it seems that everything is ran on an average priority which means whatever i'm doing is battling it out with random other things in the background whereas the active app (the one i'm using) is more important than anything else android is doing.
It was one of the root-required task managers on the market... It allowed you to increase some number that might have been priority-related, but that's all I remember. Hopefully those hints will give you something to look for.
Sent from my Wildfire S
Just use zeppelinrox's V6-turbocharger and the "bulletproof" tweaks, you'll have to do it manually for each app you want to stick around, but it works like a charm. And it's free, unlike the Market apps...
hmm, any idea for the market app?
Searched around the bulletprof, but its a little difficult
Why not use "htop"?
With a rooted phone & terminal emulator & hackers keyboard this is not a problem
The only difficulty is to find the right process - they are all named app_(?) (or similar).
But if the process really needs the whole system resources you could easily identify it!
Yup, all it takes is :
-a rooted phone (you need it to modify the system settings)
- a terminal emulator [any one will do. I use Better Terminal Emulator but it's the Rolls Royce of terminals, because I spend quite a lot of time scripting with the BASH shell, so a good terminal is mandatory for comfort of use ]
- a little knowledge of shell (all you need to know is how to open the terminal, the "su" command to switch to superuser mode, "top" to see which are the running processes, "echo" to send the value into the required variable, and "kill" to kill a running process if need be), not really rocket science...
Now if you insist on using an app (that's probably not free), be my guest..
But don't ask me which one to use, because I ain't got a friggin' clue about that..
A Chairde
I am wondering if anyone can help me. I have heard there are Rooting methods on Android devices not involving third party software on the device, could you tell me what they are, and what phones support them. I have read the XDA Developers book, and the closest I have come is the Google Nexus phone on Chapter 8, Unlockable device, but still needs to load Busybox APK, and SuperUser binaries.
This question revolves around sound forensic techniques, I believe XRY load tools into RAM when using physical extraction.
Any help / pointers would be greatly appreciated
crumdub12 said:
A Chairde
I am wondering if anyone can help me. I have heard there are Rooting methods on Android devices not involving third party software on the device, could you tell me what they are, and what phones support them. I have read the XDA Developers book, and the closest I have come is the Google Nexus phone on Chapter 8, Unlockable device, but still needs to load Busybox APK, and SuperUser binaries.
This question revolves around sound forensic techniques, I believe XRY load tools into RAM when using physical extraction.
Any help / pointers would be greatly appreciated
Click to expand...
Click to collapse
By default, Android doesn't have the ability to substitute the current user for the root user, which is why the 'su' binary has to be installed. By adding a particular line to '/data/local.prop', you can trick the ADB into thinking it's communicating with an emulator, which would temporarily give the ADB elevated permissions, but most of the techniques needed to do so require other binaries that Android doesn't have by default, hence the need for Busybox.
XRY physical extraction, on the other hand, doesn't communicate with Android at all, so there are no "root" permissions to be gained. It relies more on very low level communication with the hardware itself and extracting raw data (i.e. ones and zeros). Highly specialized software would then be needed to translate that data into a more human readable format.
So, to answer your question...
As far as I'm aware, there is no way to achieve permanent "root" permissions on Android without (at the very minimum) installing the 'su' binary.
soupmagnet said:
By default, Android doesn't have the ability to substitute the current user for the root user, which is why the 'su' binary has to be installed. By adding a particular line to '/data/local.prop', you can trick the ADB into thinking it's communicating with an emulator, which would temporarily give the ADB elevated permissions, but most of the techniques needed to do so require other binaries that Android doesn't have by default, hence the need for Busybox.
XRY physical extraction, on the other hand, doesn't communicate with Android at all, so there are no "root" permissions to be gained. It relies more on very low level communication with the hardware itself and extracting raw data (i.e. ones and zeros). Highly specialized software would then be needed to translate that data into a more human readable format.
So, to answer your question...
As far as I'm aware, there is no way to achieve permanent "root" permissions on Android without (at the very minimum) installing the 'su' binary.
Click to expand...
Click to collapse
SoupMagnet,
You answered my question fully, you are a legend !!