[How to] Configure Terminal Emulator to use Correct BusyBox & Improve Shell Features
A little info on Android, Terminal Emulator, and Busybox
I'm very new to Android. I just got my first device a few months ago(my A100). I have used linux and other forms of unix off and on for over a decade though so I do have some applicable knowlege.
After writing Flashex I have noticed allot of people with miss configured environment variables for Terminal Emulator. The defaults in Terminal Emulator are NOT configured to use the right Busybox. This can make doing ALLOT of the stuff around here seem allot more complex then it is.
How to improve the way Terminal Emulator works
==============================================
(Note: I'm going under the assumption that Busybox is located in /system/xbin. It should be normaly, though it doesn't matter for this as long as you know the correct location and can put in place of /system/xbin in these directions)
1) Launch Terminal Emulator.
2) Look in the Menu in the upper right hand corver and select "Preferences".
3) Scroll down to the "Shell" section of "Preferences".
4) Select "Command Line" within the "Shell" section of "Preferences" and change it to the following;
/system/xbin/sh -u
Then Select "OK".
5) Select "Initial Command" within the "Shell" section of "Preferences" and change it to the following;
export PATH=/system/xbin:$PATH
Then Select "OK"
6) Now you will probably want to scroll up and change the color of the terminal background and text in the "Text" section of "Preferences".
Congratulations! You should now have a Bourne Shell(sh) with, color coded file types, TAB auto complete, and the correct Busybox version in the Terminal Emulator! YAY!
Why do I keep getting permission denied in TM?
helikido said:
Why do I keep getting permission denied in TM?
Click to expand...
Click to collapse
Is your device rooted? Do you have busybox installed?
helikido said:
Why do I keep getting permission denied in TM?
Click to expand...
Click to collapse
You may be getting the permission denied error if you used This root method because it used a non standard install of Busybox to do the job.
It can be updated from what I understand by just downloading the J Rummy Busybox installer from play.google.com and reinstalling Busybox. Also as asked above if you don't have busybox installed you wont be able to point TE to it.
Hope that resolves the issue
Re: [How to] Configure Terminal Emulator to use Correct BusyBox & Improve Shell Featu
I keep getting the same error with terminal emulator and script manager:
Unable to confirm location of BusyBox, please make sure you have busybox installed
Looked in /system/xbin if you have it installed in another location, you can just edit the path at the top of the script
3|[email protected]:/sdcard $
nice share
Confused!
Hey Guys!
After following the steps you mentioned and saved it and closed Terminal emulator and when trying to reopen it it does not open and it is a pre-installed app in my custom ROM so i went to root explorer and deleted it and while am trying to reinstall it from Play store play store does not download any app !!!!! it opens normally it navigates normally and i can press install and accept to the pop up message but keeps making like it is installing while nothing installed !!!
Device : Motorola XT925
ROM : Beanstalk 1009
Android : 4.3.1
Bootloader : Unlocked
BusyBox : BusyBox X+
Please Please Help Me
---------- Post added at 03:48 PM ---------- Previous post was at 03:40 PM ----------
atteya.mohamed said:
Hey Guys!
After following the steps you mentioned and saved it and closed Terminal emulator and when trying to reopen it it does not open and it is a pre-installed app in my custom ROM so i went to root explorer and deleted it and while am trying to reinstall it from Play store play store does not download any app !!!!! it opens normally it navigates normally and i can press install and accept to the pop up message but keeps making like it is installing while nothing installed !!!
Device : Motorola XT925
ROM : Beanstalk 1009
Android : 4.3.1
Bootloader : Unlocked
BusyBox : BusyBox X+
Please Please Help Me
Click to expand...
Click to collapse
I Tried the following :
1. Reboot.
2. Reinstall google play Version 4.4.21
But problem still exist am really upset guys please help me :S
simply go the app settings and clear data. The exact thing is happening to me as soon as i change the path under shell. crashes and when i try opening says . terminal running and immediately closes
atteya.mohamed said:
Hey Guys!
After following the steps you mentioned and saved it and closed Terminal emulator and when trying to reopen it it does not open and it is a pre-installed app in my custom ROM so i went to root explorer and deleted it and while am trying to reinstall it from Play store play store does not download any app !!!!! it opens normally it navigates normally and i can press install and accept to the pop up message but keeps making like it is installing while nothing installed !!!
Please Please Help Me
---------- Post added at 03:48 PM ---------- Previous post was at 03:40 PM ----------
I Tried the following :
1. Reboot.
2. Reinstall google play Version 4.4.21
But problem still exist am really upset guys please help me :S
Click to expand...
Click to collapse
atteya.mohamed said:
Device : Motorola XT925
ROM : Beanstalk 1009
Android : 4.3.1
Bootloader : Unlocked
BusyBox : BusyBox X+
Click to expand...
Click to collapse
Sorry only A100 support allowed here.
But really, eyelash your rom if anything like that happens. Just flash the rom+gapps first and should fix it otherwise factory reset.
Sent from my SPH-L710 using XDA Premium 4 mobile app
Please rate this thread whether good or bad, I like feedback as this is my first in depth guide I have written. Thanks!
I know there are apps that make it as easy as a download and a button press to install linux on an Android phone, but I had hardly any room on my 8GB SD card, and I wanted to have a safe, reliable, and fast installation (my cards class 4). Also, this creates a lightweight and customisable installation, as all you start off with is the Debian shell, which is a 50MB download.
This guide will take you through downloading the app, to installing Debian in the loop file on your phone, to installing a VNC server and getting a GUI (in this case LXDE) up and running. So, without further ado....
PREREQUISITES
Your phone
Free space on /data/ , I would recommend at least 768MB for this. Unfortunately....
No apps to sd script... I'm not sure on this, prior to setting this up, I installed an a2sd script and my Debian shell would not work. Coincidence? You try it. I don't know.
I would have thought a lightweight ROM would help. This works fine for me, and I'm running Andromadus CM10.1 build 10. I don't know how Sense (which imo is pretty heavy) compares to Android 4.2.1, but I reckon AOSP is a good bet for any version of Android.
Terminal Emulator
Your brain. Of course, don't be afraid to ask questions, I'm sure I'll miss something
The recognition that I take NO RESPONSIBILITY AT ALL for cracked screens, disappearing keyboards, or gravitational collapses of the Vision's awesomeness creating a black hole and / or supernova which obliterates Earth and the Milky Way, although would look spectacular. Please bear in mind that this could genuinely mess up your device pretty bad, although only really badly if you try... yes, you can brick your phone or wipe EVERYTHING. So make a Nandroid. But once again, I'm the one that's laughing.
Click to expand...
Click to collapse
INSTALLING AND SETTING UP THE APP
Download Linux Installer STANDARD from the Play Store, or the ADVANCED version if you wish to contribute to the devs/ although you only need the STANDARD version for this.
I would suggest reading through their own guide first, although be aware this only covers getting a Debian shell up and running. Especially the bit towards the end which tells you how to muck up your device.
Anyway, the bit where you install the shell is here. I'll take you through what I suggest now, though.
Open the app
Menu > Setup
Install in a block device = [TICK]
Use loop file = [TICK]
Preferred distribution = Debian (Ubuntu doesn't work, according to the devs.)
Distribution version = I use Stable, I would've thought any Squeeze variant will do.
CPU architecture = armel by default, Don't change this.
Hostname = This is used for VNC. Default is fine.
Domain name = This is used for VNC. Default is fine.
Chroot point = /data/local/mnt/Linux . DO NOT USE /data/data/ EVER.
Name of chroot launcher script = linuxchroot . This is the command used to start the Debian shell
Server = blank by default. Don't know what this is used for, but is not important to us.
IP Version = IPv4 by default. I don't see any need to change this.
Loop file = /data/local/tmp/Linux.loop . DO NOT USE /data/data/ EVER.
File Size = 768MB . This is what I use, it's enough for VNC server, LXDE, C++ compiler, but not much else. I would not recommend any less.
Maximum loop dev = errrm. I don't know what this does. I've seen people use 32. Default is 8. I've tried both, and can't tell the difference. Stick to 8 to be safe.
Ext version = Default. This is checked automagically
Console refresh latency = Default (10). I don't know what this does.
Choose start panel = Default (Installer). This is just the screen the app starts on. Installer is easier.
Bind Android = [TICK] if needed, [BLANK] for safety. This means you can access your whole phone, that is, all the directories, root, sd card, of your phone, from your Linux installation. Could be useful, but probablyt not worth risking if you won't use it.
Send debug logs = [TICK] Default
Screen always on = [TICK] Default
Use embedded Busybox = [TICK] Default
Allow write to /system = [TICK] I suggest using this, I got problems with this disabled
Allow remount with dev/exec = [TICK] Once again, I'm not sure, I've seen people use it, but it's not essential
Click to expand...
Click to collapse
CREATING AND MOUNTING YOUR LINUX.LOOP, AND INSTALLING DEBIAN INTO IT
I think the original instructions are fine for this. I'll quote them here just in case you can't find them (red text is my input)
click create target loop (takes 2mn to write 500M on class 4 card)
click format target loop (50s)
click mount loop
click install distribution in loop. Installation should take between 15 and 50 mn depending on your Internet connection speed, and phone specifications (Flash and CPU speed). Installation process will temporally disable screen saver so that the phone will stay awake, and Internet connection will not be automatically disabled or put in sleep mode.
click Update launcher script.
You can now connect to your phone using any local console, via ConnectBot or adb shell You won't do this, instead open up Terminal emulator.
type su into the console
type linuxchroot in this console
you are now in a standard GNU/Debian environment, created via debootstrap. Network is already configured; you shall type aptitude update, then you can install any package you want.
Read messages carefully, and read the full tutorial on our website. URL is given in the About pop-up
Well done, you're running Debian shell on your Vision yay!
Click to expand...
Click to collapse
INSTALLING A VNC SERVER, X.ORG AND LXDE
This is the fun bit. We can now get LXDE up and running and access it via VNC (Don't worry, still on the phone... you'll see )
First, install android-vnc-viewer
Open up terminal emulator
Type su to be superuser
Type linuxchroot
This is what got me confused. I couldn't use apt-get, I got all sorts of errors. In order to fix these, WHENEVER YOU WANT TO INSTALL ANYTHING, type the following:
Code:
export PATH=$PATH:/usr/local/sbin:/usr/sbin:/sbin
Now you can install your vnc server:
Code:
apt-get install tightvncserver
and now the X Windows System (this is needed for the GUI)
Code:
apt-get install xorg
and now LXDE.
The minimum set of elements, without recommended apps like file manager (this is lightest, but not particularly useful:
Code:
aptitude install --without-recommends lxde-core
The minimum set of elements (I suggest using this):
Code:
apt-get install lxde-core
A complete set of elements:
Code:
apt-get install lxde
A complete Debian LXDE desktop environment (Don't use this, it'll be heavy and you'll use up all your space (unless you had much more than 768MB))
Code:
apt-get install task-lxde-desktop
Unfortunately, you cannot use the LXDE desktop just yet. We need to set up the VNC server.
Code:
vncserver
This will start up an X-Windows session and create a vnc startup file. Type in your password (if you're a n00b, be aware that you won't be able to see stars or anything). You don't need the second password it asks for.
Now kill the VNC session:
Code:
vncserver -kill :1
Now we need to set up the VNC startup file:
Code:
cd /root/.vnc/
nano xstartup
Use the trackpad to navigate, type as normal.
Comment out etc/X11/xsession :
Code:
#etc/X11/xsession
At the bottom, add the lines to start up LXDE:
Code:
startlxde &
lxsession
Now save the file: Hold down vol-down, then y, then o .
Exit nano: Hold down vol-down, then y, then x .
Now we need to edit the .bashrc file:
Code:
cd /root
nano .bashrc
After all the comments, add the following lines:
Code:
export USER=root
cd /
rm -r -f tmp
mkdir tmp
cd /
vncserver -geometry 800x480
If you know how to use VNC on a tablet, just change vncserver -geometry to that resolution:
Code:
vncserver -geometry heightxwidth
Now save the file: Hold down vol-down, then y, then o .
Exit nano: Hold down vol-down, then y, then x .
Type exit to exit the Debian Shell. Close terminal emulator, and reboot.
Click to expand...
Click to collapse
RUNNING OUR NEWLY INSTALLED LXDE GUI
Now we've rebooted, open terminal emulator and run the Debian shell as normal (linuxchroot).
This time, you'll see some text about the X server running. If not, something's gone wrong.
Leave terminal emulator running, and go and open android-vnc-server from your app drawer.
Set up the app as follows:
Nickname = whateveryouwant
Remeber the password you entered before, when we were running the shell? No? D'oh!
Address = localhost
Port = 5901
Click connect... yay ! You should have LXDE up and running, if not, go over this guide, and if you think you've done everything, either hate on me or send me a useful PM outlining your problem.
Click to expand...
Click to collapse
SETTING UP TERMINAL EMULATOR
I've written a really quick script which asks you whether yo want to start linuxchroot upon opening Terminal Emulator. It's really small and quick, I've attached the actual script, here's how you set it up:
Download the attached "startup.txt" script, and put it on the root of your SD card ( /sdcard/startup )
Rename it to "startup" (without the quotes, and no extension, basically just get rid of the ".txt" bit on the end)
Open Terminal Emulator, and type the following:
Code:
su
mount -o rw,remount /system
cp /sdcard/startup /system/xbin/
chmod 700 /system/xbin/startup
chown root.root /system/xbin/startup
Now open Terminal Emulator preferences, scroll down to "Initial command" and set it as follows:
Code:
su
startup
Restart Terminal Emulator
You should be greeted with "Start linuxchroot?" and some options, Yes or No
Type 1 to say yes, this executes linuxchroot, starting the Debian shell
Type 2 to say no, this exits the script and does not mount Debian, allowing you to use Terminal Emulator as normal
I like this arrangement, as it means I don't have to type "linuxchroot" to start it every time or to auto start it and have to exit when I don't want to use it. It's especially quick if you use SuperSU, I find this generally faster than ChainsDD's "normal" Superuser, so su is executed instantly and you can quickly type "1" or "2" and you're off!
Click to expand...
Click to collapse
OTHER IDEAS
compile C++ programs:
Code:
export PATH=$PATH:/usr/local/sbin:/usr/sbin:/sbin
apt-get install g++
Write your program, save as program.cc
Code:
g++ -o program program.cc
./program
Click to expand...
Click to collapse
Thanks for reading, I hope this helped !
Very nice. I will be trying this later.
About how much memory is being used (with and without LXDE session started)?
Thanks for your efforts.
pepar0 said:
Very nice. I will be trying this later.
About how much memory is being used (with and without LXDE session started)?
Thanks for your efforts.
Click to expand...
Click to collapse
Hi, sorry for the late reply.
TBH I don't think much memory is used at all really, to put it into perspective I've still got 140MB of RAM free whilst running this.
I haven't actually tested memory usage, but I expect you'd need over 100MB free RAM if you're planning on running LXDE. I have tried this in various situations however, and I would not recommend running zeppelinrox's V6 SUpercharger, or any other memory management script. This is because they meddle with VM heap sizes and minfrees and other RAM stuff, and ideally you should use the default 128MMB VM Heap size. This means you can use up a whole 128MB of RAM just for Linux (I don't know how processes are spread though, so you may be using more).
If you're running Sense, I'd be interested to know which version and how well this runs. If your using AOSP (CyanogenMod, AOKP, anything like that) you should be fine, as this works perfectly on Andromadus CM10.1 build 11, which is JB4.2, and presumably the heaviest version of Android.
Hope this helps, and I'd encourage you to try this, it's really cool once it's set up, even if it's not particularly useful to you
It's stuck for me right after I create the loop file. It asks me to tap the "format loop target" button but it's nowhere to be found. I'm only presented with the create target loop one.
crestofawave said:
It's stuck for me right after I create the loop file. It asks me to tap the "format loop target" button but it's nowhere to be found. I'm only presented with the create target loop one.
Click to expand...
Click to collapse
That sounds odd. Not to sound patronising, but this is all I can think of:
Have you got enough space on /data ?
Did you enable write to /system ?
Perhaps there was a Superuser error?
Have you left it long enough to finish? If it says "please wait" at the top, it's still doing it's thing. I expect this is the most likely cause, as the app doesn't make it very clear when it's finished an operation.
D'you mind sending a screenshot before and after creating the loop file, if the problem persists? Thanks, hope you sort it out
Maybe we should use Lubuntu? It takes 100-120mb at startup and it have pretty good configured LXDE and other *candy's* for touch installable.
And how about E17? it's more lightweight than LXDE. Look to Bodhi Linux *maybe we should use ARM vertion?*. It based on ububntu and It have a touch vertion too.
sergeikaspd said:
Maybe we should use Lubuntu? It takes 100-120mb at startup and it have pretty good configured LXDE and other *candy's* for touch installable.
And how about E17? it's more lightweight than LXDE. Look to Bodhi Linux *maybe we should use ARM vertion?*. It based on ububntu and It have a touch vertion too.
Click to expand...
Click to collapse
I do not know of any apps that allow you to install Lubuntu, although if you knew how you could get the IMG and do it yourself. I wrote this guide because it allows you to start from the ground up, with a simple Debian shell to installing whatever GUI and apps you want, or no GUI at all and just some terminal apps (if you can call them that).
Tat means you could install Gnome if you were so inclined, or any other window manager, desktop suite or anything, really. If you had room you could get the Android SDK. Just cause I used LXDE in my example doesn't mean you have to. Just install E17 or whatever you want and in the vnc startup file just tell it to run that instead of LXDE.
Hi!
I'm trying to install Debian Squeeze using your guide but with "linux.loop" file being on the SD-Card (I have like 100 MB free space on /data). When I clicked "Mount loop", Linux Installer after a few seconds just crashed. Then I turned it on again - I was able to start the installation anyway and now I'm installing it.
Was that crash something that could make Debian not working?
EDIT: Skip to the bottom EDIT for the short version..
Preamble: I searched for a fix to this recently and over the past 10 months and haven't seen any real solutions to this. Most people have probably experienced this issue at some time flashing roms, especially those people running gapps-free Android :highfive: such as myself. A band-aid for fixing this is running gapps' SetupWizard and/or CM's CMAccounts, I started adding CMAccounts.apk to /system/app some months ago to fix this. I was never satisfied with this workaround though since it doesn't narrow down the actual problem, and I really like sticking to the AOSP experience, open-source, no Stasi-esque permissions, and without the need to taint my installation just to set it up (setupwizard does a lot more than you might think).
Using some additional skills I didn't have 6 months ago, I finally isolated the issue to the SQL database /data/data/com.android.providers.settings/databases/settings.db, table global, value name device_provisioned. It is set to "0" by default which leads to all these ridiculous problems, and setting it to "1" + a reboot fixes all of these problems for me. Setting it back to "0" + reboot breaks everything again, back to "1" fixes, provision.apk present or removed.. I searched for (sqlite3 dump | grep) lots of other provision and setup value differences... tested this a lot.
!!!BACKUP /data/data/com.android.providers.settings/databases/settings.db before attempting this. Use 'busybox cp -p /data/data/com.android.providers.settings/databases/settings.db Your_Backup_Location' to copy and keep correct permissions on it. I would do a nandroid backup maybe anyway. This should be harmless or very helpful, but it's a su'd command in depths of /data so ya never know.
A couple simple ways to get this set right since you can't reliably grep'n'sed here: Get a nice free sql-frontend app off fdroid or xda -very handy- and go to the settings.db file, 'global' table, and then find or add "device_provisioned" in the name column and "1" in the value column. Root Explorer has this built in I think. The better way though is to pull up the 'adb shell' terminal remotely or use a terminal emulator from the phone with free && adfree Jack Palevich's Terminal Emulator, Spartacus Rex' Terminal IDE (recommended ...for everything!), anything using a jni_exec java execute emulation command. Also Ghisler's Total commander file manager has a built-in command line for convenient executions (or cool shell-script shortcuts you can make --it was actually the first tasker).
# Enter each command line by line (after '>'):
Code:
>su
>$(which sqlite3) /data/data/com.android.providers.settings/databases/settings.db
>update global set value="1" where name="device_provisioned";
>.quit
>exit 0
# One-liner
Code:
su && $(which sqlite3) /data/data/com.android.providers.settings/databases/settings.db 'update global set value="1" where name="device_provisioned";'; exit 0
Then just reboot, enjoy that home softkey that takes you to your launcher home.. your notification bar that displays your notifications. lol such basic s***.
Hope this can help someone else out as much as it did me. You don't have to use gapps/setupwizard to fix it! I also want to make sure there isn't another rogue SQL.db value. (btw if you happen to read this and have a broken back softkey/button, your problem is likely the lib file /system/lib/jni_latinime.so. Thought I'd throw that out there.)
EDIT: Heres an update short version. I added another sqlite value that needs correcting in ROMs without gapps setup bla installed. Run these commands in terminal emulator or via adb. Just copy and paste, they need to be exact.
Check that the values on the right are "1" when you fire off:
Code:
su -c '"$(whence -p sqlite3)" /data/data/com.android.providers.settings/databases/settings.db '\''select * from global where name="device_provisioned"; select * from secure where name="user_setup_complete";'\'
Otherwise or just to be safe, fire off this wicked one liner(Warning: reboots when finished):
Code:
su -c '"$(whence -p sqlite3)" /data/data/com.android.providers.settings/databases/settings.db '\''update global set value="1" where name="device_provisioned"; update secure set value="1" where name="user_setup_complete";'\'' && sync && fsync /data; sleep 3; svc power reboot'
Done, 1-2 steps.
Great write up and worked perfectly. Any more tips tricks advice or links for non-gapps users?
namtombout said:
Great write up and worked perfectly. Any more tips tricks advice or links for non-gapps users?
Click to expand...
Click to collapse
Yeah man, glad it worked. Cheers to your cojones for trying it!
What I usually do for a no gapp solution is:
-grab the libjni_latinime lib from microgapps cause its needed for the aosp keyboard swipe usually
-use "gapps browser" for Google related stuff like gmaps.
-or use rmaps (this and gapps browser need the maps api, so you gotta pull the google maps framework jar or use the "no-gapps project" hack api /system/framework/*google*jar. Make sure to add the corresponding /etc/permissions/*google*xml files too)
-instead of gmail I use the standard email client of k9
-instead of play I use fdroid, aptoide sometimes, nextwap.net, or mobilism forums, or a lucky patcher cracked Google play. (careful with the non-fdroid ones)
Sorry bout this 6 month late reply, Jesus I gotta watch my posts more closely.
For anyone suffering from huge battery drain since latest Google Play update (a few weeks ago) caused by System Update Service, here is a fix that worked for me.
NOTE: all credit goes to effgee at OnePlus One forums (I can't post links yet, so you'll have to google it)
This fix REQUIRES root
1. Install Script Manager (SManager) from Play Store
2. Enter Advanced > Configuration and enable Browse as Root
3. From SManager, create a New Script in /data/local/ called startsysupservice
4. Tap the script you just created and tap Edit, the Arguments field should be blank
5. If it tells you do not have access permission over this file, tap Create copy
6. Below the line #!/system/bin/sh add the following line:
su -c "pm enable com.google.android.gms/.update.SystemUpdateService"
7. Save the script (top right corner) and mark the following options: Su, Boot, Bg
8. Hit Save
9. Run the script make sure it runs correctly.
After creating this script, can Script Manager be uninstalled and will the script continue to run on its own? Or does Script Manager needs to be installed permanently in order to start at boot and then run the script at boot?
My carrier is ATT and I am rooted. If this is possible than please let me know.
It is possible I will be making a guide on how to do it.
add line "net.tethering.noprovisioning=true" in build.prop in /system then reboot (I used root explorer)
then use terminal and type "settings put global tether_dun_required 0" then click enter on your keyboard. Reboot
don't type the " marks
I dont know if it works for ATT. This is the info I found doing a search. It works for sprint.
martinez5241 said:
add line "net.tethering.noprovisioning=true" in build.prop in /system then reboot (I used root explorer)
then use terminal and type "settings put global tether_dun_required 0" then click enter on your keyboard. Reboot
don't type the " marks
I dont know if it works for ATT. This is the info I found doing a search. It works for sprint.
Click to expand...
Click to collapse
Thanks. I will try this once I root Oreo. I am glad to finally find something working with Sprint.
martinez5241 said:
add line "net.tethering.noprovisioning=true" in build.prop in /system then reboot (I used root explorer)
then use terminal and type "settings put global tether_dun_required 0" then click enter on your keyboard. Reboot
don't type the " marks
I dont know if it works for ATT. This is the info I found doing a search. It works for sprint.
Click to expand...
Click to collapse
I am on AT&T and you only need to add the build prop line and reboot. No need for the terminal commands. FYI
is there a new workaround for us Big Red users that are now hitting their 15gb hotspot limit and are now being throttled to turtle speeds? Mine worked fine last month but somehow not this month?