MySQL 完整学习资料:第七章、系统排错

系统排错


系统组成:

【引导代码】 + 【内核+基础驱动】 + 【各种用户程序/系统程序】


安装系统的时候做了些什么?

分区、格式化

把内核和驱动安装在/boot分区

各种程序的rpm包安装后,文件存放在各种目录中

安装第一阶段引导代码到MBR中,第二阶段引导代码放在/boot/下


系统启动流程:

开机-->bois对硬件进行检查-->根据Bois设定选择一种引导的方式:一般是硬盘引导-->加载硬盘MBR中的前446字节的第一阶段的引导代码到内存中---> 产生19号中断---> 转而执行第一阶段引导代码--> 加载第二阶段引导代码 ----> 加载内核+基础驱动 ---> 执行第一个系统进程/sbin/init ---> 执行各种系统进程 ---->读取 /etc/inittab 获取启动级别 ---> 读取  /etc/init/下的子配置文件,根据子配置文件对系统进程各种初始化:

判断是否启动网络

设定主机名

判断是否开启selinux

udev生成/dev/目录下的设备文件

读取/etc/fstab,对分区进行挂载

--> 根据启动级别,去启动该级别对应的服务/etc/rc.d/rc?.d/

--> 登录界面:

图形

命令


启动之后:

登录系统 ---> 判断用户的合法性 (/etc/passwd 和 /etc/shadow)

命令终端模式登录成功 ---> 执行第一个程序/bin/bash(由/etc/passwd文件)--> 读取/etc/profile , /etc/profile.d/下所有脚本 , ~/.bash_profile , ~/.bashrc , /etc/bashrc

退出登录或关闭终端  ~/.bash_logout


图形界面:

图形界面是由/etc/X11/prefdm 首先提供登录界面 ,登录成功之后会启动各种图形界面程序 :

要求 /tmp/目录必须 1777


登录之后:

用户启动各种服务,运行各种程序

分析各种程序对应的日志或者 /var/log/messages





如何进入到救援模式

通过昨天网络引导进入救援模式

光盘引导


引导之后,在启动选项,给对应的内核添加参数 rescue


如果引导的方式不是光驱引导,那么都会提示:救援镜像去哪里获取

安装源中获取

http://10.1.1.29/cblr/links/rhel6u3-x86_64/


提示:救援模式如何使用,已经他试图寻找硬盘上Linux根分区,然后挂载

一般选择 Continue  挂载并且有读写权限

Read-Only  只读挂载

Skip   不会挂载: 一般是对分区上文件系统进行修复的时候,选择它


重大故障:


一、引导代码

第一阶段代码: 在MBR中前446字节

现象: 屏幕黑屏,左上角可能会出现少数字符,有些时候找不到引导程序

判断: 到底是整个MBR中512字节都损坏了还是仅仅MBR中的引导代码损坏

解决:

如果是仅仅引导代码损坏,那么可以进入到“救援模式”

如果是整个MBR损坏,包括主分区表,那么修复就比较麻烦:

如果之前有做MBR备份,那么直接在救援模式下,进行MBR的恢复

如果没有做MBR的备份,就只能通过第三方分区修复软件进行分区扫描1恢复。

进入救援模式:

如果成功被扫描并且挂载了硬盘上的Linux根分区到/mnt/sysimage

# chroot /mnt/sysimage

# grub-install --recheck /dev/sda  <--- sda 是系统所在的硬盘,Bois默认的引导硬盘

命令执行完毕,看到 No error reported 就成功了



模拟故障:必须使用虚拟机来实验

dd if=/dev/zero of=/dev/sda bs=1 count=446

重启就能看到故障


第二阶段

原因: /boot/grub/stage2文件丢失了

修复方法同上。


引导程序的配置文件和相关引导驱动文件丢失

/boot/grub/下的文件丢失了。

修复方法:

如果不是grub.conf丢失,修复方法和上面一样: grub-install一下

grub.conf丢失。方法1:进入救援模式,手工编写一份

     方法2: 直接在引导界面。通过命令引导系统




二、引导阶段内核镜像出错和或者丢失

进到救援模式下,从相同类型的其他服务器拷贝一份




三、fstab文件出错、丢失

现象:

有些时候系统还能启动,不过启动后,仅仅挂载/ ,而且有些时候还是只读挂载

修复:

能登录系统,就登录系统重新创建一个fstab(把必须的挂载一定要声明),然后重启系统

不能登录系统,就进入到临时的登录,修复fstab

# mount -o remount,rw /dev/sda2  《-- sda2是根分区

去修复文件

不能启动:就只能进入救援模式下修复,

由于fstab丢失,救援模式是发现不了硬盘上已经安装了的Linux根分区,需要自己去挂载,挂载的时候,一定要挂载 /mnt/sysimage 或者挂载自己新建的目录,不能直接挂载到/mnt



四、还有别的报错导致无法正常启动系统,但是已经到了/sbin/init在初始化阶段


正常情况,内核运行之后会执行 /sbin/init进程对系统进行初始化,但如果/sbin/init进程执行的时候遇到错误,无法正常启动启动

解决:

不一定要进到救援模式,告诉内核,不要指定/sbin/init,而是执行/bin/bash,出现命令行,可以通过命令去修复系统

在grub引导菜单中修改内核的参数, kernel xxxx  init=/bin/bash






你可能感兴趣的:(系统排错)