Linux的引导和服务
一、linux的引导过程
1.1、开机自检
服务器主机开机后,根据主板BIOS的设置对cpu、内存、显卡等设备进行基础检测,检测成功后根据预设的启动程序移交系统控制权,大多时候会移交系统控制权,大多时候会移交给本机硬盘。
注意:如果是网络启动的话会开启pxe。
1.2、MBR引导
当本机硬盘启动系统时,首先根据第一个扇区中MBR的设置,将系统控制权传递给包含操作系统引导文件的分区;或者直接根据MBR记录中的引导信息调用启动菜单
注意:运行在MBR扇区里启动GRUB引导程序
1.3、GRUB菜单
对于linux操作系统来说GRBR(统一管理器)是使用最为广泛的多系统引导程序。
系统控制权传递给GRUB以后,将会显示用户菜单给用户选择,并根据所选项(或采用默认值)加载linux内核文件,然后将系统控制权交给内核,需要主要的是cenos7采用的是GRUBR2启动引导器。
注意:GRUB引导程序通过读取GRUB配置文件/boot/grub2/grub.cfg,来获取内核和镜像文件系统的设置和路径位置。
1.4、加载linux内核
linux内核是一个预先编译好的内设二进制文件,介于各种硬件资源与系统程序之间,负责资源分配与调度,内核接过系统控制权后转交给内核后,将完全掌握整个linux操作系统的运行过程,在cenos中默认的内核文件放置位置在/boot/vmlinuz-3.10.0-514.el7.x86_64”。
1.5、init进程初始化
为了完成进一步的系统引导过程,linux内核首先将系统中的“/sbin/init”程序加载到内存运行(运行中的程序称为进程),init进程完成一系列的初始化过程,最后才会让用户登录
注意:加载硬件驱动程序,内核init加载到内存中运行。
二、MBR扇区修复
故障原因
- 病毒木马造成的伤害
- 不正确的分区操作,磁盘读写误操作
故障现象
- 找不到引导程序,启动中断
- 无法加载操作系统,开机后黑屏
解决思路
- 应提前做好备份文件
- 以安装光盘引导进入急救模式
- 从备份文件中恢复
MBR扇区修复实例操作
创建一块新磁盘让系统识别
1 2 3 | [root@localhost ~]# echo "- - -" >/sys/ class /scsi_host/host0/scan 刷新接口命令 [root@localhost ~]# echo "- - -" >/sys/ class /scsi_host/host1/scan [root@localhost ~]# echo "- - -" >/sys/ class /scsi_host/host2/scand |
对新磁盘进行分区
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | [root@localhost ~]# fdisk /dev/sdb 给磁盘分区命令 欢迎使用 fdisk (util-linux 2.23.2)。 更改将停留在内存中,直到您决定将更改写入磁盘。 使用写入命令前请三思。 Device does not contain a recognized partition table 使用磁盘标识符 0x5df804d8 创建新的 DOS 磁盘标签。 命令(输入 m 获取帮助):n 创建一个新磁盘 Partition type: p primary (0 primary, 0 extended, 4 free) e extended Select ( default p): Using default response p 分区号 (1-4,默认 1): 起始 扇区 (2048-41943039,默认为 2048): 将使用默认值 2048 Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039): 将使用默认值 41943039 分区 1 已设置为 Linux 类型,大小设为 20 GiB 命令(输入 m 获取帮助):w The partition table has been altered! Calling ioctl() to re-read partition table.g |
给分区创建文件系统
1 2 3 4 5 6 7 8 9 10 | [root@localhost ~]# mkfs.xfs /dev/sdb1 给/dev/sdb1 创建xfs文件系统 meta-data=/dev/sdb1 isize=512 agcount=4, agsize=1310656 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0, sparse=0 data = bsize=4096 blocks=5242624, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=1 log = internal log bsize=4096 blocks=2560, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 |
将分区挂载到/opt/目录下
1 2 | [root@localhost ~]# vim /etc/fstab UUID=81c4e848-8165-4554-9eaf-e3fd5da392f9 /opt xfs defaults 0 0 |
将/dev/sda备份到/opt/mbr.bak
1 2 3 4 | [root@localhost ~]# dd if =/dev/sda of=/opt/mbr.bak bs=512 count=1 记录了1+0 的读入 记录了1+0 的写出 512字节(512 B)已复制,0.000254405 秒,2.0 MB/秒 |
破坏MBR扇区
1 2 3 | [root@localhost ~]# dd if =/dev/zero of=/dev/sda bs=512 count=1 使用空白文件破坏MBR扇区 |
重启
1 | [root@localhost ~]# reboot |
选择第一个继续
按照如下操作
三、GRUB修复
故障原因
- MBR中的GRUB引导程序遭到破坏
- grub.conf 文件丢失,引导配置有误
故障现象
系统引导停滞 ,显示grub>提示符
解决思路
尝试手动输入引导
进入急救模式,重写或恢复grub.conf文件
向MBR扇区中重建grub
3.1、修复grub文件
将grub.cfg文件备份到/opt/目录
1 | [root@localhost grub2]# cp grub.cfg /opt/ |
删除这个配置文件
1 | root@localhost grub2]# rm -rf grub.cfg |
重启
1 | [root@localhost grub2]# reboot |
在读条状态时按“ESC”选择光驱进入
选择解决问题
进入急救模式
选择第一个模式
按照以下方式操作
四、修改密码
故障原因
遗失root用户密码
故障现象
无法进行需要root权限的管理操作
若没有其他可用账号,将无法登录系统
解决思路
进入急救模式修改密码
4.1、光驱修改密码
4.2、编辑模式修改密码
启动时任意键暂停启动,按e键进入编辑模式
将光标移动linux开始的行,添加内核参数rd.break
按ctrl-x启动
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人