linux系统排错
一.系统启动流程
通电
-->bios
-->mbr引导
-->grub文件引导阶段
-->启动内核,只读挂载/设备
-->系统初始化阶段
系统初始化阶段加载initrd镜像
开启初始化进程systemd
开始selinux
加载内核参数
初始化系统时钟,键盘,主机名称
重新读写挂载/设备
**raid,lvm
**配额
启动multi-user.target.wants中的所有服务
开启虚拟控制台
启动图形
二、mbr引导记录损坏挽救措施
--mbr引导损坏后只需要在系统中执行
--grub2-install /dev/vda ##/dev/vda为系统安装的磁盘路径。
--命令就可以修复了。下面详细说说在进不去系统时用镜像挽救系统。
首先用/dev/zero覆盖系统mbr记录,(模拟mbr损坏)
重启发现系统挂了。
现在关掉虚拟机,挂载镜像,重启。
新建一个镜像,
设置优先启动镜像。
重启后进入。选择第三个trouble的那一个。
选择第二个挽救系统。
然后出现有几个提示,continue,
提示告诉我们真实的系统挂载在/mntsysimage上,
再说了一遍系统挂在路径。点OK
然后我们获得了挽救系统的shell。
我们只要切换到真实系统,执行修复mbr的命令就行了。
这样就修复完了。
然后删掉刚才挂载的镜像,重启,就行了。系统正常启动。
三、grub引导文件损坏
/boot/grub2/grub.cfg这个文件记录了grub引导的记录,如果这个文件丢失后系统也会出错无法启动。
在系统中执行
grub2-mkconfig > /boot/grub2/grub.cfg ##修复grub文件。
----------------------------------------------------
在系统关掉的情况下也可以进入到镜像挽救模式进行修复。(和上面的mbr的修复过程类似,这里就不说了)
镜像挽救比较麻烦,还要挂载镜像等等,
这里有个比较简单的方法,手动引导grub
下面主要讲解一下,手动引导grub进入系统的过程。进入系统后执行grub修复命令就行了。
grub引导文件“不小心”损坏了
重启后,系统又挂了。
set root='hd0,msdos1' #引导系统分区
linux16 /boot/vmlinuz-3.10.0-123.e17.x86_64 ro root=/dev/vda1 #手动引导内核启动程序
initrd16 /boot/initramfs-3.10.0-123.e17.x86_64.img ##引导系统初始化
然后就加载内核初始化系统,进入系统。
在系统中执行
grub2-mkconfig > /boot/grub2/grub.cfg ##grub引导修复文件就行了。
四、系统内核文件丢失
/boot/vmlinuz-3.10.0-327.el7.x86_64 ##系统内核文件
这个文件丢失后,是不能用命令自动修复的,需要在在镜像安装包中解压获得,然后复制到指定位置就行了。
我们先看一下文件属于哪个安装包。
只要解压这个安装包,然后复制文件到指定文件夹下就行了。(命令在后面)
现在演示一下文件丢失的情况。
文件不小心丢失了。
重启后系统又挂了。
这是我们需要进入镜像的救援模式下恢复文件
省略重复过程(挂载镜像启动救援模式)过程。
挂载镜像后进入后就获得一个shell
然后我们复制挂载的镜像安装包到 系统的mnt目录下
切换到真是系统的shell,解压安装包,复制文件到/boot/下就行了。
这样就好了,关机,移除镜像,重启,发现系统已经正常启动了。
五、系统初始化文件丢失
/boot/initramfs-3.10.0-327.el7.x86_64.img #系统初始化文件。
文件损坏了。
系统又挂了
挂在镜像,重启进入援救模式。切换到系统shell,执行命令,
mkinitrd /boot/initramfs-$(uname -r).img $(uname -r) ##修复系统初始化文件。
修复好后 重启系统正常启动
六、系统启动级别
系统的启动级别一共有六个:
0:系统停机模式,系统不能正常启动,机器关闭
1:单用户模式,root权限,用于系统维护,禁止远程登陆
2:多用户模式,没有NFS网络支持
3:完整的多用户文本模式,有NFS,登陆后进入控制台命令行模式
4:系统未使用,保留一般不用
5:图形化模式,登陆后进入GUI模式
6:重启模式,默认级别不能为6,
设置系统启动级别为shutdown,
可以看到提示 移除了旧链接,创建新的链接。到/usr/lib/systemd/system/shutdown.target
而/usr/lib/systemd/system/目录就是系统初始化时候启动运行。
设置好后,然后重启。
系统不能正常启动,
可能系统会卡住。
修复措施。
在系统启动时,在grub的界面按e进入编辑模式,自定义启动级别。
按e
按e后进入到编辑模式
往下翻到linux16这一行,在最后添加 5
,按ctrl+x 执行
系统正常进入
编辑运行级别为graphical.target
系统就修复好了。