内容结构

  • 引导过程

  • 排除启动类故障

  • 服务控制及切换运行级别

  • 优化启动过程



(一)引导过程

1,引导过程总览

  • 开机自检 服务器主机开机以后,将根据主板 BIOS 中的设置对 CPU(Central Processing Unit, 中央处理器)、内存、显卡、键盘等设备进行初步检测,检测成功后根据预设的启动顺序移 交系统控制权,大多时候会移交给本机硬盘。 

  • MBR 引导 当从本机硬盘中启动系统时,首先根据硬盘第一个扇区中 MBR(Master Boot Record, 主引导记录)的设置,将系统控制权传递给包含操作系统引导文件的分区;或者直接根据 MBR 记录中的引导信息调用启动菜单(如 GRUB)。 

  • GRUB 菜单 对于 Linux 操作系统来说,GRUB(GRand Unified Bootloader,统一启动加载器)是使 用最为广泛的多系统引导器程序。系统控制权传递给 GRUB 以后,将会显示启动菜单给用户 选择,并根据所选项(或采用默认值)加载 Linux 内核文件,然后将系统控制权转交给内核。 需要注意的是,CentOS 7 采用的是 GRUB2 启动引导器。 

  • 加载 Linux 内核 Linux 内核是一个预先编译好的特殊二进制文件,介于各种硬件资源与系统程序之间, 负责资源分配与调度。内核接过系统控制权以后,将完全掌控整个 Linux 操作系统的运行过 程。在 CentOS 系统中,默认的内核文件位于“/boot/vmlinuz-3.10.0-514.el7.x86_64”。 

  • init 进程初始化 为了完成进一步的系统引导过程,Linux 内核首先将系统中的“/sbin/init”程序加载到内存中运行(运行中的程序称为进程),init 进程负责完成一系列的系统初始化过程, 最后等待用户进行登录。

2,系统初始化进程及文件

init进程

  • 由Linux内核加载运行/sbin/init程序

  • 是系统中第一个进程

  • PID(进程标记)号永远为1

Systemd单元类型

运行级别所对应的systemd目标

(二)排除启动类故障(实验操作!)

1,修复MBR扇区故障

故障原因

  • 病毒等造成的破坏

  • 不正确的分区操作,磁盘读写误操作

故障现象

  • 找不到引导程序,启动中断

  • 无法加载操作系统,开机后黑屏

解决思路

  • 应提前作好备份文件

  • 以安装光盘引导进入急救模式

  • 从备份文件中恢复

1)备份mbr引导扇区到其他磁盘,先创建一个磁盘分区/dev/sdb1-格式化-挂载到/data(详细看前文章)

[root@localhost ~]# dd if=/dev/sda of=/data/sda.mbr.bak bs=512 count=1  备份
记录了1+0 的读入
记录了1+0 的写出
512字节(512 B)已复制,0.000254623 秒,2.0 MB/秒
[root@localhost ~]# ls /data    查看备份是否成功
sda.mbr.bak

2)模拟破坏sda中第一个扇区mbr引导分区,重启

[root@localhost ~]# dd if=/dev/zero of=/dev/sda bs=512 count=1  模拟破坏
记录了1+0 的读入
记录了1+0 的写出
512字节(512 B)已复制,0.00028556 秒,1.8 MB/秒
[root@localhost ~]# init 6  重启

3)连接centos7镜像光盘,重启系统后迅速按ESC进入启动菜单,选择cdrom-Troubleshooting-rescue centos system

4)按1进入shell,创建挂载点/bak-将/dev/sdb1挂载到/bak-将备份的mbr复制到/dev/sda中,重启完成修复

2,恢复GRUB引导故障

故障原因

  • MBR中的GRUB引导程序遭到破坏

  • grub.conf文件丢失,引导配置有误

故障现象

  • 系统引导停滞,显示“grub>”提示符

解决思路

  • 尝试手动输入引导命令

  • 进入急救模式,重写或者备份中恢复grub.conf

  • 向MBR扇区中重建grub程序

1)模拟破坏GRUB引导配置文件,删除grub配置文件

2)连接centos7镜像光盘,重启系统后迅速按ESC进入启动菜单,选择cdrom-Troubleshooting-rescue centos system-按1进入shell

3)切换bash环境-建立加载sda分区-构建grub菜单配置文件-退出bash环境-重启

3,遗忘root用户密码

故障原因

  • 遗忘root用户的密码

故障现象

  • 无法进行需要root权限管理操作

  • 若没有其他可用账号,将无法登录系统

解决思路

  • 进入急救模式,重设密码

1)重启你的Linux系统

2,进入急救模式,切换bash环境-修改密码-退出bash环境-重启即可

(三)服务控制及切换运行级别

系统服务类型

常用方式

  • systemctl 控制类型 服务名称

控制类型

  • start:启动

  • stop:停止

  • restart:重新启动(停止加启动,现实慎用)

  • reload:重新加载(刷新配置文件)

  • status:查看服务状态

Linux系统的运行级别

查看运行级别

  • runlevel命令

  • systemctl工具

临时切换运行级别

  • init命令

  • systemctl工具


命令含义 命令行界面 图形界面 关机 重启
init命令 init3 init5 init0 init6
systemctl命令 systemctl isolate multi-usr.target systemctl isolate graphical.target systemctl isolate poweroff.target systemctl isolate reboot.target
[root@localhost ~]# init 3 切换为命令行界面
[root@localhost ~]# runlevel 
5 3
或者
[root@localhost ~]# systemctl isolate multi-user.target  切换为命令行界面

更改默认的运行级别模式

[root@localhost ~]# ln -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target   利用软连接修改
[root@localhost ~]# systemctl get-default
graphical.target

(四)优化启动过程

系统服务管理工具

netstat -ntap查看正在进行的服务及端口

  • n:数字显示

  • t:tcp协议

  • a:所有

  • p:协议

ntsysv工具

  • 提供一个交互式,可视化窗口

  • 可以在字符终端运行

  • 便于集中管理多个服务

[root@localhost ~]# ntsysv  交换可视化服务管理


systemctl工具

  • 不提供交互式,可视化窗口

  • 管理单个服务效率更高

查看系统服务的启动状态

systemctl is-enabled 服务名称

设置系统服务的启动状态

systemctl enable/disable 服务名称



谢谢阅读!!!