1、引导过程
当你按下开机的电源键直到屏幕显示登录的画面,这中间系统做的一些的开机过程
1.1开机自检(BIOS)
服务器开机之后,根据主板的BIOS设置,对CPU,内存,显卡,键盘等设备进行初步的检测。检测成功后根据预设的启动顺序(默认的启动顺序,第二个就是硬盘,要么就是手动设置的U盘启动)。系统的控制权抓到了硬盘(大多数的时候转移给本机的硬盘) 总结:初步的检测硬件工作是否正常,检测成功后,把系统的引导控制权交给硬盘或者光驱或者U盘
1.2 MBR引导
MBR是硬盘的分区记录表,在这个表里面记录硬盘的分区,以及系统启动盘的位置在哪。 系统的控制权到了硬盘,根据MBR记录表找系统的启动盘,找到之后将系统的控制权传递给包含操作系统引导文件的分区,以及MBR记录中系统的启动菜单(GRUB)
1.3 GRUB菜单
硬盘启动之后,找到系统分区,也找到了操作系统所在的位置,GRUB就会显示启动菜单,包含所有当前可选的操作系统。选择了其中一个操作系统之后,系统转移控制权,转移到操作系统的内核文件。 centos7使用的都是GRUB2启动引导器
1.4加载内核文件
操作系统的内核文件是一个预先编译好的特殊的二进制文件(可执行的代码),介于硬件资源和系统程序之间。负责分配资源,调度资源。只是分配和调度,并没有真正运行。预加载到内存当中,系统程序等待启动。
1.5 init/systemd启动方式
/sbin/init进程是系统当中的第一个进程,是所有其他进程的父进程。init进程在系统中的进程号永远是1。
init是串行,一个一个启动。速度慢。
/lid/systemd/system,它是系统的第一个进程,进程号也是1。
systemd是并行,加载在内存当中的程序,一起启动,速度快。
2、systemd单元类型
2.1概念说明
systemd是centos7之后用来管理系统服务进程的管理器,使用单元模式(unit)来描述和控制系统服务和资源。
特点: 1、支持并行服务,提高系统的启动速度
2、支持自动重启
3、可以在进程运行期间动态的控制它的资源和相关的服务参数。
4、可以自动解决服务启动过程中的依赖关系。
5、支持多种管理方式,比如命令行,也可以使用图形化工具,命令行操作
2.2单元类型
单元类型 扩展名 说明
Service .service 描述一个系统服务 Target .target 描述一组systemd的单元。进程在不同运行级别下的状态。
Socket .socket 进程启动时根据其配置分配系统端口,监听端口状态。如果有请求维护端口通信 (提供网络服务)
Device .device 管理硬件设备,驱动程序,设备文件,设备属性
Mount .mount 管理文件系统的挂载以及挂载的选项,以及挂载之后的数据管理
Automount .automount 根据配置,自动的实现设备或者文件系统的挂载
[Unit] Description=nginx - high
performance web server
Documentation=nginx documentation
After=network-online.target
remote-fs.target nss-lookup.target #表示支持dns解析以及该软件依赖于网络。
Wants=network-online.target #先启动网络服务,才能启动nginx
[Service]
Type=forking
PIDFile=/usr/local/nginx/run/nginx.pid #注意文件位置,如果不对 启动不了 ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf #注意启动文件位置 ExecReload=/bin/kill -s HUP
$MAINPID ExecStop=/bin/kill -s TERM
$MAINPID [Install] WantedBy=multi-user.target
#支持多用户模式
unit:服务的说明
Description:描述信息
After:依赖,启动的这个进程,systemd会根据after的条件把相关的进程一并启动
Wants:也是一个依赖条件,systemd也会把这个网络功能一并启动
[Service]:服务运行的参数设置
Type=forking:后台运行
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf 服务启动时具体运行的命令
ExecReload=/bin/kill -s HUP $MAINPID 重启的命令
ExecStop=/bin/kill -s TERM $MAINPID 停止进程的命令
[Install]:服务安装的相关设置,以及运行的模式
WantedBy=multi-user.target 支持多用户模式
3、系统的运行级别
运行级别 systemd对应的target 说明
0 target 关机
1 rescue.target 单用户模式,系统维护时使用
2 multi-user.target 字符模式,和3一样
3 multi-user.targe 字符模式完整的字符模式,3模式可以支持多用户,在工作中,我们遇到的都是3 4 multi-user.targe 字符模式,和3一样
5 graphical.target 图形化多用户模式(工作中没有)
6 reboot.target 重启
查看系统运行级别:runlevel
切换系统的运行级别:init 0 1 2 3 4 5 6
4、如何对系统的服务进程进行控制
systemctl 控制类型 服务名称(进程) 控制类型
start 启动
stop 停止
restart 重启 先关闭再开机,先stop再start(修改服务的配置文件,必须要重启服务才能生效) reload 重新加载单元配置
status 查看服务的状态
running 正常运行
dead 服务停止
failed 启动失败,查找启动失败的原因。
failed的两种形式:exit-code 是真正的启动失败
result:signal 表明有人强制终止了该进程,不一定是报错
5.试验
5.1MBR引导:MBR分区表被删了,如何恢复
添加硬盘
fdisk /dev/sdb 查看设备的分区表信息
创建文件系统
在根目录下创建目录backup,挂载
创建虚拟文件(MBR分区表在第一块硬盘当中的第一个分区,大小512字节。把这个分区表从第一个硬盘当中提取出来。保存在sdb的硬盘中。就是MBR分区表做了一个备份。)
模拟删除分区表
reboot或者init 6 重启,troubleshooting解决故障——rescue a centos system拯救系统,进入自救模式
创建新目录,挂载
恢复还原,exit退出
5.2GRUB菜单引导菜单故障
进入grub2目录,模拟删除,重启进入虚拟机
按esc选择CD-ROM Drive——troubleshooting——rescue a centos system(操作如5.1)
chroot /mnt/sysimage 进入系统的根环境
把grub2菜单重新安装到第一块硬盘
重新构建grub菜单的配置文件,exit退出,reboot重启
5.3root密码忘了该怎么办?
setenforce 0 关闭安全机制
重置虚拟机,按esc选择CD-ROM Drive——troubleshooting——rescue a centos system
chroot /mnt/sysimage 进入光盘镜像的根目录
passwd root 设置新密码
exit退出 reboot重启