linux常见故障以及修复办法.docx
- 文档编号:14053038
- 上传时间:2023-06-20
- 格式:DOCX
- 页数:20
- 大小:746.61KB
linux常见故障以及修复办法.docx
《linux常见故障以及修复办法.docx》由会员分享,可在线阅读,更多相关《linux常见故障以及修复办法.docx(20页珍藏版)》请在冰点文库上搜索。
linux常见故障以及修复办法
查看开机启动顺序:
2
chroot:
3
用grub来引导6
GRUB的概述6
基本说明:
6
具体的案例:
7
模拟一些常见问题并且修复9
破坏了sda的MBR中的引导程序9
破坏几个重要的文件:
11
1)人为的删除系统关键文件:
11
2)修复linux系统12
2.还原fstab文件。
13
3.修复内核和grub14
修复/etc/inittab等文件:
17
遇到的问题:
17
查看开机启动顺序:
1.GRUBLoadingstage2
BIOS向GRUB传递控制权
2.到MBR的GRUB(下面我是显示有一个字母P,因为最开始用无人值守部署安装的时候是设定了密码,所以要密码才能进去的)
接下来是引导内核和加载映像文件。
按住e可以进入它的编辑状态:
3.启动initi进程开始执行rc.sysinit脚本然后初始化环境。
4.挂载文件系统,下面显示的是/etc/fstab开机挂载的东西。
chroot:
Linux下的chroot,即changeroot意为切换用户的根目录,例如将/opt/chroot/目录做为某个用户的根目录,如此将锁定用户在该目录下,从而防止用户访问系统的重要文件进行窃密,或防止用户执行危险操作带来系统损害。
另外,如果某些对外开放的服务(如Apache),一旦被入侵者控制,该入侵者将可能得到系统用户的权限,从而控制整个系统,将这些服务置入chroot环境中运行,即使该入侵者控制了该服务,也还在chroot下,需要更多的时间对chroot进行破解,这样就达到了加固的目的。
什么是shell?
Shell俗称壳(用来区别于核),是指“提供使用者使用界面”的软件(命令解析器)。
它类似于DOS下的command和后来的cmd.exe。
它接收用户命令,然后调用相应的应用程序
shell是用户和Linux内核之间的接口程序,如果把Linux内核想象成一个球体的中心,shell就是围绕内核的外层。
当从shell或其他程序向
Linux传递命令时,内核会做出相应的反应。
shell是一个命令语言解释器,它拥有自己内建的shell命令集,shell也能被系统中其他应用
程序所调用。
用户在提示符下输入的命令都由shell先解释然后传给Linux核心。
bin/sh是一个软连接,在windows系统中相当于快捷方式,要看你的linux系统的软连接的指向,如果软连接指向的是bin/bash那么,bin/sh和bin/bash是一样的,但如果你的bin/sh指向的是bin/csh或者bin/ksh那么bin/sh与bin/bash是就是一样的了。
创造一个简单话的可登陆的chroot环境:
接着上面的来:
chroot以后,系统的根目录切到/opt/chroot下,新的环境将继承旧系统的环境变量,root用户依然以/bin/bash为默认的shell,因/opt/chroot下并不存在bin/bash这个文件,所以报上述错误,为了解决该问题,在该目录下建立bin目录,并拷贝bash文件到该目录下:
原因分析:
因为/bin/bash需要调用相关的库,因新环境不存在相关的库文件,因此bash不能运行,从而报上述错误,解决方法是利用ldd/bin/bash查找到其所需要的运行库:
然后将其拷贝到/home/longlin/chroot/lib64下面:
成功了,后续可以加入比如ls或者是touch等命令,写一个脚本吧!
用grub来引导
GRUB的概述
在RedHatlinux装载一个系统前,它必须由一个引导装载程序(bootloader,启动管理程序)中的特定指令告诉它去引导系统。
这个程序一般是位于系统的主硬盘驱动器或是其他知道如何去开始linux内核的媒介驱动器上。
装载GRUB和操作系统的过程,包括以下几个操作步骤:
1、装载基本的引导装载程序,这通常是第一步。
基本引导装载程序必须是位于主引导扇区中一个非常小的空间,少于512字节。
因此,基本引导装载程序所做的唯一的事情就是装载第二引导装载程序。
这主要是归结于在主引导扇区中没有足够的空间用于其他东西了。
2、装载第二引导装载程序,这通常称为第二步。
这第二引导装载程序实际上是引出更高级的功能 ,以允许用户装载入一个特定的操作系统。
在GRUB中,这步是让用户显示一个菜单或是输入命令。
3、装载在一个特定分区上的操作系统,如linux内核。
一旦GRUB从它的命令行或是配置文件中,接到开始操作系统的正确指令,它就寻找必要的引导文件,然后把机器的控制权移交给操作系统。
基本说明:
设备名称
系统的第一个硬盘驱动器被GRUB称为(hd0)。
在它上面的第一个分区被称为(hd0,0),第二个硬盘驱动器上的第5个分区被称为(hd1,4)。
通常使用GRUB时,文件系统习惯上采用下面的方式命名:
(,),(hd)是指硬盘,(fd)是指软盘。
当指定整个硬盘,不考虑它的分区时,简单地将逗号和分区编号取消即可。
当告诉GRUB配置一个特定硬盘的主引导扇区时,这一点很重要。
比如,(hd0)指定第一个设备,(hd3)指定第四个设备。
文件名称:
当在GRUB中输入包括文件的命令时,比如在多操作系统中使用一个菜单列表,文件名必须直接在设备和分区后指定。
一个绝对文件名的格式如下:
(,)/path/to/file。
命令的使用:
1)进入GRUB的命令行模式grub>
如果开机时,GRUB出现的是grub>,说明你没有/etc/grub/menu.lst,或者说是没有/boot/grub/grub.conf的一个引导,您需要自己写一个才会GRUB的菜单,让我们来选择进入哪个系统。
如果有GRUB的菜单,您可以按Ctrl+c组合键进入GRUB的命令行模式,会出现grub>提示符;
grub>
2)用help命令查看,用cat命令查看,
cat指令是用来查看文件内容的,有时我们不知道Linux的/boot分区,以及/根分区所在的位置,要查看/etc/fstab的内容来得知,这时,我们就要用到cat(hd[0-n],y)/etc/fstab来获得这些内容;注意要学会用tab键命令补齐的功能;
grub>cat(按tab键会出来hd0或hd1之类的;
grub>cat(hd0,注:
输入hd0,然后再按tab键;会出来分区之类的;
grub>cat(hd0,6)
具体的案例:
1、用命令行来引导Linux操作系统的步骤(grub中没有grub.conf的时候)
通过命令行来引导操作系统的流程,也没有什么难的;无非是把指令手工输入到grub>提示符的后面;在这个过程中,tab键的命令补齐功能就显得很重要了。
如果您不知道有哪些命令,可以输入help;
如果是grub下面目录都没有了,那么需要重装grub这个启动小程序。
1.安装这里有两种方法:
(1)种是直接#grub-install/dev/sda这种就会在/boot/目录下生成/grub文件夹下面的文件,然后直接配置grub.conf即可。
着重说明的是第二种方法:
用此方法修复grub是把/boot/grub下的stage镜像安装到硬盘上的特定位置上。
所以使用此法修复grub仅限于是硬盘上的stage1(在MBR里)以及stage1.5,修复依赖于/boot/grub下的stage1,stage1.5,stage2镜像。
如果这几个镜像也遭到破坏,则此法无效。
(如果没有用第一种方法)
(2)第二种就是用命令行引导Linux操作系统了,
首先,是在命令行操作(如果已经重启了,就需要进入linuxrescue下面),查看磁盘结构,看boot目录在哪一块磁盘上?
#grub//启动grub
ProbingdevicestoguessBIOSdrives.Thismaytakealongtime.
GNUGRUB version0.97 (640Klower/3072Kuppermemory)
[MinimalBASH-likelineeditingissupported. Forthefirstword,TAB
listspossiblecommandcompletions. AnywhereelseTABliststhepossible
completionsofadevice/filename.]
grub>root(hd0,0)//首先find/grub/stage1查看/boot分区为(hd0,0)
root(hd0,0)//设置/boot分区为/dev/sda1
Filesystemtypeisext2fs,partitiontype0x83
grub>setup(hd0)//重新安装grub
setup(hd0)
Checkingif"/boot/grub/stage1"exists...no
Checkingif"/grub/stage1"exists...yes
Checkingif"/grub/stage2"exists...yes
Checkingif"/grub/e2fs_stage1_5"exists...yes
Running"embed/grub/e2fs_stage1_5(hd0)"... 26sectorsareembedded.
succeeded
Running"install/grub/stage1(hd0)(hd0)1+26p(hd0,0)/grub/stage2/grub/grub.conf"...succeeded
Done.
grub>quit//退出
2.通过grub命令行直接登录系统(这种是不需要grub.conf文件的)
查找find/grub/stage1然后找到/boot分区为(hd0,0),指定kernel,initrd,boot启动系统成功。
3.启动系统成功之后,进入系统重新写/boot/grub.conf文件。
4.进入linuxrescue重建一个grub
5.最后重新启动成功了。
模拟一些常见问题并且修复
破坏了sda的MBR中的引导程序
直接到了这个界面。
解决办法进入BIOS,直接选择光驱启动的方式。
虚拟机里面有一个开机直接启动到BIOS的功能。
直接选择救援模式就行了在linux6中有那个救援模式的选项。
(然后按照它的提示进行选择)
上图的如果/etc/fstab完整的话,我原来的系统会自动挂载在/mnt/sysimage上面给。
如果没有/etc/fstab就挂载不上。
前面提示我的系统已经挂载到了/mnt/sysimage上,这样我就可以直接使用chroot命令进行根目录的限制。
通过这个就可以将直接的系统限制在/mnt/sysimage里面了。
查看它的磁盘的结构:
接下来就是直接进行修复了。
然后按住exit再按exit,就到了下面的界面里面去了。
直接重启,
破坏几个重要的文件:
1)人为的删除系统关键文件:
2)修复linux系统
1.进入修复模式
我是用linux6的系统做的,然后是虚拟机的话直接可以进入到BIOS里面,然后改变启动方式,使得光驱优先启动。
如果是RHEL5光盘的话,输入linuxrescure或者是F5进入rescur修复模式
接下来是选择English---》us-----》LocalCD/DVD,SetupNetworking的时候选择No
上图因为是没有了/etc/fstab所以是不能将系统挂载到/mnt/sysimage中。
其中最重要的是/boot目录的挂载情况了。
2.还原fstab文件。
根据上面步骤得知,rescue程序无法找到硬盘分区,所以现在要做的事情就是恢复linux分区——也就是fstab文件(这个fstab文件在删除之前,有做过备份/etc/fstab.bak)。
#fdisk-l查看磁盘分区
上图所示的磁盘结构,就是我原来要修复的系统的磁盘的结构。
网上有人的根目录是挂载到LVM下面的这又有另外的办法(这个与我的环境无关)
由上图可得知/dev/sda1是/boot分区,而/dev/sda2无法查看,因为sda2是LVM分区。
使用命令激活LVM分区#lvmvgchange-ay 这个命令的作用就是告诉系统建立相关的device-mapper,这样就可以看到/dev下建立了/dev/mapper/VGname-LVname和/dev/VGname/LVname的设备文件和链接文件。
使用ls/dev/mapper命令可以看到VolGroup00-LogVol00(就是/根分区)和VolGroup00-LogVol01(就是swap分区)
接下来,要挂载/根分区了,并恢复fstab文件。
#mkdirlonglin--建立一个空目录用来挂载分区
上面要说的是,将根目录挂载之后呢,可以恢复的,应为/etc/fstab就在/目录下面,如果没有备份的话,就直接创建一个,根据其它机器的参考。
#reboot----重启系统。
3.修复内核和grub
重启之后,进入修复模式,这个时候修复模式下会找到fstab文件,也就是找到linux分区了,这个时候损坏的linux系统挂载到/mnt/sysimage下。
上面提示,挂载系统成功,可以使用#chroot/mnt/sysimage修改根目录了)。
看上面各种命令导致shell的变化。
#exit退回到rescue模式下。
一般把处于resuce模式的系统称为伪系统,把#chroot/mnt/sysimage后看到的称为真正的系统。
、
接下进入到#chroot/mnt/sysimage下面,用yum安装内核,长生
先使用#yumremovekernel移除,然后再重新装载。
内核安装成功了,
然后是安装grub程序到/dev/sda
但是它的grub下面没有grub.conf文件,这个需要手动编辑一个。
这个可以偷点懒,从我另外的虚拟机里面拷贝过来。
因为我其它的虚拟机也是用同一个镜像安装的,所以基本上是相同的。
唯一要修改的就是它的UUID,注意UUID是唯一的,要用下面那个获取。
上面是将根目录所在的UUID放到grub.conf里面去。
红色标记的是要改的。
保存退出。
。
。
。
grub也修复完成了。
它一直能到下面的那个图。
挂在好了/dev/sda1但是没有init!
!
修复/etc/inittab等文件:
使用#rpm-qf文件的命令查看软件包。
这样的话前面的内核也可以使用#yumreinstallkernel-y安装了。
这三个文件都是同一个包。
遇到的问题:
这个问题一直困扰了两天,经过各种方法的调试,最后方向是我们配置文件错了。
一直图片没有里面配置文件某些关键点的位置。
看一下grub.conf的配置文件吧。
要说一下,最开始因为我的配置文件是从别的电脑上拷贝过来的,让后呢直接改UUID,查看磁盘的分布情况:
(我将boot的分区/dev/sda1的UUID放进去了),其实上面的root=是根目录挂载点!
!
!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- linux 常见故障 以及 修复 办法
![提示](https://static.bingdoc.com/images/bang_tan.gif)