linux开机引导过程总览:
开机自检
服务器开机后会根据主板BIOS中的设置,对cpu,内存,显卡,硬盘等一系列设备进行初步检测,正常运行,这里指的是硬盘,系统开始移交控制权给硬盘/dev/sda。
MBR引导:
第一个扇区的主引导记录,引导系统找到boot分区,找到系统的启动程序,根据mbr记录调用启动菜单grub,系统控制权移交给grub。
grub(统一启动加载器,多系统引导程序)菜单:
控制权交给grub后,显示启动菜单给用户进行选择,选择后加载所选择操作系统的内核文件。centos7后采用的是grub2,目录位/boot/grub2/grub.cfg。
加载内核
内核是一个介于硬件资源和系统程序直接,负责资源分配调度的二进制文件。给这些系统的程序来进行使用。这个时候内核文件将控制整个系统的运行过程。此时会进行驱动程序,用户定义开机自启程序和系统启动必要的环境程序的资源分配并加载到内存中。之后系统的控制权会移交给系统初始化的程序。
系统初始化
在上面的程序加载到内存中后,/sbin/init开始运行上述程序,驱动,用户自定义,系统必要的环境程序全部启动,等待用户的登录。
在centos7之前的初始化程序是init,执行是串行,速度较慢。centos7之后位systemd,执行方式为并行,速度快。这两个程序的systemd pid都是1,是所有进程的父进程。
systemd通过单元unit来描述和控制系统的进程和资源。
特点:1,并行处理。
2,支持自动重启服务,可以确保进程的可靠性和稳定性。
3,可以动态调整服务的参数和资源控制。
4,支持启动依赖关系,而是可以控制依赖关系,可以确保进程的正确启动以及运行。
5,支持命令,也支持图形化工具。
常见system单元类型:
service:启动,管理一个进程,可以指定服务的启动,关闭重启,查看状态。依赖关系,日志记录。
socket:通信套接字,监听网络套接字,管理网络服务,提供网络接口。
target:一组服务的集合,用于描述系统在不同运行级别下的状态。
systemctl 系统控制命令
控制类型:
start 开启
stop 停止
restart 重启
reload 重新加载
status 查看状态
get-default 查看默认运行级别
set-default 设置默认运行级别,后面需要跟下面的target
runlevel 查看运行级别
N表示之前没有切换过运行级别,数字表示当前运行级别
关机命令
int 0
shutdown
poweroff
小实验1,mbr分区被删除导致系统无法启动
现需要挂载光盘,进入急救模式
挂载恢复文件
mount /dev/sdb1 /backup
将恢复文件放回sda
dd if=/backup/mbr.bak of=/dev/sda
小实验2,grub引导故障
进入系统急救模式
切换到bash
chroot /mnt/sysimage/
重建grub文件
grub2-mkconfig -o /boot/grub2/grub.cfg
小实验3:忘了root密码
先关闭系统防火墙,把系统安全等级切换为0
进入急救模式
切换到bash
chroot /mnt /sysimage
重置密码
passwd root