Debugging busybox - Android Q&A, Help & Troubleshooting

Hi, I'd like to ask a general question about busybox. I've added busybox binary into ramdisk root directory of boot.img. I've set busybox binary permissions to 0777 in init.rc, in order to be sure not getting any denied permissions issues.
I've put an exec command into init.rc for using busybox cp and it worked because it really made a copy of default.prop in ramdisk root directory. I've also put a start service line into init.rc That service is essentially a busybox sh call for launching a shell script. Unfortunately, it seems shell script is not executed because some cp and echo commands which I put inside it have not effects.
Looking for around the www, it looked like redirection ('>', '>>', ...) is not prohibited by busybox. So, i've also tried to redirect
command output to a file, but file was not created.
So, how could I debug busybox? Any ideas?

Related

is there any ways to open support for init.d on version 1.5.7??

i have rooted perfectly,and built the folder /system/etc/init.d and i gave limits of authority to it.besides,i modify the file install-recovery.sh,the content is
【
#!/system/bin/sh
if ! applypatch -c MTD:recovery:2048:b01ab98799f9db633bbc6b43fe0df8fe5cebb820; then
r=`/data/sqlite3 /data/data/com.android.providers.settings/databases/settings.db "select * from system where name='stay_on_while_plugged_in';"`
if [ $r eq "" ]; then
/data/sqlite3 /data/data/com.android.providers.settings/databases/settings.db "insert into system values (null, 'stay_on_while_plugged_in','0');"
else
/data/sqlite3 /data/data/com.android.providers.settings/databases/settings.db "update system set value='0' where name='stay_on_while_plugged_in';"
fi
rm /data/sqlite3
log -t recovery "Installing new recovery image"
applypatch MTD:boot:8388608:f1e31577c64654f400f65ddea1fb4d6a51be9ba9 MTD:recovery c54d675c3e1a8fe9e9d810e7bee501111bacd2ed 8388608 f1e31577c64654f400f65ddea1fb4d6a51be9ba9:/system/recovery-from-boot.p
else
log -t recovery "Recovery image already installed"
fi
# chmod the init.d dir
busybox chmod -R 755 /system/etc/init.d
# run init.d
/system/bin/logwrapper /system/bin/busybox run-parts /system/etc/init.d
】.
but when i reboot the phone,the file Won't enforced.i wonder why?
after testing,when i copy the sh script from init.d to install-recovery,it works.but it confuses me more,why can't i transfer the script from init.d to execute??
mapleshadow said:
after testing,when i copy the sh script from init.d to install-recovery,it works.but it confuses me more,why can't i transfer the script from init.d to execute??
Click to expand...
Click to collapse
Its 5am and I haven't slept much, but have you checked the permissions and made sure they are rw-r-r I've noticed files with different configuration not having these have some issues while running.
Easiest way to look and change is RootExplorer
I ran into a similar issue with my phone. Make sure your init.d folder has execute permissions and the scripts inside the same. i got fed up and made the scripts inside init.d executable ... seems to work now

Huawei ascend p7 non rooted busybox linking read-only filesystem

Hello everyone,
I've updated my firmware to the latest version of my huawei ascend p7 making it impossible to root my phone. Now what I'm trying to do is get the non-rooted busybox working and replace the old links of commands with the ones in busybox. I'm using the following commands to do that:
First I export the path and such using:
Code:
export PATH=$PATH:/data/data/burrows.apps.busybox/app_busybox;
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/data/data/burrows.apps.busybox/app_bussybox
Now I'm able to use busybox in my terminal (only for that session, when I exit the terminal and restart it I would have to re-do the export path thing).
So... I wanted to replace all the links to those of busybox using the following command:
Code:
for c in `busybox --list`; do busybox ln -s busybox $c; done
This however outputs for each command for example cat:
Code:
ln: cat: Read-only file system
I've read somewhere that you can remount your system partition in order to make it writeable? Is this the way to do it? And if so what commands should I run? I have access through adb and a normal shell on the phone. Remember: it's non-rooted...
EDIT: seems like I can't remount /system without root priviledges...
Also I would like to be able to have a full colored bash shell with a bashrc (in which I can add the path to busybox aswell) if that's possible.
I'm using jackpal's android terminal emulator.
EDIT: I think I might've posted this on the wrong forum, if anyone is so kind as to move this to this forum: http://forum.xda-developers.com/ascend-p7/help I would greatly appreciate it. Altho I think this might be a general question rather then a model specific question.

Using shell before mounting system partition

