So I'm trying to set up ubuntu in a chroot and not getting anywhere. Following a couple different guides I get problems. I think the problem is with my kernel? Something about not being able to set up the loop. I am running thor's rom and kernel so I figured I wouldn't have a problem but maybe someone knows if this is the issue and if it is what other kernel will work with thor's rom? Below is the error I'm getting where the script screws up.
/mnt/sdcard/ubuntu # mount -t ext2 -o loop /sdcard/ubuntu/rootfs.ext2 /data/local/ubuntu
ioctl LOOP_SET_FD failed: Device or resource busy
/mnt/sdcard/ubuntu #
Ok then,
Does anyone have a chroot set up? If so what rom/kernel are you running?
THanks
Related
So, many of you want to run a full-size linux on your iconia. Unfortunately due to the fact that acer are a bunch of stupid mofos not releasing kernel source code and do not allow to flash unsigned ROMs we'll have to run it in chroot within android.
First thing to do is to get yourself a rootfs of linux. You can use angstrom, ubuntu.. I'm building debian using multistrap, the config is below. You'd better use pre-built ubuntu/backtrack and skip up to somewhere between steps 4 and 5, unless you have experience with dpkg and apt-get.
Code:
[General]
arch=armel
directory=/home/alexander/builds/multistrap
cleanup=false
retainsources=true
allowrecommends=false
noauth=true
unpack=true
aptsources=Grip
debootstrap=Debian
[Debian]
packages=screen openssh-server alsa-utils wireless-tools wpasupplicant nmap netcat
source=http://ftp.uk.debian.org/debian
keyring=debian-archive-keyring
suite=sid
[Grip]
packages=locales
keyring=emdebian-archive-keyring
source=http://www.emdebian.org/grip
suite=sid
Now we need to get it to iconia somehow. Running it from microsd would be incredibly slow and internal ssd is formatted to vfat. So let's loop mount it.
1. Create the loopback image
Code:
#700 mb
dd if=/dev/zero of=debian.img bs=10M count=70
mkfs.ext2 -f debian.img
2. Mount it as you always do.. on your desktop yet
Code:
mkdir /mnt/debian
mount -o loop -t ext2 debian.img /mnt/debian
3. Copy the desired files.. As a root user, you can cd to the rootfs (generated by multistrap) and
Code:
tar cvp . | tar xvp -C /mnt/debian
4. unmount the image.. (umount /mnt/debian) and copy to the /sdcard. I copy to the /sdcard/linux/debian.img. Also, I use the /sdcard/linux/uroot directory to mount the image on the tablet.
5. now, you need adb or terminal emulator and superuser permissions ('teh rewt')
Now let's make some script, name it android_sh and put it to /bin in /sdcard/linux/uroot. And make it executable (chmod +x /bin/android_sh)
Code:
#!/bin/bash
export PATH=/bin:/sbin:/usr/bin:/usr/sbin
export USER=root
export HOME=/root
export TERM=linux
if [ -z "`pidof Xtightvnc`" ] ; then
vncserver -geometry 1280x740 -depth 8
else
kill -9 `pidof Xtightvnc`
rm /tmp/.X11-unix/X*
rm /tmp/.X*lock
fi
/bin/bash -
Ok. now make another script, in /sdcard/linux
Code:
#!/bin/sh
LOOPBASE=/sdcard/linux
LOOPFILE=debian.img
LOOPTARGET=uroot
cd $LOOPBASE
if [ -z "`grep $LOOPBASE/$LOOPTARGET /proc/mounts`" ]; then
echo "mounting $LOOPFILE"
mount -o loop -t ext2 $LOOPBASE/$LOOPFILE $LOOPBASE/$LOOPTARGET
else
echo "$LOOPFILE already mounted"
fi
for i in dev proc sys
do
echo "processing $i"
if [ -z "`grep $LOOPBASE/$LOOPTARGET/$i /proc/mounts`" ]
then
echo "mounting $i"
mount -o bind /$i $LOOPBASE/$LOOPTARGET/$i
else
echo "$i already mounted"
fi
done
if [ -z "`grep $LOOPBASE/$LOOPTARGET/dev/pts /proc/mounts`" ]
then
mount -t tmpfs none $LOOPBASE/$LOOPTARGET/dev/pts
fi
echo "chroot into $LOOPBASE/$LOOPTARGET"
chroot $LOOPBASE/$LOOPTARGET /bin/android_sh
now, execute it (sh /sdcard/linux/chroot.sh). You should be in root shell now. If you're building debian using multistrap, configure the packages (dpkg-configure -a). Remember I told you to keep out of debian? Dash package is somewhat broken so you may need to lurk through mailing lists to make it install.. And you need to manually add your sid/testing mirrors to the aptitude config.
So what now? Install tightvnc server (in debian/ubuntu, use apt-get update; apt-get install tightvncserver), exit the shell and launch chroot.sh again.
If you're building rootfs yourself, don't forget to install some x desktop environment. I use lxde on debian, it is lightweight and starts automatically with tightvnc
Now, you can use the vnc client on android to connect to your X11. When chrooting, tightvnc wil tell you the number of x session, so use it as the last digit of the port (5901, 5902 etc). I welcome suggestions on how to improve the android_sh to cleanly kill all tightvnc servers and remove temporary files so that the port number is always the same
In the end you may or may not get something similiar to this:
http://img820.imageshack.us/img820/9076/img3159qm.jpg
P.S.
I recommend you to install Hacker's Keyboard which will give you the tab key, esc and arrows simultaneously and allow to use cool software like vim and emacs without pain
https://market.android.com/details?id=app-org.pocketworkstation.pckeyboard
U.B.D.Man...
Cool...But I got stucked at the first step. Where can I get debian.img?
you create a new file named debian.img using dd, then you format it to ext2 using mkfs.. well. you can just take backtrack image from xoom. essentially it's just ubuntu with some software added
I'm just curious why you chose ext2 as opposed to ext4? Given that the filesystem is actually a file on a filesystem, I sort of understand ext2, especially considering you can mount it with the ext4 driver now.
This probably sounds like a stupid question, but for some reason I cannot use bash?
It may be that my paths are not configured properly, but i dont have a bin at the "/" level. I have looked in /system/bin and /system/xbin, but have not found bash there either.
I installed busybox and have been able to perform root tasks, so I am not sure what I missed.
because.. you don't have bash.. you should have it in your chroot. if you need it in android, just install it (like http://forum.xda-developers.com/showthread.php?t=537827)
I installed bash according to the link you posted, but I still don't have a /bin outside of /system. I did change the above scripts to reflect this by saying:
#!/system/bin (but then I get the error 'event not found')
My prompt reads: "sh-3.2#" after reboot, which I understand is bash replacing the stock terminal.
I tried creating the /bin directory in the root, but even with root terminal, it said it was read only. Do I have to remount the root and then create a /bin directory?
When I rooted, I don't remember their being a lengthy discussion about bash installation, or the creation of a /bin directory.
I welcome all suggestions, as I am trying to learn more about the inner workings of the tablet, but still have little experience.
you need bash only in the linux in chroot and therefore do not need to modify scripts.
anyway,
mount -o remount,rw /system
cp bash /system/bin
chmod 755 /system/bin/bash
mount -o remount,ro /system
then you can start bash by typing 'bash' in shell
Hello,
I have tried and I still can't get it run. I am not used to Linux stuffs and scared that I may screwed up my tab. Can you please pack the required files and upload it so that we can follow easier? something like this http://www.secmaniac.com/may-2011/backtrack-5-on-motorola-xoom-in-10-minutes-or-less/ would be great.
Thank you.
PS: I sincerely want to get BackTrack on my tab so that I can run R on this
moved to http://forum.xda-developers.com/showthread.php?t=1094237
sp3dev said:
because.. you don't have bash.. you should have it in your chroot. if you need it in android, just install it (like http://forum.xda-developers.com/showthread.php?t=537827)
Click to expand...
Click to collapse
I ended up installing bash, but I still had problems with chroot and getting the scripts to run, so I decided to reverse what I was doing. In the process of trying to remove the bash shell and replace with the stock sh, I must have messed something up.
I tried a factory reset, and when I loaded back up again, I can't get wifi to connect. My suspicion is that there is at least two separate things wrong:
-My shell is somewhere in permission limbo or non-existant
I try running >adb shell and I get:
"- exec '/system/bin/sh' failed: No such file or directory (2) -"
-The permissions on my wpa_supplicant are probably messed up, hence I can't connect to wifi
Any suggestions?
Well I tried a few more things:
-Tried copying over bash to /system/bin, got an error that it is a read-only file system. Funny, because I need shell (chmod?) in order to repair the shell, those bastards.
-Tried installing apk using adb, got same message about 'sh' missing. I think I will have to reflash a system.img, but I can't seem to find the Wifi-US with a working link.
Any help would be much appreciated.
Hey guys, could you upload and send me the link of a video of this working? Cause I love the idea of it but I'm not sure if its really practical
Sent from my A500 using XDA Premium App
hey guys, im trying to get chrooted ubuntu running on my vegacomb update 3 vega and am having problems.
Im following the guide here:
http://androlinux.com/android-ubuntu-development/how-to-install-busybox-on-your-android/
and keep getting the following errors:
/mnt/sdcard/ubuntu # bootubuntu
losetup: /dev/block/loop1
mount: mounting /dev/block/loop1 on /data/local/ubuntu failed: Device or resource busy
mount: mounting devpts on /data/local/ubuntu/dev/pts failed: No such file or directory
mount: mounting proc on /data/local/ubuntu/proc failed: No such file or directory
mount: mounting sysfs on /data/local/ubuntu/sys failed: No such file or directory
net.ipv4.ip_forward = 1
Setting /etc/resolv.conf to Google Open DNS 8.8.8.8 and 8.8.4.4
/system/bin/bootubuntu: line 22: can't create /data/local/ubuntu/etc/resolv.conf: nonexistent directory
/system/bin/bootubuntu: line 23: can't create /data/local/ubuntu/etc/resolv.conf: nonexistent directory
Setting localhost on /etc/hosts
/system/bin/bootubuntu: line 25: can't create /data/local/ubuntu/etc/hosts: nonexistent directory
READY TO ROCK AND ROLL BABY!
Brought to you by NexusOneHacks.net and the open source community!
chroot: can't execute '/bin/bash': No such file or directory
Shutting down Ubuntu
umount: can't umount /data/local/ubuntu/dev/pts: No such file or directory
umount: can't umount /data/local/ubuntu/proc: No such file or directory
umount: can't umount /data/local/ubuntu/sys: No such file or directory
umount: can't umount /data/local/ubuntu: Invalid argument
losetup: /dev/block/loop1: Device or resource busy
Is it that vegacomb doesnt support loop devices:? Or am i missing something else? Ive checked and i have busybox installed and working correctly, but that doesnt seem to have changed anything?
Thoughts?
The vega does support loop devices, infact I have that setup running on my vega on vegacomb right now!
In order to get it working download the new scripts from the ubuntu on xoom section of the androlinux site, that worked for me fine!
Bear in mind, the version of ubuntu supplied in the image file is something like 9.10 which is very old, and the image is only 2gb which doesn't leave enough space for updating. Consider following their guide for building your own image.
Anyway, best of luck, I had to get over a few problems when installing it myself, but that may have been related to my setup, so if you have any problems I will keep an eye on this thread!
Happy Ubuntuing
Thanks for the reply, I will try the xoom scripts and see how I get on. I saw the section about building my own but wanted to try and easy 9.10 install first before building my own xubuntu 11.10. Il let you knw how I get on
Could you post your bootubuntu script up please?
I have tried lots of different loop device numbers but am getting no where!
I haven't altered my bootubuntu script at all from the default xoom one, I will post it at the bottom!
There are a few things worth checking for that may help your problems, check that the ubuntu folder on your sd card with the .img file in uses a lower case U, that caught me out the first time as my vega keyboard auto-capitalises.
Also did your ubuntu.sh script run without errors? It worked fine on mine with the old ubuntu.sh and the new bootubuntu script but you may want to try running the xoom shell script.
Hope this helps!
Code:
mount -o remount,rw /dev/block/mmcblk0p5 /system
export kit=/sdcard/ubuntu
export bin=/system/bin
export mnt=/data/local/mnt
export PATH=$bin:/usr/bin:/usr/sbin:/bin:$PATH
export TERM=linux
export HOME=/root
busybox mknod /dev/loop2 b 7 0
mount -o loop,noatime -t ext2 $kit/ubuntu.img $mnt
mount -t devpts devpts $mnt/dev/pts
mount -t proc proc $mnt/proc
mount -t sysfs sysfs $mnt/sys
busybox sysctl -w net.ipv4.ip_forward=1
echo "Setting /etc/resolv.conf to Google Open DNS 8.8.8.8 and 8.8.4.4"
echo "nameserver 8.8.8.8" > $mnt/etc/resolv.conf
echo "nameserver 8.8.4.4" >> $mnt/etc/resolv.conf
echo "Setting localhost on /etc/hosts "
echo "127.0.0.1 localhost" > $mnt/etc/hosts
echo " "
echo "VERSION 0.9.5 BUGFIX April 2nd 2011"
echo "Brought to you for the Motorola Xoom by Thomas Sohmers, and Ubuntu by Canonical and the open source community!"
echo "This version is for people experiencing errors around step 7 of my Ubuntu install. Hope this fixes everything! If not, feel free to contact me. Sorry for the delay."
echo " "
echo "Ubuntu is now loaded and you should see a '[email protected]' terminal entry below thisÔøΩ if you do not, than Ubuntu has not successfully loaded. Have fun!"
echo " "
busybox chroot $mnt /bin/bash
#After exit command is executed clear it all up
echo " "
echo "Shutting down Ubuntu"
vncserver -kill :1
umount $mnt/dev/pts
umount $mnt/proc
umount $mnt/sys
umount $mnt
Right i must be missing something, i cant find the xoom section on the website so have tried your bootubuntu script in my folder but it still fails.
Can you post me a link to the xoom section of the site please so i can start over in case i missed something earlier in the process?
Thanks
right im missing something, even tried this setup here;
http://trsohmers.com/2011/03/06/how-to-run-ubuntu-on-the-motorola-xoom/
and still no luck. I have a rooted device but its almost as if the scripts are not running as root, i get permission denied messages when chmod 4777 and that shouldnt happen as root.
Im running 1.17 of busybox, not that it should matter. I am getting sick of this not working, no idea why, thinking i might have to bin vegacomb to at least work out where root might work (ie a simpler rom).
I can't remember the exact process, but I do remember getting this. I think I was missing the root login. Are you running these command as root? I think you have to use
su
Click to expand...
Click to collapse
. I haven't done this for quite some time so can't be 100% certain.
Heya, sorry it's been a while since I've been on the forums, it seems like something has more than likely gone wrong when you ran the ubuntu.sh shell script, can you post the output?
Sent from my X10 using XDA App
Not critical but I'd like to know how to do this. Mounted as /dev/block/loop0 /cust
#mount -o remount,rw /dev/block/loop0 /cust fails. A loop is really a virtual or pseudo device. Looks like this was done in the Movida Gingerbread mod with a "losetup" to prevent hacking.
Any ideas? Anyone?
TIA
OOPS should have mentioned that any effort to disassociate the device "losetup -d" yields a "Device or resource busy" which, I suspect, is the result of it being attached to a block device. Ugh!
eyeconic said:
Not critical but I'd like to know how to do this. Mounted as /dev/block/loop0 /cust
#mount -o remount,rw /dev/block/loop0 /cust fails. A loop is really a virtual or pseudo device. Looks like this was done in the Movida Gingerbread mod with a "losetup" to prevent hacking.
Any ideas? Anyone?
TIA
OOPS should have mentioned that any effort to disassociate the device "losetup -d" yields a "Device or resource busy" which, I suspect, is the result of it being attached to a block device. Ugh!
Click to expand...
Click to collapse
Make sure you get some help from here:
http://forum.xda-developers.com/showthread.php?t=1556019
Hi,
I'm new to Android, so please bear with me. I just recently picked up a Nexus 4 to play with. It came with 4.2 on it, and I have done the OTA updates to 4.3 and then 4.4. I decided to root the device and followed the instructions here. That all seems to work OK and I can get root using adb.
The first thing I tried to do next was change the hostname from android-something to a hostname that I could remember. I did a bunch of searching here and found the following commands suggested:
Code:
getprop net.hostname
setprop net.hostname
If I run these commands, the hostname changes. The problem is once I reboot, the name is back to what it was originally. I even tried remounting /system as rw, as I saw in some other post, and running the command again like this:
Code:
mount -o remount,rw -t ext4 /dev/block/mmcblk0p1 /system
setprop net.hostname NEWNAME
mount -o remount,ro -t ext4 /dev/block/mmcblk0p1 /system
I tried rebooting after that and the name change still doesn't stick. What am I doing wrong?
bigdweeb said:
Hi,
I'm new to Android, so please bear with me. I just recently picked up a Nexus 4 to play with. It came with 4.2 on it, and I have done the OTA updates to 4.3 and then 4.4. I decided to root the device and followed the instructions here. That all seems to work OK and I can get root using adb.
The first thing I tried to do next was change the hostname from android-something to a hostname that I could remember. I did a bunch of searching here and found the following commands suggested:
Code:
getprop net.hostname
setprop net.hostname
If I run these commands, the hostname changes. The problem is once I reboot, the name is back to what it was originally. I even tried remounting /system as rw, as I saw in some other post, and running the command again like this:
Code:
mount -o remount,rw -t ext4 /dev/block/mmcblk0p1 /system
setprop net.hostname NEWNAME
mount -o remount,ro -t ext4 /dev/block/mmcblk0p1 /system
I tried rebooting after that and the name change still doesn't stick. What am I doing wrong?
Click to expand...
Click to collapse
It shouldn't be changed
Anyway, try this https://play.google.com/store/apps/details?id=com.tiranodroid.change.hostname&hl=es
luiseteyo said:
It shouldn't be changed
Anyway, try this https://play.google.com/store/apps/details?id=com.tiranodroid.change.hostname&hl=es
Click to expand...
Click to collapse
Thanks for the reply. I had seen that there were apps for this, but I figured it would work on the cli if an app could do it.
Why do you say it shouldn't be changed? I've never had a device that you weren't supposed to change the name of.
Hi,
I want to use the Asus Xtion Sensor with my Nexus 10 and stock android 4.4.4 on it. The device is rooted.
When I try to run an example app in the shell as normal user, the app is not working. When I run it as root user it works an I get values from the camera. So I got the hint to run
mount -o devmode=0666 -t usbfs none /proc/bus/usb
in the shell as root.
When I run this command i get mount: No such file or directory.
Can somebody tell me why this is not working? May it be, that my kernel does not support the usbfs?
Regards
Karl