目录
绪论:
linux操作系统引导过程:
1、 linux操作系统引导
1.1 开机自检(BIOS):
· 服务器开机之后,根据主板bios中的设置:对cpu、内存、显卡、硬盘等一系列设备进行初步的检测(初步检测就是检测设备是否正常运行,正常运行,这里指的是硬盘,因为所有的引导程序都在硬盘,系统就开始移交控制权,把控制权交给硬盘/dev/sda)
1.2 MBR引导:
主引导记录,第一个扇区的MBR,引导系统找到boot分区,就找到系统的启动程序,根据MBR记录调用启动菜单(启动菜单:grub),系统的控制权移交给grub/
1.3 grub菜单:
统一启动加载器
grub作用:多系统的引导器程序。控制权到了grub菜单显示启动菜单给用户来进行选择,选择了之后(默认值)--加载所选择的操作系统的linux内核文件,系统控制权的移交到加载的内核(centos 7采用的是grub2的启动引导器,文件位置:/boot/grub2/grub.cfg)/
1.4 加载linux内核:
内核也是一个文件,这个文件是一个已经编译好的二进制文件,介于硬件资源和系统程序之间,负责资源的分配,调度给这些系统程序来进行使用。这个时候内核文件将控制整个系统的运行过程。(驱动程序,用户自定义的开机自启程序,以及系统启动必要的环境程序,这个时候只是在分配资源,程序还没有真正运行,提前分配好了资源。统统加载到内存当中,系统控制权的移交---系统的初始化程序
1.5 系统初始化:
加载到了内存中,在内存中开始运行,老版本存在/sbin/init开启运行上述程序,驱动、用户自定义、系统必要的环境程序全部启动,等待用户的登录
1.6 核心总结
开机自检(BIOS):检测出第一个能够引导系统的设备,要么是硬盘,要么是光驱
MBR主引导程序:引导包含操作系统的引导文件
grub菜单:获取用户选择的操作系统指定内核以及镜像文件
加载内核:就是来给驱动程序、系统依赖项、用户自定义程序, 调度、分配资源,放到内存中
init初始化:启动上述程序,等待用户登录
systemd 通过单元[unit]来进行控制,并行启动,速度快
2、初始化
2.1 centos 7之前的初始化方式:
init:初始化进程是串行,一个一个执行,速度比较慢。init进程是系统的第一个进程,是所有进程的父进程,进程号永远为1
2.2 centos 7
现在的是systemd
systemd:进化的init初始化程序,初始化进程是并行,速度快
在centos 7:第一个init是systemd pid也是1,也是所有进程的父进程
systemd:
· 并行处理
· 支持自动重启服务,确保进程的可靠性和稳定性
· 动态的调整服务的参数和资源控制,提高灵活性以及可管理性
· 支持启动依赖关系,而且可以控制依赖关系,可以确保进程的正确启动和运行
· 既可以支持命令行,也可以支持图形化工具
2.3 systemd
systemd:用于管理系统进程的管理器,通过单元[unit]来描述和控制系统的进程以及资源。提供服务进行控制
通过单元类型来进行控制(system单元类型):
service:启动、管理一个系统的进程,firewalld、httpd、mysql 可以指定服务的启动、关闭、重启、查看状态、依赖关系、日志记录
socket(通信套接字):监听网络套接字,管理网络服务,提供网络接口进行通信
target:一组服务的集合,主要作用是用于描述系统在不同运行级别下的状态。你以什么状态来进行系统运行
· 图形化模式
· 字符模式
· mult-user.target:多用户模式
2.4 系统控制命令:systemctl
systemctl 控制类型 进程名称
控制类型:
start 开启
stop 停止
restart 重启,只要是修改了配置文件必须要重启,否则不生效
重启得先stop在重启
reload 重新加载,也可以用reload 没有stop的过程。如果在运行的程序不能restart,需要reload
status 查看状态
对指定的进程进行控制:
yum安装会直接写在systemctl配置文件中
看状态:
开启:systemctl start httpd.service
看状态:systemctl staus httpd.service
2.5 运行级别
2,3,4都是字符界面
查看运行级别:runlevel 回车出来N 5 N表示之前还没切换过运行级别,5表示当前的运行级别
init 3 切换运行级别
运行级别的几种状态:
0 关机
1 单用户模式,一般用于维护
2 字符界面
3 字符界面
4 字符界面
5 图形化界面
6 重启
systemctl get-default 查看系统的默认运行级别
永久固定运行级别:systemctl set-default 加上multi-user.target 此时不能用数字,必须得用命令代码
systemctl set-default multi-user.target 再修改回来
init 0和shutdown和poweroff也表示关机关闭服务器
init 6和reboot都表示重启服务器
3 实验,可以检测虚拟机环境配置是否有问题
3.1 实验1:模拟MRB扇区故障并修复
MBR被删除导致系统无法启动,怎么修复?
虚拟机设置cd/dvd打钩,下面的找到镜像文件
添加一个硬盘
lsblk
partprobe刷新一下
lsblk
分区sdb5G
格式化:mkfs.xfs /dev/sdb1
mkdir /data
mount /dev/sdb1 /data
cd
/data
df -h
把老的文件拿出来备份:文件MBR在sda里面dd if=/dev/sda of=/data/mbr.bak
bs=512 count=1 从sda里面把mbr这个文件放到data目录下
破坏掉:dd if=/dev/zero of=/dev/sda bs=512 count=1 用空字符塞满就会故障
然后reboot
此时进不去虚拟机
如下图:选择trouble那一行
回车进去之后选择第二行回车
输入:1
shell回车进入急救环境
在急救模式建立一个目录,把sdb1挂载上backup:
此时reboot重启就行了
3.2 实验2修复grub引导故障
模拟故障:rm -rf /boot/grub2/grub.cfg 先删除掉
reboot
在读条界面鼠标点进去虚拟机然后快速按esc,选择第三个CD
trouble修理回车选择第二个
按1
3.3 实验3:修改root密码
1、卡在普通用户切换不回去root,在普通用户切换到root时候忘记密码了
先关安全机制
关防火墙
reboot
在读条界面鼠标点进虚拟机然后快速esc
选择第三个CD,回车,选择trouble然后回车选择第二个
按 1
加载光盘映像切换到根目录:
2. 在root账户下直接passwd直接改
passwd root