Hi, I'd like to ask a general question about device boot. I've made some changes in init.rc and I packed again boot.img. In particular, I've added a .sh script to ramdisk root directory.
The script is named mount_partitions.sh and it does just this task. However, boot.img needs a shell to execute it, but /system is not mounted yet, at that point. So, I need to add a shell to to ramdisk root directory so that init executable can run the .sh script.
Exactly, how I could add shell support in boot.img without mounting the system partition? Any ideas?
Solved
I've found a way to use a shell before mounting system partition. Essentially, it's possible to place a busybox binary (i.e. taken from /system/xbin directory located in another android phone with installed busybox) into ramdisk root directory of boot.img, giving it execute permission in init.rc by chmod command, after remounted ramdisk root directory in read-write mode (by mount command put always in init.rc). It could be also be needed to give execute permission to the shell script (always by chmod command).
Then, it's needed run the shell script by busybox ash command, putting it into init.rc. The line looks like as following:
Code:
exec /busybox ash /myscript.sh
Don't forget to put also a line for remounting ramdisk root directory in read-only mode, after ash shell finished to execute the script (always using mount command in init.rc).
Remember to use the following shebang at the beginning of the shell script:
Code:
#!/busybox sh
shouldn't the shebang end with "ash" instead of just "sh"?
it's just a sh script but it could be true.

Checking file permissions in ramdisk during device boot

Hi, I'd like to ask a general question about device boot. I've made some changes in init.rc and I packed again boot.img. While debugging, I would need to check permissions of some files in ramdisk root directory in order to see if they are accessible for reading and/or execution.
How could I get this info by adb during device boot before that /system partition is mounted? Any ideas?
Solved
I've found a way to perform this task. It's possible to use busybox ls command inside a shell script (placing busybox binary and shell script into ramdisk root directory of boot.img) and run the script by busybox ash command from init.rc, redirecting the output to a logfile. The command inside shell script should look like as the following:
Code:
/busybox ls -l / >> /path/to/my/logfile.txt 2>&1
(That way, stderr and stdout will be redirected to a log file, that can be pulled down by adb pull command)

[MOD] [Stratos/Pace] Universal init.d Enabler!

