<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Tina System Init 流程分析]]></title><description><![CDATA[<p dir="auto">init 进程是内核启动的第一个用户进程，它根据配置文件决定启动那些程序，比如执行某些脚本、启动 shell、运行用户指定的程序等。init 进程是后续所有进程的发起者，比如init进程启动 /bin/sh 程序后，才能在控制台输入各种命令。</p>
<p dir="auto">init进程的执行程序通常是在/sbin/init，上面讲述的 init 进程的作用只不过是 /sbin/init 这个程序的功能。我们完全可以编写自己的 /sbin/init 程序，或者传入命令行参数“init=xxxx”指定某个程序作为init进程运行。</p>
<p dir="auto">tina系统中目前支持两种init程序：procd init 和 busybox init。下面我们来简单分析下kernel是如何调用第一个用户进程。</p>
<p dir="auto"><img src="/assets/uploads/files/1660525421719-18b9c8f3-50d3-4a71-8527-5af4d091f410-image.png" alt="18b9c8f3-50d3-4a71-8527-5af4d091f410-image.png" class=" img-responsive img-markdown" width="800" height="419" /></p>
<p dir="auto">如上图所示，内核启动的第一个c语言入口函数为 start_kernel(), 在函数中：会设置与体系结构相关的环境变量，初始化控制台，以及挂载根文件系统，最后启动 init 进程。</p>
<p dir="auto">其中的 run_init_process 函数使用它的参数所指定的程序来创建第一个用户进程。</p>
<p dir="auto">（1）如果 ramdisk_execute_command 变量指定了要运行的程序，则启动它。<br />
ramdisk_execute_command 的取值分三种情况，<br />
1）如果命令行参数指定了“rdinit=xxx”，则ramdisk_execute_command等于这个参数指定的程序<br />
2）否则，如果/init程序存在，ramdisk_execute_command就等于“/init”。<br />
3）否则，ramdisk__execute_command为空<br />
（2）如果execute_command变量指定了要运行的程序，启动它。<br />
如果命令行参数指定了"init=..."，则execute_command等于这个参数指定的程序，否则为空<br />
（3）如果 ramdisk_execute_command 和 execute_command 参数都没有指定，则依次执行 ”/sbin/init、/etc/init、/bin/init、/bin/sh“</p>
<p dir="auto">在tina系统中，我们可以通过去修改env.cfg文件 ”rdinit=xxx“ 或 ”init=xxx“ 参数来指定启动的第一个用户进程</p>
<p dir="auto">example：<br />
tina/target/allwinner/azalea-m2ultra/configs下，修改env-3.10.cfg（如果没有这个文件，则到tina/target/allwinner/generic/configs/拷贝一份env-3.10.cfg到tina/target/allwinner/azalea-m2ultra/configs/），修改文件中的”init=‘指定的应用进程’ “即可</p>
]]></description><link>https://bbs.aw-ol.com/topic/1917/tina-system-init-流程分析</link><generator>RSS for Node</generator><lastBuildDate>Sun, 19 Apr 2026 04:43:41 GMT</lastBuildDate><atom:link href="https://bbs.aw-ol.com/topic/1917.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 15 Aug 2022 01:05:45 GMT</pubDate><ttl>60</ttl></channel></rss>