引导过程与服务控制
引导过程总览
1.开机自检
服务器主机开机以后,将根据主板 BIOS 中的设置对 CPU(Central Processing Unit,中央处理器)、内存、显卡、键盘等设备进行初步检测,检测成功后根据预设的启动顺序移
交系统控制权,大多时候会移交给本机硬盘。
2.MBR 引导
当从本机硬盘中启动系统时,首先根据硬盘第一个扇区中 MBR(Master Boot Record,
主引导记录)的设置,将系统控制权传递给包含操作系统引导文件的分区;或者直接根据
MBR 记录中的引导信息调用启动菜单(如 GRUB)。
3.GRUB 菜单
对于 Linux 操作系统来说,GRUB(GRand Unified Bootloader,统一启动加载器)是 使用最为广泛的多系统引导器程序。系统控制权传递给 GRUB 以后,将会显示启动菜单给 用户选择,并根据所选项(或采用默认值)加载 Linux 内核文件,然后将系统控制权转交给 内核。需要注意的是,CentOS 7 采用的是 GRUB2 启动引导器。
4.加载 Linux 内核
Linux 内核是一个预先编译好的特殊二进制文件,介于各种硬件资源与系统程序之间,负责资源分配与调度。内核接过系统控制权以后,将完全掌控整个 Linux 操作系统的运行过
程。在 CentOS 系统中,默认的内核文件位于“/boot/vmlinuz-3.10.0-514.el7.x86_64”。
5.init 进程初始化
为了完成进一步的系统引导过程,Linux 内核首先将系统中的“/sbin/init”程序加载到内存中运行(运行中的程序称为进程),init 进程负责完成一系列的系统初始化过程,最后等待用户进行登录
系统初始化进程及文件
1 . init 进程
Linux 操作系统中的进程使用数字进行标记,每个进程的身份标记号称为 PID
2 . Systemd 概述
Systemd 是 Linux 操作系统的一种 init 软件, CentOS 7 系统中采用了全新的 Systemd
启动方式,取代了传统的 SysVinit 。
排除系统启动类故障
1 .备份 MBR 扇区数据
由于 MBR 扇区中包含了整个硬盘的分区表记录,因此该扇区的备份文件必须存放到其
他的存储设备中,否则在恢复时将无法读取到备份文件
mkdir /backup
mount /dev/sdb1 /backup
dd if=/dev/sda of=/backup/sda.mbr.bak bs=512 count=1
2 .模拟 MBR 扇区故障
这里仍然使用 dd 命令,人为地将 MBR 扇区的记录覆盖,以便模拟出 MBR 扇区被破
坏的故障情况(切记要先做好备份,并且将备份文件存放到其他硬盘)
dd if=/dev/zero of=/dev/sda bs=512 count=1
3 .从备份文件中恢复 MBR 扇区数据
由于 MBR 扇区被破坏以后,就无法再从该硬盘启动系统,所以需要使用其他硬盘中的
操作系统进行引导,或者直接使用 CentOS 系统的安装光盘进行引导
以使用 CentOS 安装光盘引导为例,当出现安装向导界面时,选择“Troubleshooting”选项进入修复故障页面再选择“Rescue a CentOS Linux system”选项将以“救援模式”引导Linux 操作系统
然后系统会自动查找硬盘中的 Linux 分区并尝试将其挂载到 /mnt/sysimage 目录(选择
“1” 确认并按 Enter 键继续)。接下来会出现 rescue 字符界面.最后,按 Enter 键后将进入带 “sh-4.2#” 提示符的 Bash Shell 环境只要执行相应的命令挂载保存有备份文件的硬盘分区(sdb1)
GRUB 引导故障
GRUB 是大多数 Linux 操作系统默认使用的引导程序,可以通过启动菜单的方式选择进
入不同的操作系统
在 CentOS 系统中,执行以下操作可以查看 GRUB 配置文件 grub.cfg 的默认内容。
grep -v "^#" /boot/grub2/grub.cfg
grub.cfg 文件中包含很多内容,如加载 grubenv 中变量、设置默认引导项等。 CentOS 7
默认有两个启动项: CentOS Linux (3.10.0-514.el7.x86_64) 7 (Core) 与 CentOS Linux
(0-rescue- b15df1eb8205483f9f70c79709810abc) 7 (Core) 。无论是哪个启动项,都需要设
置如下所示的几个主要配置项。
menuentry :指定在启动菜单中显示的操作系统名称。
set root :指定包含内核等引导文件的 /boot 分区所在的位置。
insmod :加载指定的模块到内核。
linux16 :指定内核文件所在的位置,内核加载时权限为只读 “ro” ,并通过 “root=” 指 定根分区的设备文件位置。
initrd16 :指定启动内核所使用的临时系统镜像文件所在的位置。
进入 “bash-4.2#” 的 Shell 环境以后,重写(或通过之前备份的文件恢复) grub.cfg 配置
文件即可。
sh-4.2# chroot /mnt/sysimage
// 将 /mnt/sysimage 设置为当前环境的根
bash-4.2# vi /boot/grub2/grub.cfg
// 编辑 grub.cfg 文件 , 内容略
bash-4.2# exit
// 退出 chroot 环境
exit
sh-4.2# reboot //退出 sh-4.2 环境 , 系统会自动重启
遗忘 root 用户的密码
切换到待修复 Linux 操 作系统的根目录环境,直接执行“passwd root”命令重设 root 用户的密码即可;或者修改/etc/shadow 文件,将 root 用户的密码字段清空,重启后以空密码可登录系统
sh-4.2# chroot /mnt/sysimage
bash-4.1# passwd root
服务控制及优化启动过程
系统服务控制
systemctl 控制类型 服务名称
start (启动):运行指定的系统服务程序,实现服务功能。
stop (停止):终止指定的系统服务程序,关闭相应的功能。
restart (重启):先退出,再重新运行指定的系统服务程序。
reload (重载):不退出服务程序,只是刷新配置。在某些服务中与 restart 的操作
相同。
status (查看状态):查看指定的系统服务的运行状态及相关信息。
切换运行级别
1 .查看系统的 target
明确当前系统所在的 target 将有助于管理员排除一些应用故障
runlevel
若用户想查看系统启动时默认运行的 targe,可以执行“systemctl get-default”命令以显示系统默认的 target
2. 切换系统的 target
当用户需要将系统转换为其他的 target 时,可以通过传统的 init 程序进行,只要使用与
运行级别相对应的数字( 0 ~ 6 )作为命令参数即可,或者使用 systemctl 命令进行目标切换。
优化启动过程
1 .常见的系统服务
在 CentOS 系统中,默认安装的系统服务多达 100 余种,这些系统服务为用户提供了
丰富的应用服务。
2 .优化开机自动加载的服务
Linux 操作系统在每次开机后会进入默认的 systemd 运行目标(如字符模式或图形模式),
并运行该目标中默认设为启动的各种系统服务
( 1 )使用 ntsysv 工具
ntsysv 工具可以在字符模式中运行,为用户提供一个仿图形的交互式操作界面,专门用于
集中配置各种系统服务的启动状态
( 2 )使用 systemctl 工具
systemctl 工具与 ntsysv 的功能类似,但是 systemctl 不提供交互式的操作界面,它用
于查询或设置系统服务的默认启动状态
enable :开机自动启动。
disable :开机自动关闭。
is-enable :查看开机启动状态