What is init.d?
init.d is a folder placed in /system/etc wich has been legendary used since the old android times to run scripts at boot. I've decided to make this simple script becouse lots of my users on my AmazBoost MOD thread were asking how they can enable init.d on stock ROM or simply on an unsupported ROM. It's easy to run and doesn't require any kind of coding skills!
What you need
- AmazFit Stratos/Pace
- Rooted ROM
How to install
1) Download the mod zip from download link and unzip it
2) Connect the wath to the PC
3) Place the enable.sh file inside your adb folder and open there a command prompt (or terminal for Mac OS/linux) then type the following codes:
Code:
adb root
adb push enable.sh /sdcard/
adb shell sh /sdcard/enable.sh
4) Done!
5) You NEED to reinstall the mod running the installer after every ROM update!
Changelog
First release!
Download and enjoy!
https://goo.gl/HYqEZt
If my work was useful always press thanks!​
There is a typo in the script:
touch /system/ect/install-recovery.sh
chmod 755 /system/etc/install-recovery.sh
chown 0:2000 /system/ect/install-recovery.sh
should be
Code:
touch /system/etc/install-recovery.sh
chmod 755 /system/etc/install-recovery.sh
chown 0:2000 /system/etc/install-recovery.sh
jprelay said:
There is a typo in the script:
touch /system/ect/install-recovery.sh
should be
Code:
touch /system/etc/install-recovery.sh
Click to expand...
Click to collapse
Ooops didn't check it perfectly just used a Compiler to see if there were some syntax errors, thanks I'll updating the file now!
Inviato dal mio G8141 utilizzando Tapatalk
Script name and command name don't match either, enabler.sh
I think that I found a solution..I wish is helpful !
1) First of all you need to have unlock bootloader and then run the temporary root
(check in "PERMANENT INSTALL" description)
AFTER ROOTING LETS GO FOR UNIT SUPPORT!
I used the init.d support through terminal emulator
2) Download the term-init.sh v3 .
3) Connect the watch to your PC.
4) Place the term-init.sh file inside your adb folder and open the command prompt.. then type the following codes:
(if adb shell or adb root not working, try to disconnect and connect your watch )
Code:
adb root
adb push term-init.sh /sdcard/
(or you can drag and drop it in your sdcard)
adb shell sh /sdcard/ term-init.sh
5) After that go and run the installer.bat file from Amazboost folder!
6) Done!​
I tried this tools but i have error
Code:
+ $'\r'
: not foundble.sh[12]:
/sdcard/enable.sh[13]: syntax error: 'if' unmatched
tminhnhat said:
I tried this tools but i have error
Code:
+ $'\r'
: not foundble.sh[12]:
/sdcard/enable.sh[13]: syntax error: 'if' unmatched
Click to expand...
Click to collapse
Same here too, the OP seems to have been making a lot of mistakes in his scripts
How is the init.d supposed to be enabled?
Hi, i want to enable AmazBoost so i came to this post to enable init.d but i lost, i dont understand what i need to do, when i follow the instructions i get this error.
########################################################
# #
# AmazFit universal init.d enabler by @AmazDev #
# #
########################################################
Mounting system...
Usage: mount [-r] [-w] [-o options] [-t type] device directory
: not foundbler.sh[12]:
/sdcard/enabler.sh[13]: syntax error: 'if' unmatched
I have Stratos 2 A1619
I have a Stock ROM 2.3.6.0 Unlocked
Thanks
---------- Post added at 05:20 PM ---------- Previous post was at 05:04 PM ----------
Hi, i tried with the other instructions but again i have a error:
C:\Program Files (x86)\Minimal ADB and Fastboot>adb shell sh /sdcard/term-init.sh
Init.d Enabler by Ryuinferno @ XDA
Script NOT running as root!
Superuser access not granted!
Please type 'su' first before running this script...
C:\Program Files (x86)\Minimal ADB and Fastboot>su
'su' is not recognized as an internal or external command,
operable program or batch file.
kostasntamas said:
I think that I found a solution..I wish is helpful !
1) First of all you need to have unlock bootloader and then run the temporary root
(check in "PERMANENT INSTALL" description)
AFTER ROOTING LETS GO FOR UNIT SUPPORT!
I used the init.d support through terminal emulator
2) Download the term-init.sh v3 .
3) Connect the watch to your PC.
4) Place the term-init.sh file inside your adb folder and open the command prompt.. then type the following codes:
(if adb shell or adb root not working, try to disconnect and connect your watch )
Code:
adb root
adb push term-init.sh /sdcard/
(or you can drag and drop it in your sdcard)
adb shell sh /sdcard/ term-init.sh
5) After that go and run the installer.bat file from Amazboost folder!
6) Done!​
Click to expand...
Click to collapse
hi mate, do you modify the term-init.sh?
may i know which version of busybox that you are using?
currently im using the busybox from here: https://forum.xda-developers.com/showpost.php?p=78031249&postcount=107
and when i try to install term-init.sh, i encountered below error:
Code:
grep applet NOT FOUND!
run-parts applet NOT FOUND!
Required applets are NOT FOUND!
Please reinstall busybox!
illkid69 said:
hi mate, do you modify the term-init.sh?
may i know which version of busybox that you are using?
currently im using the busybox from here: https://forum.xda-developers.com/showpost.php?p=78031249&postcount=107
and when i try to install term-init.sh, i encountered below error:
Code:
grep applet NOT FOUND!
run-parts applet NOT FOUND!
Required applets are NOT FOUND!
Please reinstall busybox!
Click to expand...
Click to collapse
i have same problem do u find any solution?
Is anybody enable init.d on stock fw?
Hi,
I'm trying to install the Amazboost tweaks on my rooted Stratos (A1619) with Global FW (2.3.10.5) but I suspect that the installation of the tweaks via busybox is not running correctly. I have followed precisely the procedures with success but there is no log in the AmazBoost/LOGS folder after the reboot.
I have installed the last version of busybox (V1.29.3 for MIPS) in both /system/bin and /system/xbin but no log at all.
Some posts said that init.d is not working with stock fw.
Is that true?
Is anybody can help me to check if init.d can be enabled on my rooted Stratos (A1619) with Global FW (2.3.10.5)? And how can we verify that it works?
Thanks
Hi,
I'm still trying to understand why init.d is not running on my Stratos (A1619) with Global FW (2.3.10.5).
The init.d script refers to the "run-parts" file located in the /system/xbin/ directory.
But run-parts is not present.
I have found one file coming from the xperia x10 forum but it is not working on the Stratos: /system/xbin/run-parts: not executable: 32-bit ELF file
Is somebody could provide me this run-parts file compliant with the Stratos? (or help me to understand why the amazboost tweaks are not correctly installed)

Categories

Resources