Trying to get Ubuntu chroot up and running with Linux installer from the market.
Followed the quick start guide to a "t", only changes I made from the default settings were distribution and version. This resulted in a /data/local/mnt/Linux directory with the Ubuntu file structure inside and a Linux.loop file in the root of my internal storage.
The part that is confusing of how to mount. The last step in the guide is to press the button that creates the linuxchroot script; when I press the button out says it's creating the file but the file isn't created.
I'm attempting to use the following commands to mount manually:
Code: ---------# mount loop.img directory ---------If for some reason that doesn't work use losetup.
Code: ---------# losetup /dev/block/loop7 loop.img # mount -t auto /dev/block/loop7 directory
But not sure how to use them because there isn't a .img file, just the previously mentioned /data/local/mnt/Linux directory and the Linux.loop file.
Anyone? Thanks in advance
Sent from my DROID3 using Tapatalk 2
Q9Nap said:
Trying to get Ubuntu chroot up and running with Linux installer from the market.
Followed the quick start guide to a "t", only changes I made from the default settings were distribution and version. This resulted in a /data/local/mnt/Linux directory with the Ubuntu file structure inside and a Linux.loop file in the root of my internal storage.
The part that is confusing of how to mount. The last step in the guide is to press the button that creates the linuxchroot script; when I press the button out says it's creating the file but the file isn't created.
I'm attempting to use the following commands to mount manually:
Code: ---------# mount loop.img directory ---------If for some reason that doesn't work use losetup.
Code: ---------# losetup /dev/block/loop7 loop.img # mount -t auto /dev/block/loop7 directory
But not sure how to use them because there isn't a .img file, just the previously mentioned /data/local/mnt/Linux directory and the Linux.loop file.
Anyone? Thanks in advance
Sent from my DROID3 using Tapatalk 2
Click to expand...
Click to collapse
If you see the directory structure in /data/local/mnt/Linux then it's already mounted.
Code:
chroot /data/local/mnt/Linux /bin/bash
Should work, but I have no idea why the script isn't being created.
To manually mount.
Code:
mount /sdcard/Linux.loop /data/local/mnt/Linux
and un-mount after exiting the chroot environment by a ctrl-d or typing "exit".
Code:
umount /data/local/mnt/Linux
if un-mounting causes a device is busy error, un-mount the lazy way
Code:
umount -l /data/local/mnt/Linux
Doing any of this manually might cause some errors because the script isn't doing whatever it is that it does.
Ok so I finally got Ubuntu up and running with vnc server and all, & realized there's no way to input text.
Anyone know if there's any possible way to be able to use the d3 keyboard while in chroot (other than in terminal of course) ?
*edit*
Seems to be working now...
Related
Guide for debian on the Tattoo
this will NOT delete your android system
if it damage your android i am not responsible to that ... but actually it cant harm your loved phone
you must get the terminal emulator and androidvnc
first you should download the image file from here http://rapidshare.com/files/161776007/debian-armel-750.img.bz2then download the installer package from the attached zip file
this is only for the fyodor ROM or a rom with ext2 modules
extract the image and the package to anywhere or your desktop
copy the installer package to /sdcard/kit and the image to there too
then type
Code:
cd /sdcard/kit
su
sh firstrun.sh
now your debian is installed
to launch it you just write:
Code:
su
debian
to exit the shell type
Code:
exit
now you can make a desktop (icewm confirmed WORKING) with this:
http://www.androidfanatic.com/community-forums.html?func=view&catid=9&id=1620#1620
then you can help me make debian run at / from here ...
cant get the unionfs module into systemhttp://www.saurik.com/id/10
I'm interested, please write a guide.
Holy, it's very interesting
Post a guide please
I have been waiting for this for ages. I will love you long time if you share with us how.
What is debian?
Let me know please.
It is a linux distro. http://www.debian.org/
Thanks man.
Waiting.....
me 2 waiting...
okay i make the guide maybe tomorrow i but it will be in this week
Waiting.
Lets develop debian on Tattoo...
I am loving this..
Re: Debian on the tattoo
ohh..
I don't have mega skill, but maybe we all developers can made it.
-------------------------------------
Sent from my HTC Tattoo
rly looking forward
Great idea!
I have been using Debian for AVR and MIPS for ages, maybe I can help in some way.
I guess/hope the radio interface are open so that Debian application can use, as soon as we made a good Window Manager UI and can get rid of the google's dam binding business ;-)
Re: Debian on the tattoo
I can help with graphics.
-------------------------------------
Sent from my HTC Tattoo
Holyachmed said:
Guide for debian on the Tattoo
this will NOT delete your android system
if it damage your android i am not responsible to that ... but actually it cant harm your loved phone
you must get the terminal emulator and androidvnc
first you should download the image file from here http://rapidshare.com/files/161776007/debian-armel-750.img.bz2then download the installer package from the attached zip file
this is only for the fyodor ROM or a rom with ext2 modules
extract the image and the package to anywhere or your desktop
copy the installer package to /sdcard/kit and the image to there too
then type
Code:
cd /sdcard/kit
su
sh firstrun.sh
now your debian is installed
to launch it you just write:
Code:
su
debian
to exit the shell type
Code:
exit
now you can make a desktop (icewm confirmed WORKING) with this:
http://www.androidfanatic.com/community-forums.html?func=view&catid=9&id=1620#1620
then you can help me make debian run at / from here ...
cant get the unionfs module into systemhttp://www.saurik.com/id/10
Click to expand...
Click to collapse
we can have the list of the things that are missing? so that we can work on it one by one..
Cheers!!
I cannot install it.
I get this error:
modprobe: chdir</system/modules>: No such file or directory
mkdir: cannot create directory '/data/local/bin' : file exists
Any help?
dancer_69 said:
I cannot install it.
I get this error:
modprobe: chdir</system/modules>: No such file or directory
mkdir: cannot create directory '/data/local/bin' : file exists
Any help?
Click to expand...
Click to collapse
try to:
adb shell
su (if u aren't root)
mkdir /system/modules
chmod 775 /system/modules
rm -rf /data/local/bin ( check the content of folder before delete..)
Cannot create /system/modules file exists, so I just chmod it.
I remove folder bin and the scipt run, but very fast print "on" and "#"(root symbol)
After that I tried to run the debian command and I get these errors:
mknod: /dev/loop2:file exists
mount: mounting /sdcard/kit/debian.img on /data/local/mnt failed: No such file or directory (but mnt folder exists)
mount: No such file or directory
mount: No such file or directory
mount: No such file or directory
rm failed for -f, No such file or directory
link failed File exists
EDIT:
After fresh installation of fyodor rom 5.31 version, happens again the above error.
Only this time I didn't get any messages when the firstrun.sh script ran.
Another reason why I shouldn't sell my HTC Tattoo...
Nice guide!
I've been experimenting and gathering information all day on how to build a Debian image to run on the Tab (and any other ARM Android devices, for that matter). I've found all the stuff on how to use the Ubuntu images posted, but I really wanted to know how to build a minimal system that I could have complete control over. (I used the latest version of Debian available, Squeeze, when building this, so anything that references "Squeeze" in the commands is because of that. You can easily substitute in a more generic name for files.)
I am going to break this down into a few sections.
Requirements:
Debian or Ubuntu machine (I used a VM with Ubuntu 11.04 installed on it)
Rooted Tab with BusyBox installed
Create the Image:
On the Linux machine you will need to install debootstrap
Code:
sudo apt-get install debootstrap
Create a blank image, format it and then mount it
Code:
dd if=/dev/zero of=squeeze.img bs=1M count=512
mkfs.ext4 -F squeeze.img
sudo mkdir /mnt/squeeze/
sudo mount -t ext4 -o loop squeeze.img /mnt/squeeze/
Note: The image file above is for 512MB, change it to "count=1024" for 1GB, I tried 512MB and it was very limited in space once X was installed.
Run debootstrap and install the system into the image
Code:
sudo debootstrap --verbose --arch armel --foreign squeeze /mnt/squeeze/ http://ftp.debian.org/debian
Unmount the image
Code:
sudo umount /mnt/squeeze/
Install the Image
Create a folder on the Tab, I used /sdcard/debian/ as my storage for my Debian files. Copy your newly created image over into the folder.
Installation will involve the following:
Creating a mount point and mounting the image
Chrooting into the Debian system
Setting some variables
Running the debootstrap installation
Either in a terminal on the device or using adb, do the following to install the system. (The code is commented to better explain how things are working.)
Code:
# Gain root access
su
# Create a mount point and mount the image file into it
# You can substitute any folder instead /data/local/debian/
mkdir /data/local/debian/
mount -o loop,noatime -t ext4 /sdcard/debian/squeeze.img /data/local/debian/
# Chroot into the Debian system
chroot /data/local/debian/ /bin/sh
# Set some required variables
export PATH=$bin:/usr/bin:/usr/sbin:/bin:$PATH
export TERM=linux
export HOME=/
export USER=root
# Set the shell prompt just in case it got overwritten by something else
export PS1='[email protected]$HOSTNAME:${PWD-?} # '
# Run debootstrap
sh /debootstrap/debootstrap --second-stage
# Start a bash shell
/bin/bash
DO NOT EXIT THE SHELL BEFORE MOVING ON TO THE NEXT SECTION
First Boot
Technically the system is running, but if you start to use it you will quickly notice some things just aren't right. There are a few things that I've found that I've needed to do in order to get things running right. You should only need to do these the first time the system is run.
In the Debian shell that is still running on the Tab, do the following
Code:
# This is for working DNS
echo "nameserver 8.8.8.8" > /data/local/debian/etc/resolv.conf
echo "nameserver 8.8.4.4" >> /data/local/debian/etc/resolv.conf
echo "127.0.0.1 localhost" > /data/local/debian/etc/hosts
# Needed to install packages from the repository
echo "deb http://ftp.debian.org/debian/ squeeze main contrib non-free" > /etc/apt/sources.list
echo "deb-src http://ftp.debian.org/debian/ squeeze main contrib non-free" > /etc/apt/sources.list
# Do the initial update of the package repository
apt-get update
Once that is complete return to the Android system by running the exit command
Code:
exit
So that's a fully running system right there. But we haven't addressed starting and shutting down the system.
Here is what a simple boot script would look like to both run and stop the system:
Code:
clear
echo "Mounting Debian Squeeze..."
mount -t ext4 -o loop squeeze.img /mnt/squeeze/
echo "Setting environmental variables..."
export PATH=$bin:/usr/bin:/usr/sbin:/bin:/sbin:$PATH
export TERM=linux
export HOME=/
export USER=root
export PS1='[email protected]:${PWD-?} # '
echo "Mounting devpts/proc/sysfs..."
mount -t devpts devpts /data/local/debian/dev/pts
mount -t proc proc /data/local/debian/proc
mount -t sysfs sysfs /data/local/debian/sys
echo "Chrooting into Debian Squeeze..."
chroot /data/local/debian/ /bin/bash
echo "Unmounting devpts/proc/sysfs..."
umount /data/local/debian/dev/pts
umount /data/local/debian/proc
umount /data/local/debian/sys
echo "Unmounting Debian Squeeze..."
umount /mnt/squeeze/
You will notice that the script also mounts and unmounts additional system filesystems. Also, the script basically pauses right after the chroot command waiting for the process to end, which occurs when you type exit inside of the Debian system. In effect, the script queues up the umount commands for whenever the Debian system is exited.
I use a script similar to that (without the mount/umount because I prefer to do that myself) to start my system. I have it saved to /sdcard/debian/debian and I start the system with the following command:
Code:
su
sh /sdcard/debian/debian
Issues:
The following issues have been encountered:
If the image file is mounted then unmounted, if you try to remount the image again it will error out. (Reboot to solve)
Optional Installation:
Of course the steps above leave you with a working system, but no doubt you will want more functionality.
I've installed TightVNC using the following command:
Code:
apt-get install tightvncserver
To start it:
Code:
vncserver -geometry 1280×752
After that you can connect to it using any VNC software, either local or over the network. If you connect local, be sure to use 127.0.0.1:5901.
Note: This does not install a window manager, if you VNC into the Tab you will get a blank desktop.
I also found that the less command was missing. Turns out the easy fix was to do the following:
Code:
apt-get install less
Finally...
All of this has just been what I've encountered so far today, haven't done much more than set up the system. Please let me know if I'm missing any key parts of the system or if there are any ways that this could be more streamlined.
Hope this helps someone
Thanks man, after rooting my SGT i have been looking for something like this, i'll try it when arrive home.
does touch screen work?
hardt2788 said:
does touch screen work?
Click to expand...
Click to collapse
Dear god man read! It runs as a Virtual Machine on your tablet and you use a VNC client to control it. So yes touchscreen works but it is not a duel boot and is "piggy backing" off android.
So if someone emails you can switch to the email app then back to the vnc app.
You need pills.
Sent from my GT-P7510 using XDA Premium App
maniac3389, have you tried running lxde instead of gnome to see if it runs any faster?
hardt2788 said:
does touch screen work?
Click to expand...
Click to collapse
Sorry, been a few days since I've been on here. Well, the concept is that you run a VNC server in the Debian system and you "remote" into it via a VNC client on the Honeycomb side.
jamezelle said:
maniac3389, have you tried running lxde instead of gnome to see if it runs any faster?
Click to expand...
Click to collapse
Been a bit since I've worked with it, it installed and worked but something was quirky about it. (can't recall what it was)
How to install ubuntu on the Droid 4
Note to mods: this thread is a branch off of this thread
Huge thanks to zacthespack for creating the ubuntu installer app and original boot script and to zeroktal for modifying the script to work on the D4 and helping me get it working on my device.
I decided to take my experience in setting this up and put it into a how-to so that others could enjoy the experience of having ubuntu on the Droid 4. If zackthespac or zeroktal have any problems with me making and putting this guide up, please let me know and I will remove it.
Knowledge Required:
working knowledge of command line
working knowledge of vi
OR the ability to learn how to use both
Tools Required:
A rooted Motorola Droid 4
BusyBox (Android Market)
Terminal Emulator (Android Market)
Android VNC Viewer (Android Market)
Ubuntu Installer App (Android Market)
zeroktal's ubuntud4.zip file (attached to this post and mediafire)
Vi Cheat Sheet (lagmonster.org)
Step by Step:
Install BusyBox, Terminal, and Android VNC Viewer
Install and run Ubunutu Installer App
Follow the on-screen instructions and click next
Download either the Small or Large image to your phone, (use zeroktal's ubuntud4.zip file instead of the boot script provided in the guide) after the image downloads (will take a while because the file is HUGE) click next
For this screen, the instructions differ from the app.
1. With your D4 plugged into your PC in USB Mass Storage, create a directory (folder) called ubuntu in the EXTERNAL sdcard's root*
2. Extract the image you downloaded to that directory
3. Download and extract the attached .sh (ununtud4.zip) to that directory
4. Disconnect your phone from your PC
5. Open terminal and run the following commands:
su [ENTER]
mount -o remount,rw,exec,suid /dev/block/vold/179:1 /mnt/sdcard-ext [ENTER]
cd /mnt/sdcard-ext/ubuntu [ENTER]
sh ubuntud4.sh [ENTER]
960x540 [ENTER]**If you get an error message: ubuntud4.sh: 45: syntax error: end of file unexpected (expecting "then") see troubleshooting section below.killall -TERM Xtightvnc [ENTER]
vncserver :1 -geometry 960x540 [ENTER]**6. Open androidVNC app and enter the following settings:
Nickname: Anything you want
Password: ubuntu
Address: localhost
Port: 5901
Color Format: 24-bit color (4 bpp)
7. Hit connect
8. Hit your menu soft button and then set input mode to touchpad
9. You have ubuntu on your Droid 4!
To "shut down" ubuntu:
press the menu button, select disconnect in VNC
In terminal type this command 3 times (terminal will close itself when you are done):
exit [ENTER]
To "start up" ubuntu again:
Follow steps 5-8 above
Troubleshooting:
If you get the error message: ubuntud4.sh: 45: syntax error: end of file unexpected (expecting "then") you are about to have fun with vi at the command line.
Do the following from inside terminal:
su [ENTER]
cd /mnt/sdcard-ext/ubuntu [ENTER]
vi ubuntud4.sh [ENTER]If you see ^M or ^ at the end of any line (remember to scroll all the way to the right to see the end of long lines) remove it. once you do that, everything should work just fine. (See the Vi Cheat Sheet above for help with Vi)
Note: Vol Up + E is [ESC] by default in this terminal emulator
Notes:
* It does not have to be on the external SD, but if you put it on the internal SD you will have to modify things as needed-- if you dont know what needs to be changed, just put it on the external SD.
** Screen size can be whatever you want it to be, but 960x540 is the size of the D4 screen.
*** This is a fairly involved process... especially when it comes to editing the .sh file in vi things can get very frustrating and hard, but just take your time and you will get it. As always, doing anything with root access on your phone, especially on the command line has risks. I am not responsible if anything goes wrong with your phone... proceed at your own risk!
greekchampion04 said:
Notes:
* It does not have to be on the external SD, but if you put it on the internal SD you will have to modify things as needed-- if you dont know what needs to be changed, just put it on the external SD.
** Screen size can be whatever you want it to be, but 960x540 is the size of the D4 screen.
*** This is a fairly involved process... especially when it comes to editing the .sh file in vi things can get very frustrating and hard, but just take your time and you will get it. As always, doing anything with root access on your phone, especially on the command line has risks. I am not responsible if anything goes wrong with your phone... proceed at your own risk!
Click to expand...
Click to collapse
I actually got it up and running on my internal sdcard partition. Pretty much just have to modify the Mount remount command, and a few lines in the script.
Here's the original command
Code:
mount -o remount,rw,exec,suid /dev/block/vold/179:1 /mnt/sdcard-ext
And the modified one
Code:
mount -o remount,rw,exec,suid /dev/block/vold/179:57 /mnt/sdcard
Only things you have to change are the device location(179:57) and mount location(drop the -ext after sdcard)
Now, after that you also have to modify the script a bit. Just go through it, and anywhere that you see sdcard-ext, drop the -ext off the end.
thanks for putting that up for everybody! like i said, if you know what you are doing its not a hard swap to make.
Is anyone else getting just a gray screen when they remote in? What could be causing this?
i had that same problem at first... did you use zeroktal's ubuntud4.zip file? or did you use the ubuntu.sh file included in the app?
I used the sh file included. I did however fix the problem, when mounting at the start i confused vold with void. I did not get the file system mounted properly. This method does work!! however I am currently trying to get bash on my droid to replace sh as the shell. I've checked the forums but have not found anything yet about someone installing bash on the droid 4. With no way for nandroids I feel i should wait before I kill sh.
Sent from my DROID4 using XDA App
If you mod your init.sh in your root directory to the following, your vnc will work on startup without issue. It will also shutdown vnc on exit.
#!/bin/bash
#############################################
# Asks User to screen size and saves as REZ #
#############################################
#echo "Now enter the screen size you want in pixels (e.g. 800x480), followed by [ENTER]:"
#read REZ
##############################################
# Pick which desktop environment to use, this#
# is done by having a xstartup file for each #
# desktop, then renaming the one you want to #
# use to 'xstartup' before boot #
##############################################
echo "Please select which Desktop environment you want to use, type the number to select it then press [ENTER]"
echo "1 - LXDE"
echo "2 - Gnome"
echo "Make your Selection:"
read DESKTOP
if [ $DESKTOP == 1 ]
then
mv /root/.vnc/lxstartup /root/.vnc/xstartup
fi
if [ $DESKTOP == 2 ]
then
mv /root/.vnc/gxstartup /root/.vnc/xstartup
fi
###########################################
# Tidy up previous LXDE and DBUS sessions #
###########################################
rm /tmp/.X* > /dev/null 2>&1
rm /tmp/.X11-unix/X* > /dev/null 2>&1
rm /root/.vnc/localhost* > /dev/null 2>&1
rm /var/run/dbus/pid > /dev/null 2>&1
############################################################
# enable workaround for upstart dependent installs #
# in chroot'd environment. this allows certain packages #
# that use upstart start/stop to not fail on install. #
# this means they will have to be launched manually though #
############################################################
dpkg-divert --local --rename --add /sbin/initctl > /dev/null 2>&1
ln -s /bin/true /sbin/initctl > /dev/null 2>&1
###############################################
# start vnc server with given resolution and #
# DBUS server, (and optionally an SSH server) #
###############################################
dbus-daemon --system --fork > /dev/null 2>&1
/etc/init.d/ssh start
vncserver :1 -geometry 960x540
echo
echo "If you see the message 'New 'X' Desktop is localhost:1' then you are ready to VNC into your ubuntu OS.."
echo
echo "If VNC'ing from a different machine on the same network as the android device use the 1st address below:"
##########################################
# Output IP address of android device #
##########################################
ifconfig | grep "inet addr"
echo
echo "If using androidVNC, change the 'Color Format' setting to 24-bit colour, and once you've VNC'd in, change the 'input mode' to touchpad (in settings)"
echo
echo "To shut down the VNC server and exit the ubuntu environment, just enter 'exit' at this terminal - and WAIT for all shutdown routines to finish!"
echo
###############################################################
# Spawn and interactive shell - this effectively halts script #
# execution until the spawning shell is exited (i.e. you want #
# to shut down vncserver and exit the ubuntu environment) #
###############################################################
/bin/bash -i
#########################################
# Disable upstart workaround and #
# kill VNC server (and optionally SSH) #
# Rename used xstartup to its first file#
#########################################
killall -TERM Xtightvnc
/etc/init.d/ssh stop
Also save the follow lines between ### as remount.sh on your system partition. Then chmod 755 /system/remount.sh. Now you can just run run from a terminal /system/remount.sh and voila it remounts correctly and starts ubuntu(with the above fixes). Im still working on the unmounts.
####### for the internal sd card
mount -o remount,rw,exec,suid /dev/block/vold/179:57 /mnt/sdcard
/mnt/sdcard/ubuntu/ubuntu.sh
######
OR
####### for the external sd card
mount -o remount,rw,exec,suid /dev/block/vold/179:1 /mnt/sdcard-ext
/mnt/sdcard-ext/ubuntu/ubuntu.sh
#######
great stuff!
feel free
Feel free and take, modify, repost or edit anything I touch.
QUESTION:
After I delete all the ^M and ^ what do i do next? I try to hit the command ":x" to exit and save changes but it just creates another line. Also when I press VOL UP + E to escape nothing happens.
PhanTuhC said:
QUESTION:
After I delete all the ^M and ^ what do i do next? I try to hit the command ":x" to exit and save changes but it just creates another line. Also when I press VOL UP + E to escape nothing happens.
Click to expand...
Click to collapse
In vi, the command to save and exit is :wq (probably short for write and quit).
remember, read up on the vi quick-reference guide: http://www.lagmonster.org/docs/vi.html
OK I fixed it but now its not letting me connect with androidVNC. All the settings entered is correct but when I try to connect it says:
"VNC connection failed!" localhost/127.0.0.1:5901 - Connection refused"
ok, i've gone thru this a few times (slowly and deliberately) and must be missing something...the directions seem pretty straightforward! here's what i know...
busy/terminal/vnc are all installed
small 2.5gb image is unzipped in /sdcard-ext/ubuntu directory
the attached .sh file from page 1 is in the same directory
i removed all ^M using vi
but when I try sh ubuntud4.sh i get an error...
"mkdir failed for /data/local/mnt/ubun, No such file or directory"
(plus a few other errors)
should the directory be "ubun" or "ubuntu"? am I typing something incorrectly?
copy and paste new script
Copy and paste the new scripts I posted. They will fix your problem. Remember to use the remount script from /system/ the rest will work perfectly if you are root. I'll check back later on your progress.
Ok, well I started from scratch (deleted both .img and .sh files) and it's still not working.
I have all the apps installed (and yes rooted, SU works just fine)
I used Ubuntu Installer app to download the image zip (tried both the large and small img)
I downloaded the .sh file from the first post
The /sdcard-ext/ubuntu/ folder now has two files: "ubuntu.img" and "ubuntud4.sh"
All ^M characters have been removed from .sh file
Still no joy...
Ideas? What am I missing?
In terminal, I can set SU permissions and the mount/cd commands work just fine...it's the last sh command that spits out a bunch of errors about not being able to create/find the directories.
I'm going to format the sdcard and try again...any help is appreciated.
Update: Even after re-formatting the SD and following the steps exactly, no luck!
Did you remember to remount the sdcard with exec and suid permissions?
Andbuntu will work much better than this method. It works on every single phone with modification to the "environmental variables".
http://code.google.com/p/andbuntu/
Follow the directions in the script to make the process much easier than the first post.
instructions:
generate an image with rootstock on an ubuntu computer.
put it on /sdcard/ubuntu/ubuntu.img
run the script on your phone with "sh /path/to/script"
Here is the script. http://andbuntu.googlecode.com/svn/trunk/uboot
Also, run "firstRun" to make things like terminals work properly.
Adamoutler: That didnt work for me. The permissions were incorrect on the mounted partitions.
Sent from my DROID4 using XDA App
Found the solution, it's in the fifth post
Hey, first of all I'm Linux and Android newbie, so sorry if my question reveals it a bit
As my Internal Storage a.k.a. /mnt/sdcard is getting full and I hate to be reminded of it by notification I can't get rid of, I decided to put some effort into moving the largest files to the SD card. I have a 64GB SD an there still are several free gigs So after some googling I found out a way to link it. It works like this:
Code:
mount -o bind /origdir /newdir
where both /origdir and /newdir must exist, in my case as an example:
Code:
mount -o bind /mnt/sdcard-ext/sd/DictionariesNGHS /mnt/sdcard/DictionariesNGHS
where /mnt/sdcard-ext/sd/DictionariesNGHS is the data containing folder and /mnt/sdcard/sd/DictionariesNGHS is an empty folder for linking. It works like a charm, tried with several applications including some off-line navigations. The downside is that such links are forgotten after a reboot.
I didn't find out how to automatize that. I tried putting the line from second code to the end of /system/etc/init.goldfish.sh (I run Eclipse ICS 1.2) and it didn't get linked after a reboot (but works OK after mounting manually in terminal) - I suspect it runs before sdcard-ext is mounted. Any thoughts on how to make it run after reboot? Or maybe of an app that does this for me?
EDIT:
Put my links into /data/data/init.sh
Tried several not working apps:
ScriptMe by gilsken says Script run mount: No such file or directory
Script Manager - SManager by devworm says
Code:
exec sh '/data/data/init.sh'
[email protected]_maserati:/ # exec sh '/data/data/init.sh'
mount: No such file or directory
while interestingly when I write it by myself in its built-in console it works...
App that works: Tasker by Crafty Apps
I can have scripts run on boot and it works, but I can add only one line at time (or at least it's the only option I found) which is still kinda inconvenient plus it runs all the time consuming system resources. I'd like some less robust solution, preferably executed after boot and exiting after mounts proceed. Any ideas?
EDIT 2:
My "workaround" in Tasker: Profiles -> New -> Event -> System -> Device Boot -> OK -> New Task -> OK -> + -> Script -> Run Shell -> Command: /data/data/init.sh -> OK
Surprisingly enough it doesn't even need root permission...
In init.sh I have several lines with different mounts, it all works well. I'm still looking for less robust solution than Tasker is, or maybe a way to kill it after the init.sh is processed?
hey
can you please post the content of youre
Code:
/data/data/init.sh
---------- Post added at 04:35 PM ---------- Previous post was at 03:50 PM ----------
youre problem is, at the runtime form the mount command, the mount is not in youre path.
can you add to you script the command
Code:
env
and post the output?
I tried it with a file containing only this line:
Code:
mount -o bind /mnt/sdcard-ext/sd/DictionariesNGHS /mnt/sdcard/DictionariesNGHS
OK, after running it by SManager it looks like giving errors, but the folder gets mounted.
Also it seems apps get access to /mnt/sdcard faster after reboot then to /data/data (I wonder why...?) so I moved the script there.
Here you have the output with env at the end of init.sh, run by SManager as root (mounted OK):
Code:
exec sh '/mnt/sdcard/init.sh'
[email protected]_maserati:/ # exec sh '/mnt/sdcard/init.sh'
mount: No such file or directory
_=/system/xbin/env
ANDROID_BOOTLOGO=1
ANDROID_PROPERTY_WORKSPACE=8,69632
LOOP_MOUNTPOINT=/mnt/obb
SM_API=15
RANDOM=26725
ANDROID_ASSETS=/system/app
USER=root
EXTERNAL_STORAGE=/mnt/sdcard
ANDROID_DATA=/data
PATH=/sbin:/vendor/bin:/system/sbin:/system/bin:/system/xbin
SM_LAUNCHER=MANUAL
TERM=vt100
PS1=$(precmd)[email protected]$HOSTNAME:${PWD:-?} #
SM_VERSION=2.5.3.1
SM_GUIFD=3
LD_LIBRARY_PATH=/vendor/lib:/system/lib
SECONDARY_STORAGE=/mnt/sdcard-ext
SM_ALIAS=init.sh
ASEC_MOUNTPOINT=/mnt/asec
SM_HOME=/mnt/sdcard
HOSTNAME=cdma_maserati
HOME=/
SM_VERSIONCODE=77
BOOTCLASSPATH=/system/framework/core.jar:/system/framework/core-junit.jar:/system/framework/bouncycastle.jar:/system/framework/ext.jar:/system/framework/framework.jar:/system/framework/framework-ext.jar:/system/framework/android.policy.jar:/system/framework/services.jar:/system/framework/apache-xml.jar:/system/framework/filterfw.jar:/system/framework/com.motorola.android.frameworks.jar:/system/framework/com.motorola.android.widget.jar:/system/framework/com.motorola.frameworks.core.addon.jar:/system/framework/kafdex.jar:/system/framework/com.motorola.orange.simauth.jar
ANDROID_ROOT=/system
SHELL=/system/bin/sh
MKSH=/system/bin/sh
ANDROID_SOCKET_zygote=9
So it works after all with the SManager as I intended, I just don't understand why it gives that error when everything actually is OK...
Any ideas on how to make it run automatically after every mount of sdcard-ext instead of on reboot? Because when I connect it to the computer as Mass Storage, the directory mounts disappear and I have to run the script manually...
LuH said:
I tried it with a file containing only this line:
Code:
mount -o bind /mnt/sdcard-ext/sd/DictionariesNGHS /mnt/sdcard/DictionariesNGHS
...
Any ideas on how to make it run automatically after every mount of sdcard-ext instead of on reboot? Because when I connect it to the computer as Mass Storage, the directory mounts disappear and I have to run the script manually...
Click to expand...
Click to collapse
for the first, replace the mount with this:
Code:
/system/bin/mount -o bind /mnt/sdcard-ext/sd/DictionariesNGHS /mnt/sdcard/DictionariesNGHS
Found out that the "mount: No such file or directory" error was due to typo in folder path
So to wrap it up:
You need to be rooted first.
Create your init.sh script file, works fine when put to /mnt/sdcard/
Example file (also attached so you have a sample in UNIX formatting - don't open with Notepad under Windows, better edit it in your phone):
Code:
# mount -o bind /sourcedir /fakedir - both sourcedir and fakedir MUST exist!
mount -o bind /mnt/sdcard-ext/sd/DictionariesNGHS /mnt/sdcard/DictionariesNGHS
mount -o bind /mnt/sdcard-ext/sd/Android/obb /mnt/sdcard/Android/obb
Note: you should use a UNIX formatting of the file, not Windows (I'm not sure if it's necessary though).
As hinted in the beginning note, sourcedir and fakedir must exist and after successful mount the fakedir folder will appear to have the contents of the sourcedir folder. Any fakedir's contents are ignored ("disappear") after mount and reappear only after it gets unmounted.
It gets automatically unmounted after unmounting of either fakedir's or sourcedir's media (typically when connecting phone to a computer as mass storage) and I haven't found any workaround for running the script after remounting of media... Any suggestions?
Install SManager (free version here).
In SManager navigate to your script file, tap it and select Script/Executable and tap Su and Boot icons (see attached screenshot).
Done, your folders get mounted on reboot
Prerequisites:
Rooted device
Busybox installed ( get it from Google Play )
Terminal emulator ( get it from Google Play )
An armv7h linux image ( see the download link below )
ArchLinuxARM images:
You can download any ArchLinuxARM image you want from this link sourceforge.net/projects/linuxonandroid/files/ArchLinux/
After downloading your image rename it to "arch.img".
Step 1:
Create the following directories on your EXTERNAL-SDcard ( works on internal too but you'll have to modify the paths in the arch.sh script ): archlinux/ and archlinux/mount/
Step 2:
Copy the arch.img file you downloaded from your computer to your EXTERNAL-SDcard and store it under archlinux/
Step 3:
Open a text editor on your computer and create a new file called arch.sh and paste the following text in it:
# path to the linux img
# change this in case it is different from your image's path
LINUX_IMG=/storage/sdcard1/archlinux/arch.img
# location where the linux image will be mounted (/storage/sdcard1/archlinux/mount/)
# change this if you want to mount it somewhere else
LINUX_DIR=/storage/sdcard1/archlinux/mount/
# create the directory where the linux image will be mounted in case it doesn't exist
mkdir -p $LINUX_DIR
# mount the image
busybox mount -o loop $LINUX_IMG $LINUX_DIR
# mount dev and proc directories
cd $LINUX_DIR
busybox mount -t proc proc proc/
busybox mount -o bind /dev/ dev/
# optionally mount sdcard and external sdcard (if you do not want to mount them simply comment the following 2 lines)
busybox mount -o bind /sdcard/ sdcard/
busybox mount -o bind /storage/sdcard1/ external_sd/
# copy resolv.conf from android environment to arch linux environment
cp /etc/resolv.conf etc/resolv.conf
# chroot into the arch linux environment
chroot $LINUX_DIR /bin/bash
Step 4:
Copy the arch.sh script from your computer to the root of your INTERNAL SDcard ( since we don't have execute permissions on the external SDcard we will store the script on the internal SDcard).
Step 5:
Unplug your AscendP7 from the computer and open the terminal emulator.
Once the terminal emulator opened type the following:
su
cd /storage/sdcard0/
./arch.sh
If you followed the above steps, after executing the above commands you should find yourself inside the ArchLinux environment.
problem with download file
MihaiChirculete said:
Prerequisites:
Rooted device
Busybox installed ( get it from Google Play )
Terminal emulator ( get it from Google Play )
An armv7h linux image ( see the download link below )
ArchLinuxARM images:
You can download any ArchLinuxARM image you want from this link nl.mirror.archlinuxarm.org/armv7h/alarm/
After downloading your image rename it to "arch.img".
Step 1:
Create the following directories on your EXTERNAL-SDcard ( works on internal too but you'll have to modify the paths in the arch.sh script ): archlinux/ and archlinux/mount/
Step 2:
Copy the arch.img file you downloaded from your computer to your EXTERNAL-SDcard and store it under archlinux/
Step 3:
Open a text editor on your computer and create a new file called arch.sh and paste the following text in it:
# path to the linux img
# change this in case it is different from your image's path
LINUX_IMG=/storage/sdcard1/archlinux/arch.img
# location where the linux image will be mounted (/storage/sdcard1/archlinux/mount/)
# change this if you want to mount it somewhere else
LINUX_DIR=/storage/sdcard1/archlinux/mount/
# create the directory where the linux image will be mounted in case it doesn't exist
mkdir -p $LINUX_DIR
# mount the image
busybox mount -o loop $LINUX_IMG $LINUX_DIR
# mount dev and proc directories
cd $LINUX_DIR
busybox mount -t proc proc proc/
busybox mount -o bind /dev/ dev/
# optionally mount sdcard and external sdcard (if you do not want to mount them simply comment the following 2 lines)
busybox mount -o bind /sdcard/ sdcard/
busybox mount -o bind /storage/sdcard1/ external_sd/
# copy resolv.conf from android environment to arch linux environment
cp /etc/resolv.conf etc/resolv.conf
# chroot into the arch linux environment
chroot $LINUX_DIR /bin/bash
Step 4:
Copy the arch.sh script from your computer to the root of your INTERNAL SDcard ( since we don't have execute permissions on the external SDcard we will store the script on the internal SDcard).
Step 5:
Unplug your AscendP7 from the computer and open the terminal emulator.
Once the terminal emulator opened type the following:
su
cd /storage/sdcard0/
./arch.sh
If you followed the above steps, after executing the above commands you should find yourself inside the ArchLinux environment.
Click to expand...
Click to collapse
which one must to download?
rahim1234 said:
which one must to download?
Click to expand...
Click to collapse
I changed the download link. Try this: sourceforge.net/projects/linuxonandroid/files/ArchLinux/
so, what is the advantage of this kernel?