We don’t execute people just because they are old, and worship people just because they are new.
随着 systemd 出现, sysvinit 开始淡出主流的发行版. 但 sysvinit 极为简单, 使用 sysvinit 只需要一点 bash 基础和一些基本的文件操作, 不需要学习额外的知识. sysvinit 小而美但功能简单, 仍然是一个不错的选择.
BootLoader
init 进程是 stage3 启动到 stage4 的关键所在
从内核源码中可以看到, 在加载结束后, 内核会尝试启动 /sbin/init . 这是系统的第一个进程.
1 |
|
所以我们可以通过修改源码更改系统默认的 init 进程.
另一个更加简单方便的办法是传递一个 kernel parameter. 如果 BootLoader 是 lilo, 那么加入下面一行即可改变启动进程. (grub 也有类似选项)
1 | # /etc/lilo.conf, 注意 python 不能为软链接 |
更多的 kernel parameters 在 referrence
runlevel
我们都知道, UNIX 有很多 runlevel. 其中有三种为保留预定义的运行模式:
- 0 - 关机
- 1 - 单用户模式
- 6 - 重启
runlevel 5 大多是 X Window System.
其他的模式各个系统都有所不同, 默认运行模式也不一样, Gentoo 在 runlevel 3, Debian 在 runlevel 2, 可以在 /etc/inittab 中找到.
runlevel 是在 inittab 中实现的
1 | # file: /etc/inittab |
所有的启动脚本都位于 /etc/init.d/ , 在某个 runlevel * 运行服务只不过是在 /etc/rc*.d/ 中增加这个服务的符号链接.
除此之外, sysv-rc-conf 也是一个不错的工具, 它能支持鼠标操作.
或是
1 | update-rc.d DAEMON enable|disable |
service
那么增加一个 service 就非常简单了, Debian 系统中有个模板 /etc/init.d/skeleton, 多数情况只需要改几个 bash 变量就可以用了.
记得最后加上执行权限
1 | chmod +x /etc/init.d/DAEMON |
referrence
SysVinit历史简介
lilo设置
内核参数
debian wiki: RunLevel
debian wiki: Daemon
debian wiki: sysvinit讨论页
若你觉得我的文章对你有帮助,欢迎点击上方按钮对我打赏
扫描二维码,分享此文章