Discussion:
starting zygote from command line (x86)
Zia
2009-02-05 01:40:57 UTC
Permalink
I got myself in a console now after compiling installer img with
zygote service commented out in the init.rc file. Instead I placed /
system/bin/sh service in the init.rc .

After reboot, I got the prompt. On the command line when I attempt to
start zygote (to enter Android UI),
app_process -Xzygote /system/bin --zygote

first I got ANDROID_SOCKET_zygote environment variable error. I fixed
that, and now I am getting error when binding to socket 666. Seems
like i'm missing /dev/socket/zygote. The problem is, I dont know how
to create socket on this command shell now. Another thing could be the
missing socket binder service.

Any ideas or suggestions to recover from this?

Ultimately, I'm planning to enter a console, start zygote to enter
Android UI. On the console I plan to run dropbear or telnetd to
remotely connect to the box.

Thanks,

Zia
--~--~---------~--~----~------------~-------~--~----~
unsubscribe: android-porting+unsubscribe-/***@public.gmane.org
website: http://groups.google.com/group/android-porting
-~----------~----~----~----~------~----~------~--~---
dingerjun
2009-02-05 02:31:40 UTC
Permalink
There is another method to start the zygote from command line.

You could add the lines after the service zygote.
like:
on property:zygote.enable=1
start zygote
on property:zygote.enable=0
stop zygote

and add a line "setprop zygote.enable 0" in front of file /init.rc

----- Original Message -----
From: "Zia" <***@gmail.com>
To: "android-porting" <android-***@googlegroups.com>
Sent: Thursday, February 05, 2009 9:40 AM
Subject: [android-porting] starting zygote from command line (x86)
Post by Zia
I got myself in a console now after compiling installer img with
zygote service commented out in the init.rc file. Instead I placed /
system/bin/sh service in the init.rc .
After reboot, I got the prompt. On the command line when I attempt to
start zygote (to enter Android UI),
app_process -Xzygote /system/bin --zygote
first I got ANDROID_SOCKET_zygote environment variable error. I fixed
that, and now I am getting error when binding to socket 666. Seems
like i'm missing /dev/socket/zygote. The problem is, I dont know how
to create socket on this command shell now. Another thing could be the
missing socket binder service.
Any ideas or suggestions to recover from this?
Ultimately, I'm planning to enter a console, start zygote to enter
Android UI. On the console I plan to run dropbear or telnetd to
remotely connect to the box.
Thanks,
Zia
--~--~---------~--~----~------------~-------~--~----~
unsubscribe: android-porting+***@googlegroups.com
website: http://groups.google.com/group/android-porting
-~----------~--
dingerjun
2009-02-05 02:33:41 UTC
Permalink
When you want to start the zygote, you could input setprop zygote.enable 1 in command line
----- Original Message -----
From: "dingerjun" <***@163.com>
To: <android-***@googlegroups.com>
Sent: Thursday, February 05, 2009 10:31 AM
Subject: [android-porting] Re: starting zygote from command line (x86)
Post by dingerjun
There is another method to start the zygote from command line.
You could add the lines after the service zygote.
on property:zygote.enable=1
start zygote
on property:zygote.enable=0
stop zygote
and add a line "setprop zygote.enable 0" in front of file /init.rc
----- Original Message -----
Sent: Thursday, February 05, 2009 9:40 AM
Subject: [android-porting] starting zygote from command line (x86)
Post by Zia
I got myself in a console now after compiling installer img with
zygote service commented out in the init.rc file. Instead I placed /
system/bin/sh service in the init.rc .
After reboot, I got the prompt. On the command line when I attempt to
start zygote (to enter Android UI),
app_process -Xzygote /system/bin --zygote
first I got ANDROID_SOCKET_zygote environment variable error. I fixed
that, and now I am getting error when binding to socket 666. Seems
like i'm missing /dev/socket/zygote. The problem is, I dont know how
to create socket on this command shell now. Another thing could be the
missing socket binder service.
Any ideas or suggestions to recover from this?
Ultimately, I'm planning to enter a console, start zygote to enter
Android UI. On the console I plan to run dropbear or telnetd to
remotely connect to the box.
Thanks,
Zia
--~--~---------~--~----~------------~-------~--~----~
unsubscribe: android-porting+***@googlegroups.com
website: http://groups.google.com/group/android-porting
-~----------~----~---
Weihua Wu
2009-02-05 03:07:19 UTC
Permalink
The init.rc is not a shell script in normal linux. You have to register the
service in init.rc during Android init. The following line in init.rc is to
create the socket. The socket is created when the init.rc is parsed by
android init.
socket zygote stream 666
Android use that way to create socket for security concern probably.

You could learn more about init.rc from system/core/init/readme.txt

Hope it's helpful.
Weihua(Jackie) Wu
Post by Zia
I got myself in a console now after compiling installer img with
zygote service commented out in the init.rc file. Instead I placed /
system/bin/sh service in the init.rc .
After reboot, I got the prompt. On the command line when I attempt to
start zygote (to enter Android UI),
app_process -Xzygote /system/bin --zygote
first I got ANDROID_SOCKET_zygote environment variable error. I fixed
that, and now I am getting error when binding to socket 666. Seems
like i'm missing /dev/socket/zygote. The problem is, I dont know how
to create socket on this command shell now. Another thing could be the
missing socket binder service.
Any ideas or suggestions to recover from this?
Ultimately, I'm planning to enter a console, start zygote to enter
Android UI. On the console I plan to run dropbear or telnetd to
remotely connect to the box.
Thanks,
Zia
--~--~---------~--~----~------------~-------~--~----~
unsubscribe: android-porting+unsubscribe-/***@public.gmane.org
website: http://groups.google.com/group/android-porting
-~----------~----~----~----~------~----~------~--~---
Zia
2009-02-06 20:32:31 UTC
Permalink
Thanks for your replies. However, so far not much luck here. I got the
zygote socket created in /dev/socket and the environment variable
ANDROID_SOCKET_zygote set to 666.

Now i'm getting

java.lang.RuntimeException: Error binding to local socket '666'
at com.android.internal.os.ZygoteInit.registerZygoteSocket
(ZygoteInit.java:164)

the command line i'm using is
#app_process -Xzygote /system/bin --zygote

and the init.rc is like this

setprop zygote.enable 0

service zygote /system/bin/app_process -Xzygote /system/bin --zygote --
start-system-server
socket zygote stream 666
on property:zygote.enable=1
start zygote
on property:zygote.enable=0
start zygote

----
typing setprop zygote.enable 1 on the command line doesn't do anything
either. What am I missing here now?

Thanks,

-Z
Post by Weihua Wu
The init.rc is not a shell script in normal linux. You have to register the
service in init.rc during Android init. The following line in init.rc is to
create the socket. The socket is created when the init.rc is parsed by
android init.
    socket zygote stream 666
Android use that way to create socket for security concern probably.
You could learn more about init.rc from system/core/init/readme.txt
Hope it's helpful.
Weihua(Jackie) Wu
Post by Zia
I got myself in a console now after compiling installer img with
zygote service commented out in the init.rc file. Instead I placed /
system/bin/sh service in the init.rc .
After reboot, I got the prompt. On the command line when I attempt to
start zygote (to enter Android UI),
app_process -Xzygote /system/bin --zygote
first I got ANDROID_SOCKET_zygote environment variable error. I fixed
that, and now I am getting error when binding to socket 666. Seems
like i'm missing /dev/socket/zygote. The problem is, I dont know how
to create socket on this command shell now. Another thing could be the
missing socket binder service.
Any ideas or suggestions to recover from this?
Ultimately, I'm planning to enter a console, start zygote to enter
Android UI. On the console I plan to run dropbear or telnetd to
remotely connect to the box.
Thanks,
Zia
--~--~---------~--~----~------------~-------~--~----~
unsubscribe: android-porting+unsubscribe-/***@public.gmane.org
website: http://groups.google.com/group/android-porting
-~----------~----~----~----~------~----~------~--~---
Weihua Wu
2009-02-09 03:37:46 UTC
Permalink
What dingerjun wrote is :
on property:zygote.enable=1
start zygote
on property:zygote.enable=0
stop zygote

But yours are
on property:zygote.enable=1
start zygote
on property:zygote.enable=0
start zygote

So I think in your case, the zygote has been started when you run command.
You can check with ps first.
If the zygote is started through command line, other lines after that in
init.rc should be also changed since some depend on the zygote, which is the
most important to start Android.

Why do you need to start that on command line? Did you start zygote
successfully with normal way instead of command line?

Thanks
Jackie Wu
Post by Zia
Thanks for your replies. However, so far not much luck here. I got the
zygote socket created in /dev/socket and the environment variable
ANDROID_SOCKET_zygote set to 666.
Now i'm getting
java.lang.RuntimeException: Error binding to local socket '666'
at com.android.internal.os.ZygoteInit.registerZygoteSocket
(ZygoteInit.java:164)
the command line i'm using is
#app_process -Xzygote /system/bin --zygote
and the init.rc is like this
setprop zygote.enable 0
service zygote /system/bin/app_process -Xzygote /system/bin --zygote --
start-system-server
socket zygote stream 666
on property:zygote.enable=1
start zygote
on property:zygote.enable=0
start zygote
----
typing setprop zygote.enable 1 on the command line doesn't do anything
either. What am I missing here now?
Thanks,
-Z
Post by Weihua Wu
The init.rc is not a shell script in normal linux. You have to register
the
Post by Weihua Wu
service in init.rc during Android init. The following line in init.rc is
to
Post by Weihua Wu
create the socket. The socket is created when the init.rc is parsed by
android init.
socket zygote stream 666
Android use that way to create socket for security concern probably.
You could learn more about init.rc from system/core/init/readme.txt
Hope it's helpful.
Weihua(Jackie) Wu
Post by Zia
I got myself in a console now after compiling installer img with
zygote service commented out in the init.rc file. Instead I placed /
system/bin/sh service in the init.rc .
After reboot, I got the prompt. On the command line when I attempt to
start zygote (to enter Android UI),
app_process -Xzygote /system/bin --zygote
first I got ANDROID_SOCKET_zygote environment variable error. I fixed
that, and now I am getting error when binding to socket 666. Seems
like i'm missing /dev/socket/zygote. The problem is, I dont know how
to create socket on this command shell now. Another thing could be the
missing socket binder service.
Any ideas or suggestions to recover from this?
Ultimately, I'm planning to enter a console, start zygote to enter
Android UI. On the console I plan to run dropbear or telnetd to
remotely connect to the box.
Thanks,
Zia
--~--~---------~--~----~------------~-------~--~----~
unsubscribe: android-porting+unsubscribe-/***@public.gmane.org
website: http://groups.google.com/group/android-porting
-~----------~----~----~----~------~----~------~--~---
Zia
2009-02-10 01:07:38 UTC
Permalink
oh dang it. thanks for spotting that. I will try the fix tonight and
post the results.

The reason I would like to enter commandline mode before UI:
1) to understand how everything stacks up
2) run any sort of SSH/Telnet server and access the box remotely.

-Zia.
Post by dingerjun
on property:zygote.enable=1
   start zygote
on property:zygote.enable=0
   stop zygote
But yours are
          on property:zygote.enable=1
             start zygote
          on property:zygote.enable=0
             start zygote
So I think in your case, the zygote has been started when you run command.
You can check with ps first.
If the zygote is started through command line, other lines after that in
init.rc should be also changed since some depend on the zygote, which is the
most important to start Android.
Why do you need to start that on command line? Did you start zygote
successfully with normal way instead of command line?
Thanks
Jackie Wu
Post by Zia
Thanks for your replies. However, so far not much luck here. I got the
zygote socket created in /dev/socket and the environment variable
ANDROID_SOCKET_zygote set to 666.
Now i'm getting
java.lang.RuntimeException: Error binding to local socket '666'
 at com.android.internal.os.ZygoteInit.registerZygoteSocket
(ZygoteInit.java:164)
the command line i'm using is
#app_process -Xzygote /system/bin --zygote
and the init.rc is like this
setprop zygote.enable 0
service zygote /system/bin/app_process -Xzygote /system/bin --zygote --
start-system-server
      socket zygote stream 666
          on property:zygote.enable=1
             start zygote
          on property:zygote.enable=0
             start zygote
----
typing setprop zygote.enable 1 on the command line doesn't do anything
either. What am I missing here now?
Thanks,
-Z
Post by Weihua Wu
The init.rc is not a shell script in normal linux. You have to register
the
Post by Weihua Wu
service in init.rc during Android init. The following line in init.rc is
to
Post by Weihua Wu
create the socket. The socket is created when the init.rc is parsed by
android init.
    socket zygote stream 666
Android use that way to create socket for security concern probably.
You could learn more about init.rc from system/core/init/readme.txt
Hope it's helpful.
Weihua(Jackie) Wu
Post by Zia
I got myself in a console now after compiling installer img with
zygote service commented out in the init.rc file. Instead I placed /
system/bin/sh service in the init.rc .
After reboot, I got the prompt. On the command line when I attempt to
start zygote (to enter Android UI),
app_process -Xzygote /system/bin --zygote
first I got ANDROID_SOCKET_zygote environment variable error. I fixed
that, and now I am getting error when binding to socket 666. Seems
like i'm missing /dev/socket/zygote. The problem is, I dont know how
to create socket on this command shell now. Another thing could be the
missing socket binder service.
Any ideas or suggestions to recover from this?
Ultimately, I'm planning to enter a console, start zygote to enter
Android UI. On the console I plan to run dropbear or telnetd to
remotely connect to the box.
Thanks,
Zia
--~--~---------~--~----~------------~-------~--~----~
unsubscribe: android-porting+unsubscribe-/***@public.gmane.org
website: http://groups.google.com/group/android-porting
-~----------~----~----~----~------~----~------~--~---

Loading...