系统启动和内核管理

1.centos6启动

1.硬件启动流程

1.1打开电源

1.2执行BIOS

2.grub启动引导

2.1 stage 1

2.2 stage1.5

2.3 stage2

3 内核引导阶段

  1. 调用和执行临时根文件系统中的init脚本执行初始化
  2. 加载驱动模块初始化系统中的各设备并作相关配置
  3. 加载并切换真正的根文件系统(grub.conf中root=所指定)
  4. 切换到真正的根文件系统 ,执行init程序,Linux系统第一个进程

4.系统初始化阶段

4.1 /etc/inittab

4.2 /etc/rc.sysinit 脚本

4.3加载系统服务

centos6的运行级别

0:关机
1:单用户模式(root自动登录), single, 维护模式
2:多用户模式,启动网络功能,但不会启动NFS;维护模式
3:多用户模式,正常模式;文本界面
4:预留级别;可同3级别
5:多用户模式,正常模式;图形界面
6:重启

centos 6 服务管理

service 服务 start|stop|restart
service --status-all

说明:rc N --> 意味着读取/etc/rc.d/rcN.d/
K: K##:##运行次序;数字越小,越先运行;数字越小的服务,通常为依赖到别的服务
S: S##:##运行次序;数字越小,越先运行;数字越小的服务,通常为被依赖到的服务

配置服务开机启动
    chkconfig命令
        #查看服务在所有级别的启动或关闭设定情形:
            chkconfig [--list] [name]
        #添加服务
            SysV的服务脚本放置于/etc/rc.d/init.d (/etc/init.d)
            #脚本头部格式
            #!/bin/bash
            chkconfig: LLLL nn nn  #LLLL 表示初始在哪个级别下启动,-表示都不启动
            description : 描述信息

            chkconfig --add name
            #删除服务
            chkconfig --del name
            #修改指定的运行级别
            chkconfig [--level levels] name <on|off|reset>
            说明:--level LLLL: 指定要设置的级别;省略时表示2345

非独立服务

服务分为独立服务和非独立服务
瞬态(Transient)服务被超级守护进程 xinetd 进程所管理,也称为非独立服务
进入的请求首先被xinetd代理
配置文件:

/etc/xinetd.conf
/etc/xinetd.d/<service>

开机启动文件 rc.local

/etc/rc.local
/etc/rc.d/rc.local

注意:正常级别下,最后启动一个服务S99local没有链接至/etc/rc.d/init.d一个服务脚本,而是指向
了/etc/rc.d/rc.local脚本
不便或不需写为服务脚本放置于/etc/rc.d/init.d/目录,且又想开机时自动运行的命令,可直接放置
于/etc/rc.d/rc.local文件中
/etc/rc.d/rc.local在指定运行级别脚本后运行
注意: 默认Ubuntu 无 /etc/rc.local 文件,可以创建此脚本文件并添加执行权限,rc.local的首行必须有
shebang机制

2.centos7之后的Systemd和启动流程

Systemd:从 CentOS 7 版本之后开始用 systemd 实现init进程,系统启动和服务器守护进程管理器,负责在系统启动或运行时,激活系统资源,服务器进程和其它进程

systemd 核心概念:unit,unit表示不同类型的systemd对象,通过配置文件进行标识和配置;文件中主要包含了系统服务、监听 socket、保存的系统快照以及其它与init相关的信息
Unit类型:
systemctl -t help 


service unit: 文件扩展名为.service, 用于定义系统服务
Socket unit: .socket, 定义进程间通信用的socket文件,也可在系统启动时,延迟启动服务,实现按需启动
Target unit: 文件扩展名为.target,用于模拟实现运行级别
Device unit: .device, 用于定义内核识别的设备
Mount unit: .mount, 定义文件系统挂载点
Snapshot unit: .snapshot, 管理系统快照
Swap unit: .swap, 用于标识swap设备
Automount unit: .automount,文件系统的自动挂载点
Path unit: .path,用于定义文件系统中的一个文件或目录使用,常用于当文件系统变化时,延迟激活服务,如:spool 目录


unit的配置文件

/usr/lib/systemd/system #每个服务最主要的启动脚本设置,类似于之前的/etc/init.d/
/lib/systemd/system #ubutun的对应目录,兼容于CentOS7,8和Ubuntu
/run/systemd/system #系统执行过程中所产生的服务脚本,比上面目录优先运行
/etc/systemd/system #管理员建立的执行脚本,类似于/etc/rcN.d/Sxx的功能,比上面目录优先运行

systemctl管理系统服务service unit

systemctl COMMAND name.service

systemctl start name1.service 
systemctl stop name.service
systemctl restart name.service 
systemctl status name.service
systemctl mask name.service #禁止手动和自动启动
systemctl unmask name.service
systemctl is-active name.service
systemctl cat sshd  #查看service文件内容
systemctl list-units --type|-t service # 查看所有已经激活的服务
systemctl list-units --type service --all|-a #查看所有服务
systemctl enable name.service 
systemctl disable name.service
systemctl list-unit-files --type service #查看所有服务的开机自启状态
systemctl is-enabled name.service
systemctl --failed --type=service
#开机并立即启动或停止
systemctl enable --now postfix 
systemctl disable  --now postfix
#查看服务的依赖关系:
systemctl list-dependencies name.service
#杀掉进程:
systemctl kill unitname


服务状态
loaded Unit配置文件已处理
active(running) 一次或多次持续处理的运行
active(exited) 成功完成一次性的配置
active(waiting) 运行中,等待一个事件
inactive 不运行
enabled 开机启动
disabled 开机不启动
static 开机不启动,但可被另一个启用的服务激活
indirect 重定向到别处


service unit格式
https://www.jinbuguo.com/systemd/systemd.service.html


注意:对于新创建的unit文件,或者修改了的unit文件,要通知systemd重载此配置文件,而后可以选择
重启
systemctl daemon-reload



 运行级别
 target units:相当于CentOS 6之前的runlevel ,unit配置文件:.target