Related
I rooted my hero last night and tried out a few different ROMs but eventually decided to revert to stock and make some manual changes. I used nandroid to restore to just after the root (1.56.651.2). I was able to remove some apps using adb, but the adb remount command fails (permission denied), and I'm unable to push a new bootscreen on to the phone. I also tried a Root File Manager and pre-kitchen as alternatives for the bootscreen, and neither one works. The Root Manager won't paste the files from SD into /system/media/ and pre-kitchen just reboots the phone.
Any suggestions?
Any chance this has something to do with downloading only up to SDK Platform 1.5? I'm at a total loss. I RUU'd my phone, did a clean root at startup using adb shell, and I still have the same problem. The adb remount command won't work, and I can't push anything into the system directory. For what it's worth, when I still had Root Manager installed I was able to toggle RO R/W in any directory with no problem, and I could move files around within the ROM... but I couldn't move anything into it from the SD. I'm new at this, so I have no idea what the problem might be. Anyone else had this problem or have any suggestions?
If anyone else runs into this problem, this solution worked for me:
adb shell
# su
# mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system
# chmod 777 /system (Or any subdirectory you want to push to inside system)
# exit
adb push <local file> <device location>
Restore modified permissions when done.
Though I'm still not sure why this is necessary in place of adb remount.
I'm pretty sure the adb remount command will not work on the stock rom. You should be able to do it with just this command instead:
mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system
dametzg said:
I'm pretty sure the adb remount command will not work on the stock rom. You should be able to do it with just this command instead:
mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system
Click to expand...
Click to collapse
Thanks... didn't realize stock wouldn't accept adb remount. If I use the above line from within shell, that doesn't help me push anything on to the phone though... so I needed to enable global permission and then do the push. Oddly enough I tried the same approach last night using Root Manager, and the transfer from SD still failed, even after I applied 777 to the dir I was trying to modify. The current solution may be kind of tedious, but at least it works.
you really shouldn't do 777 on your filesystem, ANY app can then write to your system, overwrite things, or install malicious code. Just remount manually and you should be able to push anything you want, just remember that w/ the stock rom you also don't get a full busybox either.
I'm not positive, but I would think after you remount, you should be able to "adb push" to /system. I suppose it might be specific to that shell, but I would think not.
You just may have to do it once each time you boot your phone.
Edit - err nevermind... you're having permission errors.... um... change adbd on the phone to run as root? not sure how off the top of my head...
Im working with Andrizoid atm at seeing if we can get some progress on his Ubuntu project. Heres the issue.
Code:
busybox mount -o --bind ./dev/pts /data/local/ubuntu/dev/pts
mount: cannot read /etc/fstab: No such file or directory
In doing a little research I came across this
If there is no entry for /dev/fd0 in my fstab when I issue the command above, mount gets very confused because it doesn't know where to mount the floppy.
Click to expand...
Click to collapse
This come from http://www.tuxfiles.org/linuxhelp/fstab.html which gives a quick breakdown of what the etc/fstab file is. When i went exploring I couldnt find an etc/fstab
Code:
[B]
mount: cannot read /etc/fstab: No such file or directory
[/B]
The thing about Android though...there IS NO /ETC/FSTAB file because its become obsolete.
The init program directly mounts all filesystems and devices using either hard-coded file names or device names generated by probing the sysfs filesystem (thereby eliminating the need for a /etc/fstab file in Android). After device/system files are mounted, init reads /etc/init.rc and invokes the programs listed there (one of the first of which is the console shell).
Click to expand...
Click to collapse
EDIT: Conclusion
After bouncing some ideas around, I've come to the conclusion that it HAS to be a Busybox issue.
An Android specific variation of Busybox should take into account the fact that there isnt an etc/fstab file. The fact that these commands work on other phones leads me to think that its an Eris specific issue. If anyone remembers there were issues when using the Busybox available on the market on the Eris.
Looks like we need a Busybox update
es0tericcha0s said:
Or is there something else I can do?
Click to expand...
Click to collapse
Modify the mount command.
If the version of BusyBox is the Android version, report this issue (as a bug?). If it's the standard Linux BusyBox, the devs may not be interested. Or, if BusyBox is just calling the standard mount command, then it's not a BusyBox issue for them to worry about.
hallstevenson said:
Modify the mount command.
If the version of BusyBox is the Android version, report this issue (as a bug?). If it's the standard Linux BusyBox, the devs may not be interested. Or, if BusyBox is just calling the standard mount command, then it's not a BusyBox issue for them to worry about.
Click to expand...
Click to collapse
I'm using the Android Busybox, and those commands are being executed in an adb shell so I doubt that its calling the standard mount command-it should be calling the (hopefully) Android specific mount command. The things thats confusing me is that those same commands worked just fine for other phones. I dont see why I would get an error and others would have no issue with it?
EDIT:
And if you ave any recommendations for what I should modify the mount command to, let me know.
You mention a reference to /dev/fd0 but I'm 99.9% that's referring to the *nix mount command. The Android/BusyBox version should know better than to look for a floppy drive.
Where is BusyBox maintained ?
I did find a page about an Android ROM from Nov 2008 that mentions
- changed the "mount" symlink to be busybox's mount instead of toolbox's mount
- added an /etc/fstab file that busybox's mount can use, that lists the standard system partitions.
Click to expand...
Click to collapse
Is "mount" in fact an internal adb command ?
hallstevenson said:
You mention a reference to /dev/fd0 but I'm 99.9% that's referring to the *nix mount command. The Android/BusyBox version should know better than to look for a floppy drive.
Where is BusyBox maintained ?
I did find a page about an Android ROM from Nov 2008 that mentions Is "mount" in fact an internal adb command ?
Click to expand...
Click to collapse
The floppy drive reference was just from some background info I pulled on the etc/fstab file. I wasnt actually trying to mount a floppy disk
I have no idea where I would put in a bug report or anything. I know Stericson was the publisher of the BusyBox app thats avaiable on the market, but the one for the Eris is different anyways so idk if he could help.
Im not sure what you mean by your last statement, but mount is not a command that you can use in a shell on its own. You have to use busybox mount ...
If you can show me where you found that rom from I may be able to finish this. I was just talking to a buddy of mine about making my own /etc/fstab and slipping it in just so that the mount command would work. If theres already one put together then thats way less work for me
What I meant by referring to that info you found was that person couldn't have been talking about the Android version. I didn't think you were trying to mount a floppy.
You sure that there's no "adb mount" ? Look here, http://forum.xda-developers.com/showthread.php?t=517874. They refer to "adb shell mount".
Personally, I would just create an /etc/fstab file (I believe it can be empty) and see what happens.
hallstevenson said:
What I meant by referring to that info you found was that person couldn't have been talking about the Android version. I didn't think you were trying to mount a floppy.
You sure that there's no "adb mount" ? Look here, http://forum.xda-developers.com/showthread.php?t=517874. They refer to "adb shell mount".
Personally, I would just create an /etc/fstab file (I believe it can be empty) and see what happens.
Click to expand...
Click to collapse
well ive got an /ect/fstab file that i took from here http://www.android-devs.com/?p=152
Code:
# /etc/fstab: static file system information
#
# file system mount point type options dump pass
/dev/block/mmcblk0p2 / ext2 defaults 1 1
proc /proc proc defaults 0 0
/dev/mmcblk0p1 /media/sdcard vfat defaults 0 0
But thats from a guide about debian on the N1 and the way they are doing it is much different from the method I'm using.
adb shell mount give the error that mount isnt found. it has to be called through busybox-at least in the instance that im using it in
Code:
busybox mount -o --bind /dev/pts /data/local/ubuntu/dev/pts
Can somebody please explain the difference between these two commands.
1) mount -o remount,rw -t yaffs2 /dev/block/mtdblock4 /system
2) mount -o rw,remount -t ext3 /dev/block/mmcblk1p21 /system
In adb I'm using the latter to mount my system dir as rw. I perform what I have to then issue the next command:
mount -o ro,remount -t ext3 /dev/block/mmcblk1p21 /system
But it tells me the device is busy and to try again later. Well it never lets me remount as ro so I just exit, perform a reboot of the phone, and it is back to ro. I can't help think this is not a good way of doing it though. So I was gonna try this other command but don't know what exactly either is or the difference between the two. Anyway some help would be greatly appreciated.
***EDIT***
OK I finally got it to work. Seems you can not enter adb, root, exit adb, then enter adb again, attempt to unroot. The unroot takes and all works until I try to remount as ro, then I get above problem. Now when I root, exit adb, reboot phone, re-enter adb, and attempt to unroot everthing goes as expected with remounting as ro.
So thanks for anybody that at least took a look at the thread. Seems I have it squashed though. If you are wondering I'm testing some things out that is why I'm rooting, and unrooting back to back.
I don't even bother remounting. I just type #reboot. It will remount, by default, when the system starts up.
Str0ntium said:
I don't even bother remounting. I just type #reboot. It will remount, by default, when the system starts up.
Click to expand...
Click to collapse
Yeah that's what I had to resort to, but as I stated. I just can't help think that's not a good practice to get into.
Anyway I found what was causing my trouble and remounting as ro with the previous command works fine.
Sent from my DROIDX using Tapatalk
To answer your question about the difference in the two commands... The yaffs2 or ext3 is the specifying the you're off file system you are mounting as.
overfiendx2 said:
Can somebody please explain the difference between these two commands.
1) mount -o remount,rw -t yaffs2 /dev/block/mtdblock4 /system
2) mount -o rw,remount -t ext3 /dev/block/mmcblk1p21 /system
In adb I'm using the latter to mount my system dir as rw. I perform what I have to then issue the next command:
mount -o ro,remount -t ext3 /dev/block/mmcblk1p21 /system
But it tells me the device is busy and to try again later. Well it never lets me remount as ro so I just exit, perform a reboot of the phone, and it is back to ro. I can't help think this is not a good way of doing it though. So I was gonna try this other command but don't know what exactly either is or the difference between the two. Anyway some help would be greatly appreciated.
***EDIT***
OK I finally got it to work. Seems you can not enter adb, root, exit adb, then enter adb again, attempt to unroot. The unroot takes and all works until I try to remount as ro, then I get above problem. Now when I root, exit adb, reboot phone, re-enter adb, and attempt to unroot everthing goes as expected with remounting as ro.
So thanks for anybody that at least took a look at the thread. Seems I have it squashed though. If you are wondering I'm testing some things out that is why I'm rooting, and unrooting back to back.
Click to expand...
Click to collapse
Sent from my DROIDX using XDA App
SysAdmin-X said:
To answer your question about the difference in the two commands... The yaffs2 or ext3 is the specifying the you're off file system you are mounting as.
Click to expand...
Click to collapse
Thanks for the response. Could you explain in more detail. I don't understand what you mean. Again thank you for taking time with such a noob thing.
Sent from my DROIDX using Tapatalk
mount command line options...
"-t <option>"
"t" stands for "type" and <option> = the linux filesystem type. Linux supports many. "yaffs" = "yet another flash file system" (lot's of tongue-in-cheek developers work on linux). "yaffs2" is v2 of this type of file system.
ext3 is a widely used linux file system.
essentially, the filesystem type tells linux how the data is actually organized on the disk.
the /dev/... that follows is the raw device to associate the filesystem type with.
So I take it that the phone or more directly adb can handle either file system? What of the mtdblock4 and mmcblk1p21 entries? I guess i just don't understand how two so different commands can mount/unmount the same folder. Again thank you very much for your time.
Sent from my DROIDX using Tapatalk
well, adb is just a way to open a terminal session on your phone. Think of it like opening a command prompt on windows. So it is the linux OS on your DX that is processing (handling) the command.
The two commands mount different raw devices (that actually are formatted with different filesystems) to the same "/system" mountpoint. In linux, a mountpoint is kind of like a drive letter would be in dos. What's cool about linux is that you can mount a raw device anywhere in the filesystem tree (where the root is specifiied as "/"). Windows provides that same functionality now with it's ability to map devices to folders.
I believe I'm beginning to wrap my head around it. Been fool'n w/ computer for awhile. I really have no excuse to be so illiterate on linux. I really need to just dig in. Any suggested starting points? I really loved dos and miss it so. lol. So I'm thinking I will probably enjoy linux more.
Sent from my DROIDX using Tapatalk
+5 to sleuth's response! I forgot to kinda expand on the rest of the command. Thnx sleuth for filling in the rest.
Sent from my DROIDX using XDA App
The actual creation of an arm linux chroot image is probably out here on teh internetz somewhere, but I can assist with my mounting shell script (which works).
My image is of a debian arm chroot, and the image filesystem is ext2 (a good idea for fewer writes. ie innately non-journaling), has been used extensively on fw DE .17 and I'm currently trying it out on WW .29 (thank you, miloj).
I would upload my debian img somewhere, but I've actually broken it somewhat (it works for my needs, but it's nonetheless a bit too hacked up to be reliable).
I've modified it somewhat for generalization, some of it is probably wrong and/or redundant, and it IS hackish and ugly, but it works for me (tm).
* the chroot image only need a root account (and probably bash installed, but it usually is)
* You need busybox installed.
* You need to upload your chroot image named linux.img to the internal sdcard in a folder named linux
A shell script to set things up is attached.
What you need to do:
push the install script and run it:
Code:
adb push installlinuxstuff.sh /data/local/
adb shell sh /data/local/installlinuxstuff.sh
Now you can (from adb shell or terminal emulator on device):
Code:
su -
/data/local/mnt/linux.sh
/data/local/mnt/notlinux.sh
Feel free to remove the install script at
/data/local/installlinuxstuff.sh
when you've got it up and running.
Alternative way to run the scripts from adb shell:
Code:
adb shell su -c /data/local/mnt/linux.sh
adb shell su -c /data/local/mnt/notlinux.sh
I usually symlink start and stop (in my case deb and undeb) shell scripts placed in /data/local/mnt in /system/bin (ie shell scripts with 'su -c /data/local/mnt/whatever.sh' in them) for easy start an stop from terminal emulator, and if you've gotten this far you may welcome the small advice. (in other words - don't do this unless you _really_ know what you're doing)
Debian ARMHF or ARMEL?
If you would uploaded it (good place is google drive , sharing as public, as there are no ads or bull**** and the download is extremely fast) I would love to try your image - after modifying your script so it can work on a UHS-1 class MicroSD I want to try running this off of (should give it a little more speed).
zamaditix said:
Debian ARMHF or ARMEL?
If you would uploaded it (good place is google drive , sharing as public, as there are no ads or bull**** and the download is extremely fast) I would love to try your image - after modifying your script so it can work on a UHS-1 class MicroSD I want to try running this off of (should give it a little more speed).
Click to expand...
Click to collapse
Armel (I use the same chroot installation on my phone in a smaller image file (with less stuff installed)). I've got loads of personal stuff all over it and besides - it's somewhat broken. I really don't want to try to fix it.
So I'm working on retracing my steps, creating a clean armhf ext2 image (debian wheezy base installation for now) and redo the mount script, but I can't make any promises on a release date.
Anyhu - there are loads of images (armel, at least) on teh internetz (BT5 and too many ubuntu, for instance).
Just check so our kernel can mount the filesystem.
Edit: if not you can just create a new image file with a filsystem that's mountable and copy the chroot files to it.
So the ideal image for this tablet is armhf? If I wanted to create a Gentoo image, I would go with armv7? I'm just not sure exactly which ARM architecture this tablet is.
EndlessDissent said:
So the ideal image for this tablet is armhf? If I wanted to create a Gentoo image, I would go with armv7? I'm just not sure exactly which ARM architecture this tablet is.
Click to expand...
Click to collapse
The CPU is the Tegra 3 if you want to google it and it is an ARMv7 w/ NEON extensions chip. ARMv7 specification requires hardware fp so naturally it is ARMhf.
Nice to hear, keep us updated on your progress. I'm currently running an armel copy of Ubuntu 12.04 but it has problems with some packages and others are armhf only.
When I run linux.sh, I get an error that /sdcard can't be mounted because it doesn't exist.
Code:
mount: mounting /sdcard on /data/local/mnt/linux/sdcard failed: No such file or directory
I also tried changing the script to mount /mnt/sdcard, but that didn't work either.
EndlessDissent said:
When I run linux.sh, I get an error that /sdcard can't be mounted because it doesn't exist.
Code:
mount: mounting /sdcard on /data/local/mnt/linux/sdcard failed: No such file or directory
I also tried changing the script to mount /mnt/sdcard, but that didn't work either.
Click to expand...
Click to collapse
Yes, it is somewhat hackish, like I wrote. My image has got an sdcard folder (/sdcard) inside of it where I mount /sdcard from android. (Ie chroot and mkdir /sdcard)
followed this:
http://androlinux.com/android-ubuntu-development/how-to-install-ubuntu-on-rooted-transformer-prime/
make sure you have busybox installed der. Or at least the cp command in /system/bin
works well on my TF300T, Yea its not native but im currently configuring it for kernel building ;-D
FlyingPoo said:
followed this:
http://androlinux.com/android-ubuntu-development/how-to-install-ubuntu-on-rooted-transformer-prime/
make sure you have busybox installed der. Or at least the cp command in /system/bin
works well on my TF300T, Yea its not native but im currently configuring it for kernel building ;-D
Click to expand...
Click to collapse
Why does the mount script remount a non-existing block device with an ancient (according to android) filesystem?
Code:
mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system
Edit: I read all the scripts, and they all mount that crap. It's not made for transformers, and on the android device it's made for it leaves /system mounted rw after you've run it, and WHEN run (installed) it modifies too much in /system/bin
Code:
# At first it copies loads of crap to /system/bin, and then:
cd /system/bin/
chmod 4777 *
It's not even "hackish" - it's just... wrong...
Will loop1 work every mount?
Code:
mknod /dev/loop1 b 7 0
losetup /dev/block/loop1
I'm almost only asking, since this thread was supposed to be about scripts?
gasingvar said:
Yes, it is somewhat hackish, like I wrote. My image has got an sdcard folder (/sdcard) inside of it where I mount /sdcard from android. (Ie chroot and mkdir /sdcard)
Click to expand...
Click to collapse
Thanks. I created /sdcard, and it works almost perfectly now. However, mounting devpts at /dev/pts doesn't seem to work. I replaced that line with
Code:
mount --bind /dev $mnt/dev
and it seems to work fine. Is there anything wrong with my method?
/dev/void said:
Why does the mount script remount a non-existing block device with an ancient (according to android) filesystem?
Code:
mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system
Edit: I read all the scripts, and they all mount that crap. It's not made for transformers, and on the android device it's made for it leaves /system mounted rw after you've run it, and WHEN run (installed) it modifies too much in /system/bin
Code:
# At first it copies loads of crap to /system/bin, and then:
cd /system/bin/
chmod 4777 *
It's not even "hackish" - it's just... wrong...
Will loop1 work every mount?
Code:
mknod /dev/loop1 b 7 0
losetup /dev/block/loop1
I'm almost only asking, since this thread was supposed to be about scripts?
Click to expand...
Click to collapse
I'm assuming you're talking about the link in the post you quoted, even though you seem to be referencing the OP's use of the word "hackish". The script in the OP doesn't do any of that stuff. It just creates a few directories in /data/local/mnt/ and writes the mount/unmount scripts, which themselves only un/mount appropriate directories for the tablet. As for your question, I'm not nearly experienced enough to answer it. Sorry.
EndlessDissent said:
Thanks. I created /sdcard, and it works almost perfectly now. However, mounting devpts at /dev/pts doesn't seem to work. I replaced that line with
Code:
mount --bind /dev $mnt/dev
and it seems to work fine. Is there anything wrong with my method?
Click to expand...
Click to collapse
AFAIK your mount seems to be more complete, ie more android hardware goodies accessable from the chroot environment. However - that means more things possibly going wrong (like writing to a device who's critical to the android environment).
Personally I'd try to find what "hardware goodies" and whatnot I'd need to get the chroot environment working optimally, and not mount ALL of /dev.
EndlessDissent said:
I'm assuming you're talking about the link in the post you quoted, even though you seem to be referencing the OP's use of the word "hackish". The script in the OP doesn't do any of that stuff. It just creates a few directories in /data/local/mnt/ and writes the mount/unmount scripts, which themselves only un/mount appropriate directories for the tablet. As for your question, I'm not nearly experienced enough to answer it. Sorry.
Click to expand...
Click to collapse
Yes, and the OP is very honest about his script(s) being "hackish", which I interpret to mean 'not optimal, possibly redundant but working', all of which it is (and I applaud the early release, since for instance I could get things rolling), but the ubuntu image installation and mounting scripts from the other poster ( whom I was addressing ) are plain faulty.
I am looking for a armhf build of ubuntu or debian that I can chroot (newer the better), if anyone knows of such a build that would be fantastic but if not does anyone know of an easy to follow guide to compile such a thing?
I found two pretty good guides. I mostly followed THIS ONE, but I found that it doesn't mount enough before "first boot", so what I did was follow the guide until the point where you move the image to the tablet. Then I ran the OP's installlinux.sh script, and then the mount script. However, the mount/unmount scripts need to be edited before using them. Comment out the sdcard line and probably the devpts line (mounting devpts didn't work; Bash complained that devpts didn't exist; I had to replace it with the line I mentioned a few posts above, but as /dev/void says, it could be problematic, so be careful). Mount the image, make the /sdcard directory, exit, unmount, and edit the scripts again to mount/unmount /sdcard.
Next time you enter the chroot, feel free to run the
Code:
sh /debootstrap/debootstrap --second-stage
command to build the image, and follow the linked guide until the next time it tells you to exit the session (NOTE: The second echo "whatever" > sources.list command is wrong; it should be echo "whatever" >> sources.list; Also, remember to replace "squeeze" with the appropriate Debian version, in my case, "testing"). Instead of exiting right after the apt-get update, I'd recommend playing around with the chroot and configuring whatever apps you install. You can just use the OP's scripts now and ignore the script in the linked guide.
When the guide I linked above gets to this line:
Code:
sudo debootstrap --verbose --arch armel --foreign squeeze /mnt/squeeze/ http://ftp.debian.org/debian
just replace armel with armhf, and if you want a testing image, replace squeeze with testing.
Sorry I'm not attaching my image. I made it gigantic (5GB), so I don't really have anywhere to store it, and you probably wouldn't want to download a file that big. Plus, it already has Openbox and a bunch of other things you probably don't want installed. I'm assuming you'd want GNOME or KDE instead.
I'm using Raspian on a AML-S905X-CC Raspberrypi look a like. I am have some issues mounting Windows share. If I enter manually the following I can mount Windows.
sudo mount //192.168.4.32/c /home/tom/ShareFile -t cifs -o username=XXX,password=YYY
I would like this to occur on boot or at least be an item I can click on to enable mounting Windows share. I've tried using /etc/fstab but cannot get it to to perform.
Any ideas appreciated.
Thanks.