一、引导过程
1、LINUX操作系统开机过程总览
2、LINUX操作系统开机过程详解
(1)开机自检(BIOS)
对硬件设备(cpu、内存、显卡、键盘等设备)进行初步检测,检测成功之后,根据预设的启动顺序,把系统的控制权转交给本机的硬盘(检测是否存在、是否正常).
总:检测出第一个引导系统的设备(硬盘、光驱)
(2)MBR引导
本机硬盘启动系统,从第一个硬盘的扇区中的MBR主引导记录的设置,将系统的控制权交给包含操作系统引导文件的分区,或者直接根据MBR记录中的引导信息调用出启动菜单(grub)
总:运行放在MBR扇区里的启动GRUB引导程序
(3)GRUB菜单
多系统的引导器程序,将显示启动的菜单给用户选择(centos 7默认的是grub 2 引导程序,它的默认位置在/boot/grub.cfg)控制权转交给内核
总:GRUB引导程序通过读取GRUB配置文件 /boot/grub2/grub.cfg ,
来获取内核和镜像文件系统的设置和路径位置。
(4)加载内核(kernel)
- 内核核心程序文件在/boot 目录下,这个文件是编辑好的特殊二进制文件,介于硬件资源和系统程序之间(分配、启动资源,需要多少分配多少)
- 把内核和相关系统镜像文件加载在内存当中——进程初始化
Centos 7系统中,默认的内核文件位于 “/boot/vmlinuz-3.10.0-514.e17.x8664”
总结:把内核和镜像文件系统加载到内存中
(5)init 进程初始化
- linux内核将系统中的/sbin/init 程序加载到内存当中,完成整个系统的初始化
- Linux内核首先将系统中的 “/sbin/init”
- 作用:加载硬盘驱动、检测进入操作系统必须要有的程序,加载到内存中运行
- centos 7中的运行的第一个 init 进程是 /lib/systemd/systemd
二、系统初始化进程
1、init进程
(1)由linux内核加载运行 /sbin/init 程序
(2)init 进程是系统中第一个进程,是所有进程的父进程
(3)init进程的PID (进程标记)号永远为1
2、systemd
(1)Systemd是Linux操作系统的一种 init 软件
(2)CentOS7中采用全新的Systemd启动方式,取代传统的SysVinit
(3)CentOS7中运行的第一个 init 进程是 /lib/systemd/systemd
(4)查看进程——————————ps -elf
3、两者对比
传统 SysVinit 依赖于串行执行 Shell 脚本启动服务,导致效率低下,系统启动速度较慢.systemd能够将更多的服务进程并行启动,并且具有提供按需启动服务的能力,
使得启动更少进程,从而提高系统启动速度。
三、systemd单元类型
1、什么是systemd
systemd是一个用于管理linux系统服务和进程的系统和服务器管理器,它使用单元(unit)来描述和控制系统服务和资源。
2、systemd的功能、特性
(1)支持并行启动服务,提高系统启动速度;
(2)可以自动重启服务,确保服务的可靠性和稳定性;
(3)可以在服务运行期间动态调整服务参数和资源限制,提高系统的灵活性和可管理性;
(4)支持启动依赖关系和控制依赖关系,确保服务的正确启动和运行;
(5)支持多种服务管理方式,例如命令行工具、图形界面、Web 界面等。
3、 systemd的单元类型
(1)systemd的单元类型总括
(2)systemd的单元类型特点
- service单元(.service)
用于启动和管理一个系统服务,如 SSH、MySQL 等。可以指定服务的启动命令、依赖关系、日志记录等参数。
- Target 单元(.target)
是一组服务的集合,可以用于描述系统在不同运行级别下的状态。
例如,multi-user.target 描述了系统在多用户模式下运行的状态。
- Timer 单元(.timer)
用于在指定的时间间隔或时间点触发一个事件,可以用于定时启动或停止服务、备份数据等任务。 - Path 单元(.path)
用于监控文件或目录的状态,并在文件或目录发生变化时触发一个事件,可以用于监控日志文件、配置文件等系统资源。
- Socket 单元(.socket)
用于监听网络套接字,并在接收到请求时触发一个事件,可以用于管理网络服务、提供网络接口等。 - Mount 单元(.mount)
用于管理文件系统的挂载,可以指定文件系统类型、挂载选项等。 - Swap 单元(.swap)
用于管理交换空间的使用,可以指定交换分区、优先级等。 - Device 单元(.device)
用于管理硬件设备,可以指定设备文件、驱动程序、设备属性等。 - Scope 单元(.scope)
用于管理进程组,可以指定进程组的启动命令、资源限制等。 - Slice 单元(.slice)
用于管理进程组的资源配额,可以限制进程组的 CPU、内存等资源使用。 - Automount 单元(.automount)
用于按需挂载文件系统,可以在需要使用时自动挂载指定的文件系统。 - Snapshot 单元(.snapshot)
用于创建和管理 Systemd 系统的快照,可以备份和还原整个系统状态。
3、systemd的步骤
(1)编写配置文件
(2)使用文本编辑器编写一个单元配置文件
(3)配置文件的名称应以.service、.socket、.mount、.target、.device等后缀结尾
(4)分别对应服务单元、套接字单元、挂载单元、目标单元、设备单元等等
(5)配置文件包含了单元的相关信息,例如单元的类型、描述、启动参数、启动顺序、依赖关系等等
4、systemd的配置文件
vim /lib/systemd/system/nginx.service——————————进入配置文件
[Unit]—————————————————————————服务的说明
Description=nginx—————————————————————描述服务
After=network.target——After:依赖,当依赖的服务启动之后再启动自定义的服务,大多数应用程序需要与网络进行通信才能正常工作。network.target 系统目标在系统启动时负责启动网络相关的服务和程序
[Service]————————————————————服务运行参数的设置
Type=forking———————————————————后台运行的形式,使用此启动类型应同时指定PIDFile,以便systemd能够跟踪服务的主进程
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx———————服务的具体运行命令
ExecReload=/bin/kill -s HUP $MAINPID———————————重启命令
ExecStop=/bin/kill -s QUIT $MAINPID————————————停止命令
PrivateTmp=true———————————表示给服务分配独立的临时空间
[Install]———————————— 服务安装的相关设置,可设置为多用户
WantedBy=multi-user.target
四、运行级别
1、systemctl系统服务控制
(1)格式
systemctl 控制类型 服务名称
(2)命令类型
(3)例
systemctl status firewalld.service————————查看防火墙的状态
systemctl stop firewalld.service——————————————关闭防火墙
systemctl start firewalld.service ——————————————开启防火墙
2、运行级别所对应的Systemd目标
(1)概括
(2) 查看运行级别命令
runlevel
(3)切换示例
init 3———————————————————————切换到字符化界面
3、设置系统默认级别
(1)查看系统默认运行级别
systemctl get-default
(2)改变系统级别
- 格式:
systemctl set-default + 单元控制条件(完整的运行级别名称
systemctl set-default multi-user.target
五、修复MBR扇区故障
1、故障原因
病毒、木马等造成的破坏,不正确的分区操作、磁盘读写误操作
2、故障现象
找不到引导程序,启动中断,无法加载操作系统,开机后黑屏
3、解决思路
提前做好备份文件,以安装光盘引导进入急救模式,从备份文件中恢复,修复MBR扇区故障(MBR位于第一块硬盘(/dev/sda) 的第一个物理扇区处,总共512字节)
4、操作
(1)连接光盘镜像
(2)分一个主分区并进行挂载
mkfs.xfs /dev/sdb1————-备份MBR扇区数据到其它磁盘( /dev/sdb1 )
mkdir /backup———————————————————创建空目录
mount /dev/sdb1 /backup/——————————————挂载
cd /backup/
dd if=/dev/sda of=/backup/mbr.bak bs=512 count=1—————将sda中的文件备份在创建的目录中
(3)模拟破坏MBR引导扇区
hexdump -C -n 512 /dev/sda————————————查看二进制文件
dd if=/dev/zero of=/dev/sda bs=512 count=1————模拟破坏
(4)重启
引导界面进入急救模式,从备份文件中恢复MBR扇区数据
先加载好光盘镜像,重启操作系统,
init 6———————————————————————重启操作系统,
当出现安装向导界面时,选择“Troubleshooting"选项,
再选择"Rescue a Centos Linux system" 选项,进入急救模式
选择“1"选择Continue并按Enter键继续
再次按Enter键后将进入带“sh-4.2#"提示符的Bash Shell环境
sh-4.2# mkdir /backupdir
sh-4.2# mount /dev/sdb1 /backupdir
挂载带有备份文件的分区
cd /backupdir
ls
sh-4.2# dd if=/backupdir/mbr.bak of=/dev/sda
恢复备份数据
reboot
(5)重启,加载引导程序
六、修复GRUB引导故障
1、故障原因
MRB中的GRUB引导程序遭到破坏,grub.conf文件丢失、引导配置有误
2、故障现象
系统引导停滞,显示“grub>”提示符
3、解决思路
尝试手动进入引导命令,进入急救模式,重写或者弄备份中恢复grub.conf
向MBR扇区中重建grub程序,引导界而进入急救模式,重建GRUB菜单配置文件
4、操作
(1)模拟删除
rm -rf /boot/grub2/grub.cfg————————————————模拟删除
reboot————————————————————————————重启
(2)重新启动虚拟机
按esc然后选择cdrom,进入急救模式,
加载光盘镜像,切换到系统根环境,重新将GRUB引导程序安装到第一块硬盘 ( /dev/sda)的MRB扇区
sh-4.2# chroot /mnt/sysimage/
bash-4.2# grub2-install /dev/sda
重新构建GRUB菜单的配置文件
bash-4.2# grub2-mkconfig -o /boot/grub2/grub.cfg
grub2-mkconfig——————————————————用于生成grub2的配置文件
参数 -o 或 --output 指定生成的配置文件的路径和文件名
生成的 Grub2 配置文件默认路径为 /boot/grub2/grub.cfg
用于生成 Grub2 配置文件的命令,
grub2-mkconfig
bash-4.2# exit
sh-4.2# reboot
七、修改root密码
1、关闭安全机制
vim /etc/selinux/config
运行命令getenforce,验证SELinux状态。返回状态应为enforcing或者permissive
enforcing:凡是违反selinux的安全机制的禁止一切
permissive:宽容模式,允许通过,但是会记录日志
setenforce 0——————————————关闭关闭selinux的安全机制
getenforce ————————————————查看安全机制
2、进入急救模式,重设密码
进入急救模式,加载系统镜像
切换到系统根环境,重设root 用户密码
sh-4.2# chroot /mnt/sysimage
bash-4.2# passwd root
重启