linux引导过程与服务控制
一.linux系统引导过程
以centos7系统为例
1.bios加电自检
当机器上电之后,根据主板上bios的设置进行硬件的自检,如cpu、内存等并初始化,它找到可引导的硬盘之后把控制器给MBR。
2.MBR引导
硬盘启动时根据MBR的设置,将系统控制权传递给包含系统操作引导文件的分区;或者直接根据MBR 记录中的引导信息调用启动菜单。
3.grub2菜单
系统控制权传递给GRUB 以后,将会显示提供用于选择,并根据-选项加载linux内核文件。
4.加载内核
系统引导器程序会从本地硬盘中加载内核以及内存文件系统 initramfs,其中包含启动时所有必要的硬件内核模块、初始化脚本等。
从本地硬盘加载内核,此时控制权在内核;
检测内核(动态加载内核模块:modules:存放加载硬件驱动程序)并找到内核
找到内核之后boot loader加载内核时的同时产生initramfs:虚拟文件系统,需要通过initramfs挂载伪根并加载驱动程序;
驱动程序存在之后initramfs消失,此时系统挂载真正的根和文件系统安装驱动程序
5.初始化进程
在initramfs中找到驱动程序的所有硬件,然后作为PID 1从initramfs执行/lib/systemd/systemd,systemd启动initrd.target中所有单元,包括挂载/etc/fstab,然后从initramfs根文件系统切换到磁盘根目录并且systemd启动默认target(字符界面还是图形化界面)也就是/etc/systemd/system/default.target ,最后等待用户登陆。
二.运行级别所对应的systemd目标
init0:target
代表关机状态;
关机命令:init0或者shutdown
init1:rescue.targe
t单用户模式,主要用于修复系统功能
init2:multi-user.target
多用户模式,无网络,无NFS共享存储
init3:multi-user.target
命令模式,多用户模式,没有图形界面,安装最小化系统默认的就是init3
init4:multi-user.target
保留,未使用
init5:graphical.targrt
多用户模式,提供图形桌面操作环境
init6:reboot.target
重启
重启命令shutdown -r
使用runlevel可以查看当前系统的运行级别。
三.systemctl相关命令
systemctl是一个systemd工具,主要负责控制systemd系统和服务管理器
配置文件
/etc/systemd/system/
存放不同级别的开启自启服务
/run/systemd/system/
系统执行过程中所产生的服务脚本所在目录
/usr/lib/systemd/system
每个服务最主要的启动脚本设置
systemctl的相关命令
查看system的版本
systemctl --version
查看服务的状态
systemctl status firwalld service
开启服务
systemctl start firewalld.service
关闭服务 //systemctl stop firewalld.service
重启服务(相当于先停止再启动,服务的PID(进程ID号)会改变)
systemctl restart name.service
重新加载服务的配置文件(服务不会中断,PID不会改变)//更改过配置之后,在不停止服务的情况下,重新加载服务的配置文件
systemctl reload name.service
设置服务开机自启
systemctl enable firewalld.service
设置服务开机不自启
systemctl disable firewalld.service
查看服务是否开机自启
systemctl is-enabled firewalld.service
查看已启动服务列表
systemctl list-unit-files|grep enable
查看服务是否在启动成功状态
systemctl is-active firewalld:查看防火墙是否在启动成功状态
查看服务是否在启动失败状态
systemctl is-failed firewalld.service:查看防火墙是否在启动失败状态
屏蔽服务
systemctl mask name.service
取消屏蔽服务
systemctl unmask name.service
查看服务的system服务配置
systenctl cat kube-apiserver.service
查看当前系统默认启动的target
systemctl get-default
设置默认启动的target为multi-user.target
systemctl set-default multi-user.target
查看系统启动耗时
systemd-analyze等同于 systemd-analyze time
查看sshd服务的配置文件
systemctl cat sshd