Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

executing static program from android init.rc

I want to start a custom program in the init process. I compiled this program statically that run fine from my booted up android stock ROM.

From the android init.rc docs I read that the exec command is what I need.
BTW all I can see in dmesg is that my program exit with code -1 (I can't return that).

init.rc snippet:

on post-fs-data
write /dev/kmsg "launching test"
exec /data/test

All I see in dmesg is this:

<4>[    6.336816] launching test
<6>[    6.336902] init: command 'write' r=0
<6>[    6.337115] init: command 'exec' r=-1

Here you are the executable source code: http://pastebin.com/Hym1APWx


UPDATE

I tried to statically compile and run this program:

int main(){return 0; }

But the result is always command 'exec' r=-1. Maybe user uselen are right, maybe I cannot run executables from /data in the early-boot phase.

like image 822
tux_mind Avatar asked Apr 26 '26 21:04

tux_mind


2 Answers

As christian said, it looks like exec isn't even implemented. I'm beginning to think that a lot of features documented for init.rc aren't implemented. Here's a way you can get your program to launch however.

Instead of running this as an "exec" command, set this up as a service instead.

In your init.rc, or another file included by it:

service my_service /data/test
    class main
    oneshot 

If it's in class main, and not disabled, it should run after /data is mounted.

like image 195
ekthomson Avatar answered Apr 29 '26 11:04

ekthomson


I had the same issue today. In my case the solution was simple: The exec function wasn't implemented yet and contained just a return -1. You should take a look at builtin.c and search for do_exec(). This code is executed when init.rc contains an exec statement.

like image 29
christian Avatar answered Apr 29 '26 12:04

christian



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!