⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bring_up.html

📁 Android Porting Guide
💻 HTML
📖 第 1 页 / 共 2 页
字号:
on &lt;trigger&gt;&nbsp; &lt;command&gt;&nbsp; &lt;command&gt;&nbsp; &lt;command&gt;</pre><p>Services</p><p>Services are programs that init launches and (optionally) restartswhen they exit. </p><p>Services take the form of:</p><pre class="prettify">  service &lt;name&gt; &lt;pathname&gt; [ &lt;argument&gt; ]*&nbsp; &lt;option&gt;&nbsp; &lt;option&gt;&nbsp; ...</pre><p>Options</p>  <p> Options are modifiers to services that affect how and when initruns a service. Options are described in the table below:</p><table>  <tr>    <th scope="col">Option</th><th scope="col">Description</th></tr>  <tr>    <td><code>disabled</code></td>    <td>This service will not automatically start with its class. It must be explicitly started by name.</td>  </tr>  <tr>    <td><code>socket &lt;type&gt; &lt;name&gt; &lt;perm&gt; [ &lt;user&gt; [ &lt;group&gt; ] ]</code></td>    <td> Create a unix domain socket named <code>/dev/socket/&lt;name&gt;</code> and pass its fd to the launched process. Valid <code>&lt;type&gt;</code> values include <code>dgram</code> and <code>stream</code>. <code>user</code> and <code>group</code> default to 0.</td>  </tr>  <tr>    <td><code>user &lt;username&gt;</code></td>    <td>Change to username before exec'ing this service. Currently defaults to root.</td>  </tr>  <tr>    <td><code>group &lt;groupname&gt; [ &lt;groupname&gt; ]*</code></td>    <td> Change to groupname before exec'ing this service. &nbsp;Additional&nbsp; groupnames beyond the first, which is required, are used to set additional groups of the process (with <code>setgroups()</code>). Currently defaults to root.</td>  </tr>  <tr>    <td><code>capability [ &lt;capability&gt; ]+</code></td>    <td>Set linux capability before exec'ing this service</td>  </tr>  <tr>    <td><code>oneshot</code></td>    <td>Do not restart the service when it exits.</td>  </tr>  <tr>    <td><code>class &lt;name&gt;</code></td>    <td>Specify a class name for the service. &nbsp;All services in a named class must start and stop together. A service is considered of class &quot;default&quot; if one is not specified via the class option.</td>  </tr></table>  <p>  Triggers</p>  <p>Triggers are strings used to match certain kinds of events that cause an action to occur.  </p>  <table>    <tr>      <th scope="col">Trigger</th>      <th scope="col">Description</th>    </tr>    <tr>      <td><code>boot</code></td>      <td>This is the first trigger that occurs when init starts (after <code>/init.conf</code> is loaded).</td>    </tr>    <tr>      <td><code>&lt;name&gt;=&lt;value&gt;</code></td>      <td>Triggers of this form occur when the property <code>&lt;name&gt;</code> is set to the specific value <code>&lt;value&gt;</code>.</td>    </tr>    <tr>      <td><code>device-added-&lt;path&gt;<br />  device-removed-&lt;path&gt;</code></td>      <td>Triggers of these forms occur when a device node is added or removed.</td>    </tr>    <tr>      <td><code> service-exited-&lt;name&gt;</code></td>      <td>Triggers of this form occur when the specified service exits.</td>    </tr>  </table>  <p><br />  Commands</p>  <table>    <tr>      <th scope="col">Command</th>      <th scope="col">Description</th>    </tr>    <tr>      <td><code>exec &lt;path&gt; [ &lt;argument&gt; ]*</code></td>      <td>Fork and execute a program (<code>&lt;path&gt;</code>). This will block until the program completes execution. Try to avoid exec. Unlike the <code>builtin</code> commands, it runs the risk of getting init &quot;stuck&quot;.</td>    </tr>    <tr>      <td><code>export &lt;name&gt; &lt;value&gt;</code></td>      <td>Set the environment variable <code>&lt;name&gt;</code> equal to <code>&lt;value&gt;</code> in the global environment (which will be inherited by all processes started after this command is executed).</td>    </tr>    <tr>      <td><code>ifup &lt;interface&gt;</code></td>      <td>Bring the network interface <code>&lt;interface&gt;</code> online.</td>    </tr>    <tr>      <td><code>import &lt;filename&gt;</code></td>      <td> Parse an init config file, extending the current configuration.</td>    </tr>    <tr>      <td><code>hostname &lt;name&gt;</code></td>      <td>Set the host name.</td>    </tr>    <tr>      <td><code>class_start &lt;serviceclass&gt;</code></td>      <td>Start all services of the specified class if they are not already running.</td>    </tr>    <tr>      <td><code>class_stop &lt;serviceclass&gt;</code></td>      <td>Stop all services of the specified class if they are currently running.</td>    </tr>    <tr>      <td><code>domainname &lt;name&gt;</code></td>      <td>Set the domain name.</td>    </tr>    <tr>      <td><code>insmod &lt;path&gt;</code></td>      <td>Install the module at <code>&lt;path&gt;</code>.</td>    </tr>    <tr>      <td><code>mkdir &lt;path&gt;</code></td>      <td>Make a directory at <code>&lt;path&gt;</code>.</td>    </tr>    <tr>      <td><code>mount &lt;type&gt; &lt;device&gt; &lt;dir&gt; [ &lt;mountoption&gt; ]*</code></td>      <td>Attempt to mount the named device at the directory <code>&lt;dir&gt;</code>         <code>&lt;device&gt;</code>. This may be of the form mtd@name to specify a mtd block device by name.</td>    </tr>    <tr>      <td><code>setkey</code></td>      <td>- currenlty undefined - </td>    </tr>    <tr>      <td><code>setprop &lt;name&gt; &lt;value&gt;</code></td>      <td>Set system property <code>&lt;name&gt;</code> to <code>&lt;value&gt;</code>.</td>    </tr>    <tr>      <td><code> setrlimit &lt;resource&gt; &lt;cur&gt; &lt;max&gt;</code></td>      <td>Set the rlimit for a resource.</td>    </tr>    <tr>      <td><code>start &lt;service&gt;</code></td>      <td>Start a service running if it is not already running.</td>    </tr>    <tr>      <td><code> stop &lt;service&gt;</code></td>      <td>Stop a service from running if it is currently running.</td>    </tr>    <tr>      <td><code>symlink &lt;target&gt; &lt;path&gt;</code></td>      <td>Create a symbolic link at <code>&lt;path&gt;</code> with the value <code>&lt;target&gt;</code>.</td>    </tr>    <tr>      <td><code>write &lt;path&gt; &lt;string&gt; [ &lt;string&gt; ]*</code></td>      <td>Open the file at <code>&lt;path&gt;</code> and write one or more strings to it with write(2).</td>    </tr>  </table>  <p>    Properties</p>    Init updates some system properties to provide some insight into<br />    what it's doing:</p>  <table>    <tr>      <th scope="col">Property</th>      <th scope="col">Description</th>    </tr>    <tr>      <td><code>init.action</code></td>      <td>Equal to the name of the action currently being executed or &quot;&quot; if none.</td>    </tr>    <tr>      <td><code>init.command</code></td>      <td>Equal to the command being executed or &quot;&quot; if none.</td>    </tr>    <tr>      <td><code>init.svc.&lt;name&gt;</code></td>      <td>State of a named service (&quot;stopped&quot;, &quot;running&quot;, or &quot;restarting&quot;).</td>    </tr>  </table>  <p>Example init.conf</p>  <p>The following snippet is an incomplete example of the <code>init.conf</code> file, simply meant to give you an idea of what a proper configuration resembles.</p>  <pre class="prettify">on boot  export PATH /sbin:/system/sbin:/system/bin  export LD_LIBRARY_PATH /system/lib  mkdir /dev  mkdir /proc  mkdir /sys  mount tmpfs tmpfs /dev  mkdir /dev/pts  mkdir /dev/socket  mount devpts devpts /dev/pts  mount proc proc /proc  mount sysfs sysfs /sys  write /proc/cpu/alignment 4  ifup lo  hostname localhost  domainname localhost  mount yaffs2 mtd@system /system  mount yaffs2 mtd@userdata /data  import /system/etc/init.conf  class_start defaultservice adbd /sbin/adbd  user adb  group adbservice usbd /system/bin/usbd -r  user usbd  group usbd  socket usbd 666service zygote /system/bin/app_process -Xzygote /system/bin --zygote  socket zygote 666service runtime /system/bin/runtime  user system  group systemon device-added-/dev/compass  start akmdon device-removed-/dev/compass  stop akmdservice akmd /sbin/akmd  disabled  user akmd  group akmd</pre><p><span class="lh2"><a name="androidFooter"></a></span>        </div>      </div>      <!-- end gc-pagecontent -->    </div>    <!-- end gooey wrapper -->  </div>  <!-- end codesearchresults -->  <div id="gc-footer" dir="ltr">    <div class="text"> &copy;2008 Google<!-- - <a href="/">Code Home</a> - <a href="http://www.google.com/accounts/TOS">Site Terms of Service</a> - <a href="http://www.google.com/privacy.html">Privacy Policy</a> - <a href="/more">Site Directory</a> --></div>  </div>  <!-- end gc-footer --></div><!-- end gc-containter --><script src="http://www.google-analytics.com/ga.js" type="text/javascript"></script><script type="text/javascript">  try {    var pageTracker = _gat._getTracker("UA-18071-1");    pageTracker._setAllowAnchor(true);    pageTracker._initData();    pageTracker._trackPageview();   } catch(e) {}</script><div id="jd-build-id"> v0.6 - 25 November 2008</div></div></div></div></body></html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -