昨天看到一篇文章,讲的是Linux的开机启动,个人感觉写得非常好。我是在学习环境变量时看到的,所以只翻译其中的一小部分,再结合环境变量讲一讲。建议大家好好读一下原文。
systemd
Linux系统的开机流程(boot process)的结束:选定的系统核(kernel)加载到内存,然后解压自己,加载systemd,此时控制权交给了systemd,开始系统的启动流程(startup process)。
截至上面的步骤完成,只有核和systemd在运行,什么都做不了,需要systemd去完成接下来的工作,完成时Linux主机才会是可用状态。
systemd是所有进程的父进程或者祖先进程,它的pid是1。第一步,它会加载定义在/etc/fstab中的文件系统,加载后就可以访问位于/etc中的配置文件,它的配置文件/etc/systemd/system/default.target会告诉它该使用哪个target去完成接下来的工作。
target和service是systemd中的基本单元。target是一组service的组合,选择某个target后就要去启动相应的一些服务。
target的作用就是定义启动方式。举例来说,想在启动后进入图形界面模式,target就选择graphical.target,想在启动后进入命令行模式,target就选mutil-user.target,分别对应旧版本/etc/inittab文件中的level5和level3。
tar