1.引导过程
1.1开机自检
加电检测硬件是否有故障,如果无故障直接就去bios中设置的第一启动项找操作系统
1.2MBR引导
当从本机硬盘中启动系统时,首先根据硬盘第一个扇区中 MBR(Master Boot Record, 主引导记录)的设置,将系统控制权传递给包含操作系统引导文件的分区;或者直接根据 MBR 记录中的引导信息调用启动菜单(如 GRUB)。 总结:运行放在MBR扇区里的启动 GRUB引导程序
1.3 GRUB
grub会根据grub.cfg配置文件找到操作文件,找到根
1.4加载Linux内核 (操作系统)调度硬件
Linux 内核是一个预先编译好的特殊二进制文件,介于各种硬件资源与系统程序之间, 负责资源分配与调度。内核接过系统控制权以后,将完全掌控整个 Linux 操作系统的运行过 程。
1.5 启动init进程
加载硬件驱动程序,内核把init进程加载到内存中运行
传统init依赖于串行执行Shell 脚本启动服务,导致效率低下,系统启动速度较慢 排队 systemd能够将更多的服务进程并行启动,并且具有提供按需启动服务的能力,使得启动更少进程,从而提高系统启动速度 大家一起
2.服务
systemd是保姆级的进程,代为管理所有的进程
2.1systemd服务
Systemd新特性
- 系统引导时实现服务并行启动
- 按需启动守护进程
- 自动化的服务依赖关系管理
- 同时采用socket式与D-Bus总线式激活服务
- socket与服务程序分离
- 向后兼容sysv init脚本
- 使用systemctl 命令管理,systemctl命令固定不变,不可扩展,非由systemd启动的服务,
- systemctl无法与之通信和控制
- 系统状态快照
systemd单元类型
运行级别多对应的systemd目标
init 0-6 就可以切换到对应的运行级别
2.2系统服务控制
格式:systemdctl 控制类型 服务名称(程序名)
控制类型有:start , stop ,status,reload,restart , enable ,disable
3.修复MBR扇区故障实验
3.1实验内容
把MBR前512字节文件修复完成,需要光盘引导进入急救模式
3.2实验步骤
1.先将文件备份到别的硬盘中,这样我们破坏环境后可以直接从比别的盘中恢复
2.模拟破坏MBR引导扇区
3.进入引导界面进入急救模式,从备份文件中恢复MBR 扇区数据 先加载好光盘镜像,重启操作系统
之后是第二个,进入急救模式
4.输入1进入,回车
5.在这个操作系统下建立文件,并将sdb1盘挂载到建立的文件夹下。
6.使用备份文件恢复mbr扇区
- 退出重启
能成功重启就算修复成功
4.修复GRUB故障
4.1实验内容
如果grub文件损坏导致启动不了,使用MRB扇区重建grub程序
4.2实验操作
1.MBR位于第一块硬盘(/dev/sda)的第一个物理扇区处,总共512字节,前446字节是主引导记,所以先建立备份
2.模拟对MRB中的GRUB引导程序的破坏,但并不破坏分区表
3.与mbr文件损坏一样,先进入急救模式,然后把第二块备份的盘挂载到mnt目录下
4.将备份文件覆盖sda盘
5.重启之后能正常开启就算成功
5.修改root密码
5.1实验一:
5.1.1实验内容
使用光驱进行密码修改,
5.1.1实验操作
1.先进入光驱,在电脑重启的一瞬间按一下esc进入,选择光驱
2.进入急救模式选项与上面两个实验一样
3.输入chroot /mnt/sysimage 进入系统根环境,去修改密码
4.输入修改密码命令
5.之后重启,如果成功的话我们自己的x-shell会让我们重新输入密码
5.2实验二:
5.2.1实验内容:
不使用光驱进行修改root密码,使用单用户修改密码
5.2.2实验操作:
1.先进入到grub文件下。
2.输入命令,添加内核参数 rd.break
3.输入ctrl x重启,进入单用户模式
4.输入命令,重新挂载
5.输入命令,进入根
6.修改密码
7.退出重启 如果x-shell让重输入密码就修改成功
6.systemctl服务的建立
6.1实验内容
使用编译安装nginx 之后创建systemctl的service快捷服务,可以查看进程并正常使用
6.2具体操作流程
1.根据安装包去解压到源文件
2.使用./configure 去设置安装目录并指定安装位置
等待安装完成后
3.进行编译
4.安装软件
5.去规定的文件夹下创建.service格式下的文件
6.按照规定格式去写文件
ini
[Unit]
Description=The nginx HTTP and reverse proxy server 描述信息
[Service]
PIDFile=/apps/nginx/logs/nginx.pid
ExecStart=/apps/nginx/sbin/nginx 开始命令
ExecReload=/usr/bin/kill -s HUP $MAINPID 重新加载
ExecStop=/usr/bin/kill -s TERM $MAINPID 关闭命令
[Install]
WantedBy=multi-user.target 弱依赖,被哪些units所依赖
~
检查无误后保存退出
7.刷新systemclt下的文件
8.使用systemctl命令启动nginx,并关闭