<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh">
	<id>https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=Init</id>
	<title>Init - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=Init"/>
	<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=Init&amp;action=history"/>
	<updated>2026-07-05T11:55:21Z</updated>
	<subtitle>在这个wiki上该页的修订历史</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://arolstar52-zhtest.hf.space/index.php?title=Init&amp;diff=549926&amp;oldid=prev</id>
		<title>imported&gt;AromaTake：​調整內部連結+更新參考來源參數</title>
		<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=Init&amp;diff=549926&amp;oldid=prev"/>
		<updated>2026-03-24T19:10:11Z</updated>

		<summary type="html">&lt;p&gt;調整內部連結+更新參考來源參數&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{copy edit}}&lt;br /&gt;
&lt;br /&gt;
{{noteTA&lt;br /&gt;
|G1 = IT&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{lowercase|title=init}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;init&amp;#039;&amp;#039;&amp;#039;（为{{langx|en|initialization}}的简写）是[[Unix]]和[[类Unix]]系统中用来产生其它所有进程的程序。它以[[守护进程]]的方式存在，其进程号为1。Linux系統在開機時載入[[Linux內核]]後，便由Linux內核載入init程式，由init程式完成餘下的開機過程，比如載入[[執行級別]]，載入服務，啟動Shell/圖形化界面等等。&lt;br /&gt;
&lt;br /&gt;
Unix系列中（如[[UNIX System III|System III]]和[[UNIX System V|System V]]）&amp;#039;&amp;#039;&amp;#039;init&amp;#039;&amp;#039;&amp;#039;的作用，和研究中的[[Unix]]和[[Berkeley Software Distribution|BSD]]衍生版本相比，发生了一些变化。大多数[[Linux发行版]]是和System V相兼容的，但是一些发行版如[[Slackware]]采用的是BSD风格，其它的如[[Gentoo Linux|Gentoo]]是自己定制的。後來[[Ubuntu]]&amp;lt;ref&amp;gt;{{Cite web |url=http://help.ubuntu.com/community/KnowThyUbuntu |title=KnowThyUbuntu |website=Ubuntu Community Help Wiki |accessdate=2009-06-09 |archive-date=2016-03-06 |archive-url=https://web.archive.org/web/20160306194452/https://help.ubuntu.com/community/KnowThyUbuntu |dead-url=no }}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{Cite web |url=http://www.linuxquestions.org/questions/ubuntu-63/since-we-have-no-etcinittab-506281/ |title=since we have no /etc/inittab |website=LinuxQuestions |accessdate=2009-06-09 |archive-date=2009-06-02 |archive-url=https://web.archive.org/web/20090602112101/http://www.linuxquestions.org/questions/ubuntu-63/since-we-have-no-etcinittab-506281/ |dead-url=no }}&amp;lt;/ref&amp;gt;和其他一些發行版採用[[Upstart]]&amp;lt;ref&amp;gt;{{cite web |url=http://www.netsplit.com/2006/08/26/upstart-in-universe/ |title=Upstart in Universe |website=Scott James Remnant |accessdate=2009-09-12 |deadurl=yes |archiveurl=https://web.archive.org/web/20090904110208/http://www.netsplit.com/2006/08/26/upstart-in-universe/ |archivedate=2009-09-04 }}&amp;lt;/ref&amp;gt;來代替&amp;lt;ref&amp;gt;{{Cite web |url=http://linuxplanet.com/linuxplanet/reports/6366/1/ |title=Upstart Plans to Ease Linux Management - Streamlining the init Processes |website=LinuxPlanet |accessdate=2009-06-09 |archive-date=2017-03-14 |archive-url=https://web.archive.org/web/20170314202356/http://www.linuxplanet.com/linuxplanet/reports/6366/1 |dead-url=yes }}&amp;lt;/ref&amp;gt;傳統的init處理程序。至2015年，大部分[[Linux發行版]]都已採用新的[[systemd]]替代[[UNIX System V|System V]]和[[Upstart]]，但[[systemd]]向下相容[[UNIX System V|System V]]。&lt;br /&gt;
&lt;br /&gt;
== BSD风格 ==&lt;br /&gt;
BSD init运行存放于/etc/rc的初始化[[shell脚本]]，然后启动基于文本模式的终端（[[getty (Unix)|getty]]）或者基于图形界面的终端（[[窗口系统]]，如[[X Window System|X]]）。这里没有[[运行模式]]的问题，因为文件rc决定了init如何执行。&lt;br /&gt;
&lt;br /&gt;
值得注意的是，现代的[[BSD]]衍生系统一直支持使用rc.local文件的方式，它将在正常启动过程接近最后的时间以子脚本的方式来执行。这样做减少了整个系统无法启动的风险。然后，第三方软件包可以将它们独立的start/stop脚本安装到一个本地的rc.d目录中（通常这是由[[ports collection]]/[[pkgsrc]]完成的）。[[FreeBSD]]和[[NetBSD]]现在默认使用rc.d，该目录中所有的用户启动脚本，都被分成更小的子脚本，和SysV类似。rcorder通常根据在rc.d目录中脚本之间的依赖关系来决定脚本的执行顺序。&lt;br /&gt;
&lt;br /&gt;
== SysV风格 ==&lt;br /&gt;
System V init检查&amp;lt;nowiki&amp;gt;&amp;#039;/etc/inittab&amp;#039;&amp;lt;/nowiki&amp;gt;文件中是否含有&amp;lt;nowiki&amp;gt;&amp;#039;initdefault&amp;#039;&amp;lt;/nowiki&amp;gt;项。这告诉init系统是否有一个默认[[运行模式]]。如果没有默认的运行模式，那么用户将进入系统控制台，手动决定进入何种运行模式。&lt;br /&gt;
&lt;br /&gt;
=== 运行模式 ===&lt;br /&gt;
[[UNIX System V|System V]]中[[运行模式]]描述了系统各种可能的状态。通常会有8种运行模式，即运行模式0到6和&amp;#039;&amp;#039;S&amp;#039;&amp;#039;或者&amp;#039;&amp;#039;s&amp;#039;&amp;#039;。其中运行模式3为&amp;quot;保留的&amp;quot;运行模式：&lt;br /&gt;
* 0.关机&lt;br /&gt;
* 1.[[单用户模式]]&lt;br /&gt;
* 6.重启&lt;br /&gt;
&lt;br /&gt;
除了模式0,1,6外，每种Unix和Unix-like系统对运行模式的定义可能存在差异。通常在&amp;lt;tt&amp;gt;/etc/inittab&amp;lt;/tt&amp;gt;文件中定义了各种运行模式的工作范围。&lt;br /&gt;
&lt;br /&gt;
目前絕大多數[[Linux發行版]]已經基於新的[[systemd]]，systemd一般不再使用&amp;lt;tt&amp;gt;/etc/inittab&amp;lt;/tt&amp;gt;檔案，也使用新的target取代System V的執行等級，但仍然相容System V的執行等級。若要設定系統預設的執行模式，需要使用&amp;lt;tt&amp;gt;systemctl default targetname.target&amp;lt;/tt&amp;gt;命令。&lt;br /&gt;
&lt;br /&gt;
=== 默认的运行模式 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! 操作系统&lt;br /&gt;
! 默认的运行模式&lt;br /&gt;
|-&lt;br /&gt;
| [[IBM AIX|AIX]]&lt;br /&gt;
| 2&lt;br /&gt;
|-&lt;br /&gt;
| [[Arch Linux]]&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| [[CentOS]]&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| [[Debian GNU/Linux]]&lt;br /&gt;
| 2 &amp;lt;ref name=&amp;quot;#1&amp;quot;&amp;gt;{{Cite web |url=http://www.debianadmin.com/debian-and-ubuntu-linux-run-levels.html |title=Debian and Ubuntu Linux Run Levels |website=Debian Admin |accessdate=2009-06-09 |archive-date=2021-02-01 |archive-url=https://web.archive.org/web/20210201013803/http://www.debianadmin.com/debian-and-ubuntu-linux-run-levels.html |dead-url=no }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [[Gentoo Linux]]&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| [[Mandriva Linux]]&lt;br /&gt;
| 5&lt;br /&gt;
|-&lt;br /&gt;
| [[Mac OS X]]&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| [[Red Hat Linux]] / [[Fedora (作業系統)|Fedora]]&lt;br /&gt;
| 3 or 5&lt;br /&gt;
|-&lt;br /&gt;
| [[Slackware Linux]]&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| [[Solaris]]&lt;br /&gt;
| 3 &amp;lt;ref&amp;gt;{{cite web |url=http://docs.sun.com/app/docs/doc/817-1985/6mhm8o5ru |title=docs.sun.com: System Administration Guide: Basic Administration |accessdate=2011-06-13 |deadurl=yes |archiveurl=https://web.archive.org/web/20070818070511/http://docs.sun.com/app/docs/doc/817-1985/6mhm8o5ru |archivedate=2007-08-18 }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [[SUSE Linux]]&lt;br /&gt;
| 5 &amp;lt;ref&amp;gt;{{cite web |url=http://www.novell.com/documentation/sles10/pdfdoc/sles_admin/sles_admin.pdf |title=存档副本 |accessdate=2009-06-09 |deadurl=yes |archiveurl=https://web.archive.org/web/20061104235826/http://www.novell.com/documentation/sles10/pdfdoc/sles_admin/sles_admin.pdf |archivedate=2006-11-04 }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [[Ubuntu]]&lt;br /&gt;
| 2 &amp;lt;ref name=&amp;quot;#1&amp;quot;/&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
上面的表中有两种Linux发行版默认的运行模式为5，模式5是多用户图形环境（[[X Window System]]），通常还包括[[X显示管理器]]。然而在[[Solaris]]操作系统中，模式5被保留用来执行关机和自动切断电源。&lt;br /&gt;
&lt;br /&gt;
大多数操作系统的用户可以用下面的命令来判断当前的运行模式是什么：&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ runlevel&lt;br /&gt;
$ who -r&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
在[[超级用户|root]]权限下，运行&amp;lt;tt&amp;gt;telinit&amp;lt;/tt&amp;gt;或者&amp;lt;tt&amp;gt;init&amp;lt;/tt&amp;gt;命令可以改变当前的运行模式。&amp;lt;tt&amp;gt;/etc/inittab&amp;lt;/tt&amp;gt;文件中设置的默认的运行模式在&amp;lt;tt&amp;gt;:initdefault:&amp;lt;/tt&amp;gt;项中。&lt;br /&gt;
&lt;br /&gt;
== 跳过init ==&lt;br /&gt;
Linux系统中，现代的[[bootloader]]（如[[LILO]]或者[[GRUB]]），用户可以在初始化过程中最后启动的进程来取代默认的&amp;lt;code&amp;gt;/sbin/init&amp;lt;/code&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
通常是在bootloader环境中通过执行&amp;lt;code&amp;gt;init=[[foobar|/foo/bar]]&amp;lt;/code&amp;gt;命令。例如，如果执行&amp;lt;code&amp;gt;init=/bin/bash&amp;lt;/code&amp;gt;，启动单用户root的shell环境，无需用户密码。&lt;br /&gt;
&lt;br /&gt;
BSD的变种，大多数平台，bootstrap程序是可以被打断的，然后执行&amp;lt;code&amp;gt;boot -s&amp;lt;/code&amp;gt;命令进入单用户模式。&lt;br /&gt;
&lt;br /&gt;
单用户模式并不没有跳过init，它仍然可以执行&amp;lt;code&amp;gt;/sbin/init&amp;lt;/code&amp;gt;，但是它将使init询问&amp;lt;code&amp;gt;exec()&amp;lt;/code&amp;gt;将要执行的命令（默认为&amp;lt;code&amp;gt;/bin/sh&amp;lt;/code&amp;gt;）的路径，而不是采用正常的多用户启动顺序。如果内核启动时在&amp;lt;code&amp;gt;/etc/ttys&amp;lt;/code&amp;gt;文件中被标注为&amp;quot;不安全&amp;quot;（在某些系统中，当前的&amp;quot;安全模式&amp;quot;可能会有些变化），在允许这种情况（或者回退到单用户模式，如果用户执行&amp;lt;code&amp;gt;CTRL+D&amp;lt;/code&amp;gt;），init将首先询问[[超级用户|root]]用户的密码。&lt;br /&gt;
如果该程序退出，内核将在多用户模式下重新执行init。如果系统从多用户模式切换到单用户模式，还将碰到上述的情况。&lt;br /&gt;
&lt;br /&gt;
如果内核加载后，init不能被正常启动，这将导致[[Kernel panic|panic]]错误，此时系统将不可使用。想要通过init自身来改变init的路径，不同的版本情况不太一样（NetBSD中可执行&amp;lt;code&amp;gt;boot -a&amp;lt;/code&amp;gt;；FreeBSD中利用&amp;lt;code&amp;gt;init_path&amp;lt;/code&amp;gt;命令装载变量）。&lt;br /&gt;
&lt;br /&gt;
== 其他风格 ==&lt;br /&gt;
业界一直努力地从某些方面改进传统的init守护进程，使它变得更完善。下面列出的是一些改进（排序不分先后）：&lt;br /&gt;
* [[SystemStarter]]：用来替代[[launchd]]—[[苹果公司|Apple]] [[Mac OS X]]开启进程&lt;br /&gt;
* [[Initng]]：完全代替init，可以异步开启进程&lt;br /&gt;
* [[Upstart]]：完全代替init，可以异步开启进程，曾由[[Ubuntu]]等使用&lt;br /&gt;
* [[Service Management Facility]]：完全代替/重新设计[[Solaris (操作系统)|Solaris]]启动Solaris 10&lt;br /&gt;
* runit：跨平台的完全代替init可以并行启动服务&lt;br /&gt;
* [[GoboLinux#Boot system|BootScripts]]：[[GoboLinux]]&lt;br /&gt;
* Mudur：用[[Python]]写成的init替代品，可以异步开启进程，[[Pardus (操作系统)|Pardus]] Linux发行版&lt;br /&gt;
* [[systemd]]：完全替代init，可并行启动服务，并能减少在shell上的系统开销，相比传统的[[UNIX System V|System V]]是一大革新，已被大多数Linux发行版所使用&lt;br /&gt;
&lt;br /&gt;
下面列出的项目还没有大范围的使用：&lt;br /&gt;
* [[Einit|eINIT]]，完全代替init，可以异步开启进程，但是完成这个过程可以不使用shell脚本&lt;br /&gt;
* &amp;#039;&amp;#039;svscan&amp;#039;&amp;#039; 来自[[daemontools]]被用作1号进程 - 似乎将被runit替代&lt;br /&gt;
* cinit&lt;br /&gt;
* twsinit，部分用x86汇编写成，只是用来证明一种概念&lt;br /&gt;
* minit&lt;br /&gt;
* OpenRC，由[[Gentoo]]客制&lt;br /&gt;
&lt;br /&gt;
== 参考文献 ==&lt;br /&gt;
{{Reflist|33em}}&lt;br /&gt;
&lt;br /&gt;
== 外部链接 ==&lt;br /&gt;
* [https://web.archive.org/web/20090211024645/http://unixhelp.ed.ac.uk/CGI/man-cgi?init+8 Linux init man page]&lt;br /&gt;
* [http://www.freebsd.org/cgi/man.cgi?query=init&amp;amp;apropos=0&amp;amp;sektion=0&amp;amp;manpath=FreeBSD+6.2-stable&amp;amp;format=html FreeBSD init man page]{{Wayback|url=http://www.freebsd.org/cgi/man.cgi?query=init&amp;amp;apropos=0&amp;amp;sektion=0&amp;amp;manpath=FreeBSD+6.2-stable&amp;amp;format=html |date=20170706063232 }}&lt;br /&gt;
* [https://web.archive.org/web/20090524020300/http://www.atnf.csiro.au/people/rgooch/linux/boot-scripts/ boot-scripts]&lt;br /&gt;
* [http://smarden.org/runit/index.html runit]{{Wayback|url=http://smarden.org/runit/index.html |date=20200705230039 }}&lt;br /&gt;
* [http://www.fefe.de/minit/ minit]{{Wayback|url=http://www.fefe.de/minit/ |date=20210204144416 }}&lt;br /&gt;
* [http://www.netbsd.org/guide/en/chap-rc.html rc.d]{{Wayback|url=http://www.netbsd.org/guide/en/chap-rc.html |date=20070529055411 }}&lt;br /&gt;
* [http://www.busybox.net/downloads/BusyBox.html#item_init busybox]{{Wayback|url=http://www.busybox.net/downloads/BusyBox.html#item_init |date=20100611211247 }}&lt;br /&gt;
* [http://www.sun.com/bigadmin/content/selfheal/smf-quickstart.html smf and milestones in Solaris 10]{{Wayback|url=http://www.sun.com/bigadmin/content/selfheal/smf-quickstart.html |date=20051231110711 }}&lt;br /&gt;
* [https://web.archive.org/web/20090210204946/http://linux.schottelius.org/cinit/ cinit]&lt;br /&gt;
* [http://www.energymech.net/users/proton/ twsinit]{{Wayback|url=http://www.energymech.net/users/proton/ |date=20201017082339 }}&lt;br /&gt;
* [https://web.archive.org/web/20110705091640/http://www.pardus.org.tr/eng/projects/comar/SpeedingUpLinuxWithPardus.html Mudur]&lt;br /&gt;
&lt;br /&gt;
== 参见 ==&lt;br /&gt;
{{Portal box|Linux}}&lt;br /&gt;
* [[pidof]]或者killall5，从System V开始在很多发行版中使用的另一种程序&lt;br /&gt;
&lt;br /&gt;
{{-}}&lt;br /&gt;
{{Unix中的服务管理}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Unix进程和任务管理相关软件]]&lt;/div&gt;</summary>
		<author><name>imported&gt;AromaTake</name></author>
	</entry>
</feed>