linux系统系统原理及故障排除
linux 7/8系统启动过程及相关配置文件
启动流程:
1.在按下电源之后,BIOS 会加载硬件信息并对硬件进行自检。
2.在自检完成之后,会读取由 BIOS 设置的第一个可启动设备,此时可以读入 MBR 引导记录中的主
引导程序(boot loader)。Boot Loader 就是在操作系统内核运行之前运行的一段程序,GRUB 是其中
一种的引导程序的名称。
3.主引导程序可以指定哪个内核(Kernel)文件来进行启动,并将被指定的内核加载到内存当中运
行。
4.在系统启动完成之后 Linux 才会调用外部程序开始准备软件执行的环境。并加载所有操作系统运行
所需要的软件程序。
systemd运行原理
Systemd 概述:systemd 即为 system daemon [ˈdi:mən] 守护进程,是 linux 下的一种 init 软 件,开发目标是系统服务间的依赖关系,并依此实现系统初始化时服务的并行启动,同时达到降低 Shell的系统开销的效果,最终代替现在常用的 System V 与 BSD 风格 init 程序。
与多数发行版使用的 System V 风格 init 相比,systemd 采用了以下新技术: (1) 采用 Socket 激活式与总线激活式服务,以提高相互依赖的各服务的并行运行性能; (2) 用 Cgroups代替 PID 来追踪进程,以此即使是两次 fork(分叉)之后生成的守护进程也不会脱离 systemd 的控制。(fork 进程生成子进程,子进程又生成子进程)
unit 对象:unit 表示不同类型的 systemd 对象(就是服务器启动脚本),通过配置文件进行标识和配置;文件中主要包含了系统服务、监听 socket(套接字(Socket),就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象名,一个 ip 和一个端口就是一个套接字)、保存的系统快照以及其它与init 相关的信息
Systemd 配置文件:
•/usr/lib/systemd/system/ #这个目录存储每个服务的启动脚本,类似于之前 6 系统的/etc/init.d/
ls /usr/lib/systemd/system/Network
•/run/systemd/system/ #系统执行过程中所产生的服务脚本,比上面目录优先运行
•/etc/systemd/system/ #管理员建立的执行脚本,类似于/etc/rc.d/rcN.d/Sxx 类的功能,比上面目录优先运行
管理系统服务
命令: systemctl COMMAND name.service
CentOS7/8
启动:systemctl start name.service
停止:systemctl stop name.service
重启:systemctl restart name.service
状态:systemctl status name.service
重新加载配置文件:systemctl reload 或 restart name.service
chkconfig 命令的对应关系
设定某服务开机自启 systemctl enable name.service
设定某服务开机禁止启动 systemctl disable name.service
查看所有服务的开机自启状态 systemctl list-unit-files --type service
查看服务是否开机自启 systemctl is-enabled name.service
loaded:Unit 配置文件已处理
active(running):一次或多次持续处理的运行
active(exited):成功完成一次性的配置
active(waiting):运行中,等待一个事件
Inactive:不运行
• enabled:允许开机启动
• disabled:禁止开机启动
• static: 表示该服务与其他服务相关联,不能单独设置该服务的启动状态
例1:加密grub
生成密码
[root@ ~]# grub2-mkpasswd-pbkdf2
输入口令: ******
Reenter password: ******
PBKDF2 hash of your password is
。。。。。。。。。。
[root@ ~]# vim /etc/grub.d/00_header #在最后后面添加如下内容,注 昵称 这
个用户名可以换成自己的用户名
cat <<EOF
set superusers='昵称'
password_pbkdf2 昵称 和下面密码在一行
。。。。。。。。。。
EOF
[root@ ~]# grub2-mkconfig -o /boot/grub2/grub.cfg #更新 grub 信息
例2:通过 liveCD 进入救模式-重装 grub 修复损坏的系统
使用系统光盘进入救援模式拯救坏掉的系统
场景:当系统坏了,进不去了,还需要把里面的数据复制出来,怎么办?可以进入救援模式拷贝数据
例2:当 MBR 引导记录损坏后-重装 grub 进行修复
实验环境:破坏硬盘的前 446 字节
[root@ ~]# dd if=/dev/zero of=/dev/sda bs=1 count=446
if:输入文件名;of:输出文件名;bs=1 一次 1 字节;count=446 复制 446 次
446+0 records in
446+0 records out
446 bytes (446 B) copied,0.000758682 s,588 kB/
重启,进入bios,设置光盘cd为第一引导
进入启动界面,选择故障排除界面
进入救援模式
按1,进入shell,回车进入sh,输入以下内容
最后,退出即可修复