Init

BSD风格

BSD init 运行存放于'/etc/rc'的初始化shell 脚本，然后启动基于文本模式的终端(getty)或者基于图形界面的终端(窗口系统，如 X)。 这里没有运行模式的问题，因为文件'rc' 决定了init 如何执行。
优点: 简单且易于手动编辑。
缺点: 如果第三方软件需要在启动过程执行它自身的初始化脚本，它必须修改已经存在的启动脚本，一旦这种过程中有一个小错误，都将导致系统无法正常启动。
值得注意的是，现代的BSD 派生系统一直支持使用'rc.local' 文件的方式，它将在正常启动过程接近最后的时间以子脚本的方式来执行。这样做减少了整个系统无法启动的风险。然后，第三方软件包可以将它们独立的start/stop 脚本安装到一个本地的'rc.d' 目录中(通常这是由ports collection/pkgsrc 完成的)。 FreeBSD 和 NetBSD 现在默认使用rc.d ，该目录中所有的用户启动脚本，都被分成更小的子脚本，和 SysV 类似。rcorder 通常根据在rc.d目录中脚本之间的依赖关系来决定脚本的执行顺序。

SysV风格

System V init 检查 '/etc/inittab' 文件中是否含有'initdefault' 项。 这告诉init 系统是否有一个默认运行模式。如果没有默认的运行模式，那么用户将进入系统控制台，手动决定进入何种运行模式。
优点：灵活性强
缺陷：比较复杂

跳过init

Linux系统中，现代的bootloader(如 LILO 或者 GRUB)，用户可以在初始化过程中最后启动的进程来取代默认的/sbin/init。
通常是在bootloader 环境中通过执行init=/foo/bar 命令。例如，如果执行init=/bin/bash，启动单用户root 的 shell 环境，无需用户密码。
BSD的变种，大多数平台， bootstrap 程序是可以被打断的，然后执行boot -s 命令进入单用户模式。
单用户模式并不没有跳过init，它仍然可以执行/sbin/init，但是它将使init 询问 exec() 将要执行的命令(默认为/bin/sh) 的路径，而不是采用正常的多用户启动顺序。 如果内核启动时在/etc/ttys 文件中被标注为"不安全" (在某些系统中，当前的"安全模式" 可能会有些变化)， 在允许这种情况(或者回退到单用户模式，如果用户执行CTRL+D)，init 将首先询问root 用户的密码。 如果该程序退出，内核将在多用户模式下重新执行init。 如果系统从多用户模式切换到单用户模式，还将碰到上述的情况。
如果内核加载后， init 不能被正常启动， 这将导致panic 错误，此时系统将不可使用。想要通过init 自身来改变init 的路径，不同的版本情况不太一样(NetBSD中可执行boot -a ; FreeBSD中利用init_path 命令装载变量)。