一.开机启动的完整过程
引导过程:
1.bios加电自检
检测硬件是否正常,然后根据bios中的启动项设置,去找内核文件
服务器主机开机以后,将根据主板BIOS中的设置对CPU、内存、显卡、键盘灯设备进行初步检测,检测成功后根据预设的启动顺序移交系统控制权,大多时候会移交给本机硬盘。
2.mbr
因为grup太大,第一个扇区存不下所有的grub程序,所以分为2部分指引硬件找到内核文件
当从本机硬盘中启动系统时,首先根据硬盘第一个扇区中MBR(主引导记录)的设备,将系统控制权传递给包含操作系统引导文件的分区,或者直接根据MBR记录中的引导信息调用启动菜单(如grub)
3.grub
根据grub配置文件(grub.cfg)中记录的位置,去找到内核文件
对于Linux操作系统来说,GRBU(统一启动加载器)是使用最为广泛的多系统引导程序。系统控制权传递给GRUB以后,将会显示启动菜单给用户选择,并根据所选项(或采用默认值)加载Linux内核文件,然后将系统控制权转交给内核,需要注意的是,Centos7 采用的是GRUB2启动引导器。
注意:GRUB引导程序通过读取GRUB配置文件/boot/grub2/grub.cfg ,来获取内核和镜像文件系统的设置和路径位置
4.加载内核文件
把内核运行在内存中
Linux内核是一个预先编译好的特殊二进制文件,介于各种硬件资源与系统程序之间,负责资源分配与调度。内核接过系统控制权以后,将完全掌控整个Linux操作系统的运行过程,在Centos系统中,默认的内核文件位于“/boot/vmlinuz-3.10.514.e17.x86_64”
5.启动第一个进程
为了完成进一步的系统引导过程,Linux内核首先将系统中的“/sbin/init”程序加载到内存中运行(运行中的程序称为进程),init进程负责完成一系列的系统初始化过程,左后等待用户进行登录,systemd
概述:
加电后bios程序会自检硬件,硬件无故障后,会根据第一启动项去找内核,一般来说第一启动项是硬盘,找到硬盘后,会根据mbr的指引找到完整的grub程序,再根据grub的配置文件找到内核文件的具体位置,然后将内核文件加载到内存中运行,内存加载好后会启动第一个程序。
二.系统初始化进程
1. init进程
由Linux内核加载运行/sbin/init程序
init进程是系统中第一个进程
init进程的PID(进程标记)号永远为1
2. systemd进程
systemd是linux操作系统的一种init软件
centos7中采用全新的systemd启动方式,取代传统的sysvinit
centos7中运行的第一个init进程是/lib/systemd/system
区别:
init 串行启动后续的程序 一个一个按顺序启动
systemd 是并行启动程序 全部一起启动
概括:
路径:/lib/systemd/system/*.service为结尾的文件
systemd能够识别并管理这些以.service为结尾的程序
2.1 systemd单元进程
2.2 运行级别所对应的systemd目标
查看当前运行级别 runlevel
各个级别的作用:
0 关机
1 单用户 类似于windows的急救模式
2 字符界面 少些功能(nfs)
3 字符界面
4 字符界面 从来没用
5 图形界面
6 重启
init 0 关机
init 3 切换到字符界面
注意:
yum及rpm安装的软件可以直接使用systemctl去启动 关闭 重启 开机自启等功能
编译安装 不可以直接使用systemctl命令去管理程序 需要手写一个配置文件
systemd unit(单元) ,systemd方便管理程序,将程序按照特定的功能分成了很多单元
三.修复mbr扇区故障
1.故障原因
病毒、木马等造成的破坏
不正的分区操作、磁盘读写误操作
MBR位于第一块硬盘( /dev/sda) 的第一个物理扇区处,总共512字节
2.故障现象
找不到引导程序,程序中断
无法加载操作系统,开机后黑屏
使用dd命令模拟将MBR损坏,复制512字节到/dev/sda中进行覆盖MBRdd if=/dev/zero of=/dev/sda count=1 bs=512
3.解决思路
应提前做好备份
以光盘引导进入急救模式
从备份文件中恢复
1、在覆盖前需要使用dd进行备份,如果没有备份,那这个系统就挂了。
怎么备份?备份需要使用dd命令将/dev/sda中的前512字节复制到一个新的硬盘中,
新的硬盘需要进行分区、格式化、挂载(建议永久挂载),挂载在新创建的目录下面。2、进入linux中的急救模式,
(在重启前需要在DVD中的设置镜像,不然就无法进去急救模式)。3、在shell环境中,新创建一个目录,然后将这个硬盘挂载在这个目录下
因为硬盘在前面已经复制过MBR的备份进去,所以它里面还是存在的,
最后将这个目录下的文件使用dd复制到/dev/sda中,重启即可。
4.操作步骤
1.新加一块盘,然后做好分区,格式化,挂载。
2.将备份文件复制到新盘
3.模拟破坏/dev/sda
4.进入急救模式
reboot重启成功!!!
四.修复gurb扇区故障
1.故障原因
MBR中的GRUB引导程序遭到破坏
grub.conf文件丢失、引导配置有误
2.故障现象
系统引导停滞,显示“grub>”提示符
3.解决思路
尝试手动输入引导命令
进入急救模式,重写或者从备份中恢复grub.conf
向MBR扇区中重建grub程序
4.实验步骤
/boot/grub/目录下的包是用于启动菜单的背景图片及样式
/boot/grub2/grub.cfg #GRUB配置文件
1 先模拟破坏grub.cfg配置文件
2 重启进入急救模式
3 先切换根,从光盘的根切换到自己的系统的根
4 重新安装grub2程序在sda磁盘
5 重新生成配置文件
6 exit 重启
五.Centos 7遗忘root用户的密码
1.故障原因
遗忘root用户的密码
2.故障现象
无法进行需要root权限的管理操作
若没有其它可用账号将无法登陆系统
3.解决思路
进入急救模式重设密码
4.实验步骤
①有光驱
②无光驱
1.进入系统,在选择内核模式,选择第一行,按e
进入下面页面
2.将光标移动到linux行开头行的最后,添加 rd.break
3.ctrl + x 运行
进入到单用户模式
4.重新挂载,添加读写权限
5.切换到真正的根
6 修改密码
7.如果开启了selinux需要重新打上标记
六.服务程序管理
什么是服务程序
1.一旦运行一直运行不会退出
2.一般是后台运行,不会影响前台的操作
1.chkconfig centos 6
service 服务程序 start
service 服务程序 stop
service 服务程序 restart
service 服务程序 reload
service 服务程序 status
在 /etc/init.d写一个同名文件的脚本(必须要有 执行权限)
chkconfig --add 服务名称
chkconfig --level 35 服务程序 on 开机自启
chkconfig --level 35 服务程序 off 关闭开机自启
2.systemd centos 7
格式:
systemctl 控制类型 服务名称
常用控制类型
类型 | 动作 |
start | 启动 |
stop | 停止 |
restart | 重新启动 |
reload | 重新加载 |
status | 查看服务状态 |
enable | 开机自启 |
disable | 开机不自启 |
开机自启
systemctl enable 服务名
开机自启,并立即启动
systemctl enable --now 服务名
开机不自启
systemctl disable 服务名
开机不自启,并立即关闭
systemctl disable --now 服务名
注意:如果用 yum 安装以及rpm 安装会自动生成一个配置文件,不需要我们手动加入systemd,会自己添加
3.服务配置文件
/usr/lib/systemd/system/NAME.service
三部分组成:
[Unit] 定义systemd单元的元数据
[Service] 服务的配置,只有systemd单元是服务类型时才有这一段信息
[Install] 定义是否是开机启动
Unit段:
Service段:
Install段:
编辑完之后,需要刷新一下
开启并查看状态
关闭并查看状态
4.实验步骤
1.编译安装
2.编写服务配置文件
3.刷新
4.开启查看状态 关闭查看状态