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 进程负责完成一系列的系统初始化过程,最后等待用户进行登录。
由Linux内核加载运行/sbin/init程序
init进程时系统中第一个进程
init进程的PID(进程标记)号永远是1
Systemd是Linux操作系统的一种init软件
CentOS 7 中采用全新的System启动方式,取代传统的SysVinit
CentOS 7 中运行的第一个init进程是/lib/systemd/systemd
Systemd 单元类型 单元类型 扩展名 说明
Service.service描述一个系统服务Socket.socket描述一个进程间通信的套接字(通信协议的载体)Device.device描述一个内核识别的设备文件Mount.mount描述一个文件系统的挂载点Automount.automount描述一个文件系统的自动挂载点Swap.swap描述一个内存交换设备或目录Timer.timer描述一个定时器(用于实现类似cron的调度任务)Path.path描述一个文件系统中文件或目录(path 路径)Snapshot.snapshot用于保存一个systemd的状态(snapshot 快照)Scope.scope使用systemd的总线接口以编程的方式创建外部进程Slice.slice描述居于Cgroup的一组通过层次组织的管理系统进程Target.target描述一组systemd的单元(target 目标)Init运行级别所对应的Systemd目标
init运行级别Systemd 的 target说明0target关机状态,使用该级别时会关闭主机1rescue.target单用户模式,不需要密码验证即可登录系统,多用于系统维护2multi-user.target用户定义/域特定运行级别,默认等同于33multi-user.target字符界面的完整用户模式,大多数服务器主机运行在此级别4multi-user.target用户定义/域特定运行级别,默认等同于35graphical.target图形界面的多用户模式,提供了图形桌面操作环境6reboot.target重新启动,使用该级别时将会重启主机故障原因 病毒,木马等造成的破坏 不正确的分区操作,磁盘读写误操作
故障现象 找不到引导程序,启动中断 无法加载操作系统,开机后黑屏
解决思路 提前做好备份文件 以安装光盘引导进入急救模式 从备份文件中恢复
实验环境 VMware软件,开centos 7,并为其添加一块硬盘(备份数据用的)
恢复步骤 1.备份已损坏MBR扇区数据(实际中我们都是备份整个文件) 加一块磁盘做备份
2.模拟故障
3.加载系统镜像文件中的急救模式 加载系统镜像文件中的内核界面 将备份数据做恢复处理
实验过程 虚拟机加一块300G硬盘做实验 进系统查看磁盘 fdisk -l ###看是否有sdb mkfs -t ext4 /dev/sdb ###格式化sdb 按y确认删除 挂载mount /dev/sdb /opt df -Th 查看一下 1、备份MBR扇区数据 执行以下操作可以将第 一块硬盘(sda)的 MBR 扇区备份到第二块硬盘的 sdb1 分区中(挂载到/opt 目录)。 dd if=/dev/sda of=/opt/mbr.bak bs=512 count=1 2、模拟MBR扇区故障 执行以下操作可以从设备文件 zero 中读取 512 字节的数据,并将其覆盖到第一块硬盘(sda),从而破坏 MBR 扇区中的数据。 dd if=/dev/zero of=/dev/sda bs=512 count=1 完成上述操作后重启系统,将会出现“Operating system not found”的提示信息,表示无法找到可用的操作系统,因此无法启动主机。 3.从备份文件中恢复 MBR 扇区数据 由于 MBR 扇区被破坏以后,就无法再从该硬盘启动系统,所以需要使用其他硬盘中的操作系统进行引导,或者直接使用 CentOS 系统的安装光盘进行引导。不管使用哪种方式, 目的都是相同的——获得一个可以执行命令的 Shell 环境,以便从备份文件中恢复 MBR 扇区中的数据。 以使用 CentOS 安装光盘引导为例,当出现安装向导界面时,选择“Troubleshooting” 选项,如图所示,进入修复故障页面。 再选择“Rescue a CentOS Linux system”选项,将以“救援模式”引导Linux 操作系统。 然后系统会自动查找硬盘中的 Linux 分区并尝试将其挂载到/mnt/sysimage 目录(选择 “1”确认并按 Enter 键继续)。接下来会出现 rescue 字符界面 最后,按 Enter 键后将进入带“sh-4.2#”提示符的 Bash Shell 环境 mount /dev/sdb /mnt ## 将备份sdb备份的文件挂到mnt下 然后进去看下是否有mbr.bak dd if=/mnt/mbr.bak of=/dev/sda count=1 bs=512 ###恢复备份数据 重启reboot 进入系统测试是否正常。 系统正常启动
故障原因
MBR中的GRUB引导程序遭到破坏grub.conf文件丢失,引导配置有误故障现象
系统引导停滞,显示“grub>”提示符解决思路
尝试手工输入引导命令(成功率很低,不建议)进入急救模式,重写或者从备份中恢复grub.conf向MBR扇区中重建grub程序光盘引导,进入急救模式,提示操作 从备份文件中恢复MBR扇区
'//第一步:查找并破坏grub引导程序(grub.cfg)' [root@localhost ~]# cd /boot '//进入/boot目录' [root@localhost boot]# ls '//查看' config-3.10.0-693.el7.x86_64 efi grub '存放的是启动菜单的背景图片和样式' grub2 '存放配置文件' initramfs-0-rescue-d078430d0d8f434fb5ad6e47678ea86f.img initramfs-3.10.0-693.el7.x86_64.img initramfs-3.10.0-693.el7.x86_64kdump.img initrd-plymouth.img symvers-3.10.0-693.el7.x86_64.gz System.map-3.10.0-693.el7.x86_64 vmlinuz-0-rescue-d078430d0d8f434fb5ad6e47678ea86f vmlinuz-3.10.0-693.el7.x86_64 [root@localhost boot]# cd grub '//进入grub目录' [root@localhost grub]# ls '//查看' splash.xpm.gz [root@localhost grub]# cd ../grub2 '//没有发现grub配置文件,进入grub2目录中查找' [root@localhost grub2]# ls '//发现grub.cfg配置文件' device.map fonts grub.cfg grubenv i386-pc locale [root@localhost grub2]# rm -rf grub.cfg '//删除grub.cfg配置文件' [root@localhost grub2]# ls device.map fonts grubenv i386-pc locale '//删除成功,' [root@localhost grub2]# init 6 '//重启'系统无法正常启动 重新启动系统,在载入条时,立马按F2进入BIOS界面 按方向键右键到Boot界面,选择到CD-ROM Drive,按+号将这一选项移到最上面 再移动到Exit,回车保存并重启 1.装入光盘,在光盘引导界面选择troubleshooting: 2、进入troubleshooting菜单 选择Rescue a centos system 3、然后系统会自动查找硬盘中的 Linux 分区并尝试将其挂载到/mnt/sysimage 目录(选择 “1”确认并按 Enter 键继续)。接下来会出现 rescue 字符界面 最后,按 Enter 键后将进入带“sh-4.2#”提示符的 Bash Shell 环境 4、进入“bash-4.2#”的 Shell 环境以后,重写(或通过之前备份的文件恢复)grub.cfg 配置文件即可。重写完 grub.cfg 配置文件后,需要使用 grub2-mkconfig 工具更新 grub.cfg 配置文件。
将/mnt/sysimage 设置为当前环境的根 chroot /mnt/sysimage/ (若未执行“chroot /mnt/sysimage”命令,则重新建立的 grub.cfg 配置文件应该位于/mnt/sysimage/boot/grub2/grub.cfg) 进入boot目录,查看文件 5、执行“grub2-install /dev/sda”命令可以重新将grub 引导程序安装到第一块硬盘(sda)的 MRB 扇区
使用 grub2-install 命令修复grub grub2-install /dev/sda 查看是否修复 cd /boot/grub2/ ls 已经修复 6、修复grub.cfg配置文件 grub2-mkconfig -o /boot/grub2/grub.cfg 查看是否修复 cd /boot/grub2/ ls 7、重启 exit reboot ###主要改启动项,否认还是进光盘模式
10、重启时在载入时立即按F2进入BIOS 将开机启动项改为硬盘,保存退出 最后成功进入系统
故障原因 遗忘root用户的密码
故障现象 无法进行需要root权限的管理操作 若没有其他可用账号,将无法登录系统
解决思路 进入急救模式,重设密码
重新启动系统,在载入条时,立马按F2进入BIOS界面 按方向键右键到Boot界面,选择到CD-ROM Drive,按+号将这一选项移到最上面 再移动到Exit,回车保存并重启
1.装入光盘,在光盘引导界面选择troubleshooting: 2、进入troubleshooting菜单 选择Rescue a centos system 3、进入引导可以按回车,或者等待 按1 在按会车进入sh-4.2# 4、将/mnt/sysimage 设置为当前环境的根 chroot /mnt/sysimage/ 5、修改密码 passwd root 输入密码:Abc123 ###第一次 输入密码:Abc123 ###第二次 6、重启 exit reboot ###主要改启动项,否则还是进光盘模式 7、验证 登录:root 密码:Abc123
选择急救模式,进入救援centos系统的方式都是一样的
加载镜像系统命令
chroot /mnt/sysimage重新构建grub菜单系统命令
grub2-install /dev/sda grub2-mkconfig -o /boot/grub2/grub.cfg在 CentOS 系统中,各种系统服务的控制脚本默认放在/usr/lib/systemd 目录下。通过 systemctl 命令工具可以实现对指定系统服务的控制 语法格式如下: systemctl 控制类型 服务名称
常用控制类型
start(启动):运行指定的系统服务程序,实现服务功能。stop(停止):终止指定的系统服务程序,关闭相应的功能。restart(重启):先退出,再重新运行指定的系统服务程序。reload(重载):不退出服务程序,只是刷新配置。在某些服务中与 restart 的操作相同。status(查看状态):查看指定的系统服务的运行状态及相关信息。对于在实际生产环境中运行的服务器,不要轻易执行 stop 或 restart 操作,以免造成客户端访问中断,带来不必要的损失。若只是要为系统服务启用新的配置,可以采用相对温和一些的“reload”参数重新加载配置,而不是生硬地执行“restart”。
例如: 对正在为用户提供Web 访问的 httpd 服务,当需要应用新的配置时,建议执行“systemctl reload httpd.service” 命令来重新载入配置,而不是执行“systemctl restart httpd.service”。
[root@localhost ~]# systemctl reload httpd.service查看运行级别
runlevel 命令 runlevel 只能查看切换运行级别与当前运行级别 例如 [root@localhost ~]# runlevel N 5 '//N 是上一次运行的级别,5是这一次运行的级别。因为是开机后就查看,所以上一次的运行级别显示为N(no)' '若从init 5 切换到 init 3 ,在init3中输入runlevel命令,则会显示 5 3' systemctl 工具 systemctl 能查看默认的运行级别 例如:检查系统网路是否开机自启动CentOS 系统中常见的系统服务
服务名称用途简介备注atd延期、定时执行任务建议关闭bluetooth发现、认证蓝牙相关设备建议关闭crond按预定周期执行计划任务建议开启irqbalance多核心 CPU 处理器的调度支持建议开启kdump记录内核崩溃时的内存信息建议关闭lvm2-monitorLVM 管理及监控建议开启netfs访问共享文件夹等网络文件系统建议开启network配置及使用网卡、网络地址建议开启restorecondSELinux 安全机制的文件监控和恢复功能建议关闭rhnsd访问 Red Hat Network,获取通知、提交订阅等建议关闭rpcgssd管理 NFS(Network File System,网络文件系统)访问中的客户程序语境建议关闭saslauthd基于文本的身份认证建议关闭smartd监控本地硬盘的状态并发送故障报告建议开启smb文件共享服务建议关闭sshd提供远程登录和管理 Linux 主机的功能建议开启rsyslog记录内核、系统的日志消息建议开启vsftpd通过 FTP(File Transfer Protocol,文件传输协议)提供文件上传、下载功能建议关闭必须强调的是,这些服务到底是选择开启还是关闭,应根据主机的实际功能需求来定, 不要生搬硬套。例如,如果当前的 Linux 主机用来向局域网提供文件共享服务,那么 smb 服务应开启,而不能关闭
操作时按↑、↓方向键来选择不同的系统服务,按 Space(空格)键设置服务的默认启动状态(“[*]”表示启动,“[ ]”表示关闭)。如果要查看所选定服务的说明信息,按 F1 键可以获取帮助。
systemctl 控制选项 服务名称
常用的选项有三种:
enable:开机自动启动。disable:开机自动关闭。is-enable:查看开机启动状态。查看系统服务的启动状态 systemctl is-enable 服务名称
设置系统服务的启动状态 systemctl enable/disable 服务名称
例如,执行以下操作即可配置 apache 服务开机自动启动或关闭,并查看开机启动状态。当 apache 服务设置为开机自动启动时,在/etc/systemd/system/multi-user.target.wants/目录下面会出现一个文件名为 httpd.service 的软连接文件。当 apache 服务设置为开机自动关闭时,在/etc/systemd/system/multi-user.target.wants/目录下面的 httpd.service 软连接文件就会被删除。
[root@localhost ~]# systemctl enable httpd.service //apache 服务设置为开机启动 Createdsymlinkfrom /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service. [root@localhost ~]# systemctl is-enabled httpd.service enabled [root@localhost ~]# systemctl disable httpd.service //apache 服务设置为开机关闭 Removed symlink /etc/systemd/system/multi-user.target.wants/httpd.service. [root@localhost ~]# systemctl is-enabled httpd.service disabled在当前系统下执行“systemctl list-units --type=service”命令可以查看当前系统中所有已激活的系统服务,命令如下:
[root@localhost ~]# systemctl list-units --type=service //查看所有已经激活的系统服务 UNIT LOAD ACTIVE SUB DESCRIPTION abrt-ccpp.service loaded active exited Install ABRT coredump hook abrt-oops.service loaded active running ABRT kernel log watcher abrt-xorg.serviceloaded active running ABRT Xorg log watcherdisabled