导图
一.引导过程
1.开机自检BIOS
服务器主机开机以后,将根据主板 BIOS 中的设置对 CPU、内存、显卡、键盘等设备进行初步检测,检测成功后根据预设的启动顺序移 交系统控制权,大多时候会移交给本机硬盘。
总结:检查出能引导系统的设备
tops:
硬件启动POST:Power-On-Self-Test,加电自检,是BIOS功能的一个主要部分。负责完成对CPU、主板、内存、硬盘子系统、显示子系统、串并行接口、键盘等硬件情况的检测
主板的ROM:BIOS(Basic Input and Output System),保存着有关计算机系统最重要的基本输入输出程序,系统信息设置、开机加电自检程序和系统启动自举程序等
2.MBR引导
当从本机硬盘中启动系统时,首先根据硬盘第一个扇区中 MBR(Master Boot Record, 主引导记录)的设置,将系统控制权传递给包含操作系统引导文件的分区;或者直接根据 MBR 记录中的引导信息调用启动菜单(如 GRUB)。
总结:运行放在MBR扇区里的启动 GRUB引导程序
3.GRUB菜单
对于Linux操作系统来说,GRUB(统一启动加载器)是使用最为广泛的多系统引导器程序,系统控制权传递给FRUB以后,将会显示启动菜单给用户选择,并根据所选项(或采用默认值)加载Linux内核文件,然后将系统控制权转交给内核。
(CentOS 7采用的是GRUB2启动引导器)
总结:GRUB引导程序通过读取GRUB配置文件/boot/grub2/grub.cfg,来获取内核和镜像文件系统的设置和路径位置
4.加载Linux内核kernel
Linux内核是一个预先编译好的特殊二进制文件,介于各自硬件资源与系统程序之间,复制资源分配与调度,内核接过系统控制权以后,将完全掌控整个Linux操作系统的运行过程。
(CentOS 7系统中,默认的内核文件位于“/boot/vmlinuz-3.10.0-514.e17.x86_64”)
总结:把内核和镜像文件加载到内存中
5.init进程初始化
为了完成进一步的系统引导过程,Linux内核首先将系统中的“/sbin/init”程序加载到内存中运行(运行中的程序称为进程),init进程负责完成整个系统的初始化,最后等待用户进行登录。
总结:加载硬件驱动程序,内核把init进程加载到内存中运行
init进程:
由Linux内核加载运行/sbin/init程序;
init进程是系统中第一个进程是所有进程的父进程;
init进程的PID=1.
SysVinit(centos 6及以前的init) 依赖于串行执行Shell 脚本启动服务,导致效率低下,系统启动速度较慢 ,需要排队;
systemd (centos 7)能够将更多的服务进程并行启动,并且具有提供按需启动服务的能力,使得启动更少进程,从而提高系统启动速度。
二.服务
1.systemd服务
systemd的作用:
负责在系统启动或运行时,激活系统资源,服务器进程和其它进程
systemd新特性:
-
系统引导时实现服务并行启动
-
按需启动守护进程
-
自动化的服务依赖关系管理
-
同时采用socket式与D-Bus总线式激活服务
-
socket与服务程序分离
-
向后兼容sysv init脚本
-
使用systemctl 命令管理,systemctl命令固定不变,不可扩展,非由systemd启动的服务,
-
systemctl无法与之通信和控制
-
系统状态快照
systemd核心概念:unit
unit表示不同类型的systemd对象,通过配置文件进行标识和配置;文件中主要包含了系统服务、监听、socket、保存的系统快照以及其它与init相关的信息
在systemd中不同类型的systemd对象被统一称为单元,是让系统知道该如何进行操作和管理资源的主要对象,所以systemd有许多单元类型。
systemd单元文件最初默认存放在/lib/systemd/system目录中,每当安装新的软件都会自动在这个目录中添加一个配置文件。
systemctl 命令用于管理各种类型的systemd单元,可以使用“systemctl -t help”命令来查询systemd支持的单元类型。
单元类型:
单元类型 | 扩展名 | 说明 |
---|---|---|
Service | . service | 描述一个系统服务 |
Socket | .socket | 描述一个进程间通信的套接字 |
Device | .device | 描述一个内核识别的设备文件 |
Mount | .mount | 描述一个文件系统的挂载点 |
utomount | .automount | 描述一个文件系统的自动挂载点 |
Swap | .swap | 描述一个内存交换设备或交换文件 |
Path | .path | 描述一个文件系统中文件或目录 |
Timer | .timer | 描述一个定时器(用于实现类似cron的调度任务) |
Snapshot | .snapshot | 用于保存一个systemd的状态 |
Scope | .scope | 使用systemd的总线接口以编程的方式创建外部进程 |
Slice | .slice | 描述居于Cgroup的一-组通过层次组织的管理系统进程 |
Target | .target | 描述一组systemd的单元 |
1.1修复mbr分区
MBR位于第一块硬盘(/dev/sda)的第一个物理扇区处,总共512字节
1.1.1故障原因:
- 病毒、木马等造成的破坏
- 不正确的分区操作、磁盘读写误操作
1.1.2故障现象:
- 找不到引导程序,启动中断
-
无法加载操作系统,开机后黑屏
1.1.3解决思路:
应提前做好备份文件
- 准备添加另一块硬盘作为mbr备份;
- 以安装光盘引导进入急救模式;
- 从备份文件中恢复。
1.1.4模拟修复mbr分区
第一步:添加新硬盘
第二步:新硬盘格式化,并挂载
第三步:备份mbr,模拟破坏mbr
第四步:重启进入单用户模式(急救模式)
1.troubleshooting
2.rescue a Centos system
3. 选择序号 1 进入shell
4.创建目录并挂载----恢复备份----保存退出>>重启
1.2修复grub分区
1.2.1故障原因
MBR中的GRUB引导程序(1-446字节)遭到破坏
grub.cfg文件丢失,引导配置有误,文件位置/boot/grub2/grup.cfg
1.2.2故障现象
系统引导停滞,显示grub >提示符
1.2.3解决思路
- 尝试手动输入引导命令修复(不推荐)
- 进入急救模式,重写或者从备份中恢复grub.cfg
- 急救模式向MBR扇区中重建grub程序
1.2.4模拟修复GRUB引导故障
1.3修改密码
1.3.1故障原因
• 遗忘root用户密码
1.3.2故障现象
• 无法进行需要root权限的管理操作
• 若没有其他可以账号,将无法登录系统
1.3.3解决思路
• 进入急救模式,重设密码
#1
启动时任意键暂停启动 按e键进入编辑模式 将光标移动linux 开始的行,添加内核参数 rd.break 按ctrl-x启动 mount –o remount,rw /sysroot chroot /sysroot passwd root #如果SELinux是启用的,才需要执行下面操作,如没有启动,不需要执行 touch /.autorelabel exit reboot
#2
启动时任意键暂停启动
按e键进入编辑模式
将光标移动linux 开始的行,改为 rw init=/sysroot/bin/sh
按ctrl-x启动
chroot /sysroot
passwd root
#如果SELinux是启用的,才需要执行下面操作,如查没有启动,不需要执行
touch /.autorelabel
exit
reboot
1.3.4模拟重设密码
进入急救模式
进入shell
进入根环境-----更改密码-----保存退出-----重启
1.4设置运行级别
运行级别:
级别 | 作用 |
0 | 关机 |
1 | 单用户模式(root自动登录), single, 维护模式 |
2 |
多用户模式,启动网络功能,但不会启动NFS;维护模式 |
3 | 多用户模式,正常模式;文本界面 |
4 | 预留级别;可同3级别 |
5 | 多用户模式,正常模式;图形界面 |
6 | 重启 |
1.5chkconfig
chkconfig 命令用于检查,设置系统的各种服务
chkconfig工具:
格式:
chkconfig --list [服务名称]
chkconfig --add 服务名称
chkconfig --level 级别列表服务名on/off
chkconfig --add httpd
chkconfig --level 35 httpd on
#开启服务 chkconfig telnet on //开启 Telnet 服务 chkconfig --list //列出 chkconfig 所知道的所有的服务的情况 #关闭服务 chkconfig telnet off // 关闭 Telnet 服务 chkconfig --list // 列出 chkconfig 所知道的所有的服务的情况