[q] update-script and su - Android Q&A, Help & Troubleshooting

Hi,
I am Kit Blackheart, sorry this is my very first post here at XDA, hope you all are able to bear with my noob-ness
anyways,
I am building a custom stock-based rom for the lge google NEXUS 5, I am having some issues with the update-script part though...
*using flashable zips.
the problem is...i am trying to get the system to run a script, using run_program, but the binary requires SU, and it doesnt work when i run su through run_program inside the script itself....and it has to run the su command before running the script..
but even when i execute the SU binary before INSIDE the script *INSTEAD OF USING RUN_PROGRAM INSIDE THE UPDATE-SCRIPT , it doesnt work!
i have already chmodded both, the binary, the script and their dependencies...
and i know that this is the problem because the rom boots fine and i can execute the script perfectly from terminal emulator as long as i go SU before running it...
also can someone explain why many binaries just dont run or give any output when i run them with su?
does anyone have any idea?...x.x *sorry for being a noob...
also....just saying...i shall post the rom here in xda later! expect me again! xD

Related

[DEV][Q] Adding root / su permissions to AOSP

I've been building from AOSP for a few weeks now and have a decent product, but there's a couple things that I have yet to work out.
First is adding root permissions (i.e. changing the permissions to su) from source. Currently, I have pulled this[URL] code from ChainsDD's github into my tree and added the Superuser.apk via my [URL="http://github.com/rmgeren/android_vendor_rmg/blob/master/products/rmg_passion.mk"]vendor file. Some things work, others don't. Rommanager seems to be fine, but Titanium Backup isn't. I think the problem is that su is installed into /system/bin but not xbin. When I use dsixda's rom kitchen it installs to both places and sets the permissions for su in my update-script.
Second part is more of a "like to have." I make a nice ROM, install it via RomManager (like everyone should!) and, as soon as I boot, I'm back into RomManager installing the custom recovery image.
Here's the question part:
How do I get su to install to /system/bin with a symlink to /system/xbin?
Can I just pull koush's recovery image source into my build and have a nice, custom recovery?
Is it better to just somehow not build the recovery image? How would I make that happen?
RMGeren said:
I've been building from AOSP for a few weeks now and have a decent product, but there's a couple things that I have yet to work out.
First is adding root permissions (i.e. changing the permissions to su) from source. Currently, I have pulled this[URL] code from ChainsDD's github into my tree and added the Superuser.apk via my [URL="http://github.com/rmgeren/android_vendor_rmg/blob/master/products/rmg_passion.mk"]vendor file. Some things work, others don't. Rommanager seems to be fine, but Titanium Backup isn't. I think the problem is that su is installed into /system/bin but not xbin. When I use dsixda's rom kitchen it installs to both places and sets the permissions for su in my update-script.
Second part is more of a "like to have." I make a nice ROM, install it via RomManager (like everyone should!) and, as soon as I boot, I'm back into RomManager installing the custom recovery image.
Here's the question part:
How do I get su to install to /system/bin with a symlink to /system/xbin?
Can I just pull koush's recovery image source into my build and have a nice, custom recovery?
Is it better to just somehow not build the recovery image? How would I make that happen?
Click to expand...
Click to collapse
For the symlink, just add the following to your updater-script (assuming you're using a binary update) immediately after you extract the system partition.
Code:
symlink("../xbin/su", "/system/bin/su");
If you include a recovery image in your build you will overwrite the users' recovery image which isn't such a good idea for a rom... I'd leave that one alone to be honest. And problems writing the image and you could bork their phone. It's easy though, just create the .img, put it in the root of your update zip and install it using your updater-script as such:
Code:
assert(package_extract_file("recovery.img", "/tmp/recovery.img"),
write_raw_image("/tmp/recovery.img", "recovery"),
delete("/tmp/recovery.img"));
I don't understand your third question sorry...
Thanks for the response! I actually solved the problem by including busybox as a pre built package and pulling the su source from chainsdd
Before, I was including the binary su
By compiling from his source, it installs the symlink correctly.
Sent from my Nexus One using XDA App

[Q] How to Add Root to Flashable Rom?

Ok, so I must admit I am still learning stuff. I have a deodexed KA5 that I would like to post but have been unable to add root to it. I have the su binary in /system/bin and the superuser.apk in /system/app, but when I flash the rom in recovery I get an su symlink error and the installation aborts. Any help would be appreciated. Thank you.
I may not be able to help, but if you post it... we can download and look in there.
I think I might have got it figured out. It has to do with how the update-script is set up and they weren't matching up. Gonna try repacking this and giving it another go. Really want to get this out to ppl.
Yay it boots!
is it odexed or deodexed?
Also, you need the su binary in /system/bin but it also needs to symlink to /system/xbin.
If you're doing an odexed rom, the recent releases haven't had enough room to add root and install busy box and keep everything the same. So you'll need to remove some bloat from the system file (which you can add to the data file) in order to have root with busy box.

Method to install root for Honeycomb

Check this thread for updated and improved information, many thanks to j4mm3r
http://forum.xda-developers.com/showthread.php?t=953110
Credit goes to NuroSlam for coming up with a working method. This requires a functioning adb connection. Using this version of su is not as secure because it will not activate Superuser for your permission to grant root access. In fact, it can work without Superuser.apk installed at all. Hopefully we will soon have an updated su or maybe the next version of Honeycomb will be prerooted. First download the following files:
1. su http://www.magicandroidapps.com/su.zip
2. Superuser.apk http://bit.ly/su2361ef
3. busybox http://busybox.net/downloads/busybox-1.18.2.tar.bz2
Extract the above files using your favourite program
Using adb, install all three files to /data/local:
adb push su /data/local
adb push Superuser.apk /data/local
adb push busybox /data/local
Use adb remount to open the /system directory
adb remount
Use adb shell to move files
adb shell
cd /data/local
cat Superuser.apk > /system/app/Superuser.apk
cat su > /system/bin/su
cat busybox /system/xbin/busybox
Symlink su and set permissions:
ln -s /system/bin/su /system/xbin/su
chmod 06755 /system/bin/su
Typing su should now work
su
su: access granted, courtesy of www.magicdroidapps.com
Install busybox
exit from adb shell and using a terminal application (i.e Root Explorer or Better Terminal Emulator) on the nook,
su
busybox --install -s /system/xbin
That should do it, works with Root Explorer, Titanium Backup, LCD Density, Quick Boot and SetCPU.
Good Luck
really? That simple? Root was the only reason i haven't jumped on the Honeycomb train. This may change my mind.
I tried this on the 2gb sd image got root. But after I rebooted root was gone.
I noticed su is in /system/bin rather than /system/xbin on the Froyo image. Any reason?
Homer
anbradle said:
I tried this on the 2gb sd image got root. But after I rebooted root was gone.
Click to expand...
Click to collapse
Check your steps, especially permissions and the symlink. Works consistently on reboot for me.
Homer_S_xda said:
I noticed su is in /system/bin rather than /system/xbin on the Froyo image. Any reason?
Homer
Click to expand...
Click to collapse
I couldn't get it to work for me without installing in /system/bin and using a symlink to /system/xbin
chhaggerty said:
It wouldn't work for me without installing in /system/bin and using a symlink to /system/xbin
Click to expand...
Click to collapse
It should work anywhere in the default PATH as long as it's got the full permissions (7655) set. I've only got one in xbin wih no symlink and all has been well for the superuser app...
[email protected]:/system/bin # echo $PATH
echo $PATH
/sbin:/vendor/bin:/system/sbin:/system/bin:/system/xbin
[email protected]:/system/bin # ls -l su
ls -l su
su: No such file or directory
[email protected]:/system/bin # ls -l /system/xbin/su*
ls -l /system/xbin/su*
-rwSr-sr-t root root 76232 2011-02-04 09:08 su
-rwSr-sr-t root root 76232 2009-07-31 19:08 su-magic
-rwSr-sr-t root root 26264 2010-08-10 06:52 su-new
-rwSr-sr-t root root 68340 2011-01-31 11:22 su-org
chhaggerty said:
Credit goes to NuroSlam for coming up with a working method. This requires a functioning adb connection. First download the following files:
1. su http://www.magicandroidapps.com/su.zip
2. Superuser.apk http://bit.ly/su2361ef
3. busybox http://busybox.net/downloads/busybox-1.18.2.tar.bz2.
Good Luck[/B]
Click to expand...
Click to collapse
i might take credit for gaining root, but the rest is all you
Thanks! I couldn't really follow the part with installing busybox. Was I supose to make the busybox binary? Anyway, I just let titanium backup install busybox for me by clicking the "Problems?" button.
Just tried Root Explorer and it's working great. Nice being able to quickly edit the build.prop file. Upped the dalvik heap size to 64mb and messing with LCD density.
Thanks again!
Nathan
nswenson said:
Thanks! I couldn't really follow the part with installing busybox. Was I supose to make the busybox binary? Anyway, I just let titanium backup install busybox for me by clicking the "Problems?" button.
Just tried Root Explorer and it's working great. Nice being able to quickly edit the build.prop file. Upped the dalvik heap size to 64mb and messing with LCD density.
Thanks again!
Nathan
Click to expand...
Click to collapse
Running busybox from terminal will install all the busybox commands in /system/xbin which should make them available when using adb.
Just a suggestion...
Making a batch file with the command and packing everything in 1 zip makes it a lot easier for most people and reduces the chances of people forgetting a step.
You were right I tried again and now I am rooted after reboot. Thanks
jleecong said:
Just a suggestion...
Making a batch file with the command and packing everything in 1 zip makes it a lot easier for most people and reduces the chances of people forgetting a step.
Click to expand...
Click to collapse
Okay...
I am running HC (v2) off a 8gb sd card.
So do I just do these steps to gain root or do I need to partition the sd card first?
Thanks
Note to the OP, this method isnt exactly quite the same as using the "su" from the SuperUser app would be. This is just a modified "su" binary from the AOSP build which bypasses the check for uid AID_SHELL. Typically, the su shipped with Android only allows root access if invoked via "adb shell".
Now, although this modified binary is quite ok and will get you on the way working with all the Apps that require root access, but it will leave your system unsecure.
You see the guys who developed SuperUser have a hook inside the "su" binary which invokes the SuperUser activity which allows the user to allow/disallow/track other applications' root requests and usage.
So my advice is to be really careful and understand what you are doing if you decide to install this.
I'm gonna try and recompile ChainsDD's SuperUser and see if I can remove its dependency on mktemp.
EDIT: There is no need to push the SuperUser.apk, the modified su has no relation with it and it will work anyways.
j4mm3r said:
Note to the OP, this method isnt exactly quite the same as using the "su" from the SuperUser app would be. This is just a modified "su" binary from the AOSP build which bypasses the check for uid AID_SHELL. Typically, the su shipped with Android only allows root access if invoked via "adb shell".
Now, although this modified binary is quite ok and will get you on the way working with all the Apps that require root access, but it will leave your system unsecure.
You see the guys who developed SuperUser have a hook inside the "su" binary which invokes the SuperUser activity which allows the user to allow/disallow/track other applications' root requests and usage.
So my advice is to be really careful and understand what you are doing if you decide to install this.
I'm gonna try and recompile ChainsDD's SuperUser and see if I can remove its dependency on mktemp.
EDIT: There is no need to push the SuperUser.apk, the modified su has no relation with it and it will work anyways.
Click to expand...
Click to collapse
agreed, i was just going for root myslef
j4mm3r said:
I'm gonna try and recompile ChainsDD's SuperUser and see if I can remove its dependency on mktemp.
EDIT: There is no need to push the SuperUser.apk, the modified su has no relation with it and it will work anyways.
Click to expand...
Click to collapse
In
http://howto.ccroms.net/android_project/build/mod/root
I would have though that the purpose of the changes, specifically;
LOCAL_FORCE_STATIC_EXECUTABLE := true
LOCAL_STATIC_LIBRARIES := libc
Were what should resolve the _mktemp not found?
j4mm3r said:
Note to the OP, this method isnt exactly quite the same as using the "su" from the SuperUser app would be. This is just a modified "su" binary from the AOSP build which bypasses the check for uid AID_SHELL. Typically, the su shipped with Android only allows root access if invoked via "adb shell".
Now, although this modified binary is quite ok and will get you on the way working with all the Apps that require root access, but it will leave your system unsecure.
You see the guys who developed SuperUser have a hook inside the "su" binary which invokes the SuperUser activity which allows the user to allow/disallow/track other applications' root requests and usage.
So my advice is to be really careful and understand what you are doing if you decide to install this.
I'm gonna try and recompile ChainsDD's SuperUser and see if I can remove its dependency on mktemp.
EDIT: There is no need to push the SuperUser.apk, the modified su has no relation with it and it will work anyways.
Click to expand...
Click to collapse
Howard from MagicAndroidApps.com noted this on the original Honeycomb thread. I'll update the OP to make this clear. Thanks.
So once we acquire root, there is nothing to shield apps or commands from performing root without the users knowledge?
Edit: That does sound correct the way i typed it, hope you guys understand what i'm trying to convey
Mikey1022 said:
So once we acquire root, there is nothing to shield apps or commands from performing root without the users knowledge?
Edit: That does sound correct the way i typed it, hope you guys understand what i'm trying to convey
Click to expand...
Click to collapse
yes, at the stands, its just root access. granted i had my own reasons for this

[Q] Installing Ubuntu: file permission issue

I've been attempting to install Ubuntu on my Transformer Prime, using the guide included in Ubuntu Installer Free, and I seem to have run into a bit of a snag.
I've followed all the instructions, and I have the Ubuntu files on the /sdcard/ubuntu/ as instructed, but the shell script can't run because it doesn't have execute permissions, and I can't get them changed.
Whenever I run chmod it just ignores the command, and the file permissions stay the same. Being su doesn't seem to make any difference either. I've tried several file managers but none of them seem to have the ability to change file permissions either.
I have a Transformer Prime, unlocked, running the Primeval rooted stock ROM, if that helps. I have Superuser and I even installed busybox from the app on the market, in case maybe that was the issue.
Anyone have any idea what's going on here? Does the Linuxforandroid installer work any better maybe?
J Arcane said:
I've been attempting to install Ubuntu on my Transformer Prime, using the guide included in Ubuntu Installer Free, and I seem to have run into a bit of a snag.
I've followed all the instructions, and I have the Ubuntu files on the /sdcard/ubuntu/ as instructed, but the shell script can't run because it doesn't have execute permissions, and I can't get them changed.
Whenever I run chmod it just ignores the command, and the file permissions stay the same. Being su doesn't seem to make any difference either. I've tried several file managers but none of them seem to have the ability to change file permissions either.
I have a Transformer Prime, unlocked, running the Primeval rooted stock ROM, if that helps. I have Superuser and I even installed busybox from the app on the market, in case maybe that was the issue.
Anyone have any idea what's going on here? Does the Linuxforandroid installer work any better maybe?
Click to expand...
Click to collapse
You need to run it like this:
sh ubuntu.sh
...replace ubuntu.sh with the actual name of your shell script.
I don't think /sdcard allows the exec bit to be set, therefore you need to call run the script via sh
Hope this helps.

superuser to Rom

So I'm working on a new ROM and i want to add super user put I'm a little pit confused where to put files.. i have multiple files put i don't know where they belong..
of course META-INF is where the commands to install the su from the recovery so here we don't need it..
but i have 3 other files i don't know where to put..
first x86 containing chattr and su
then common containing 99supersudaemon, install-recovery(i think we don't need thid too..),
and superuser.apk(which of course belongs to system/app..
finally we have arm which contains chattr and su too! so any one can help me there?
the zip is the latest su 1.94..

Categories

Resources