Chinaunix首页 | 论坛 | 博客
  • 博客访问: 6908648
  • 博文数量: 3857
  • 博客积分: 6409
  • 博客等级: 准将
  • 技术积分: 15948
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-02 16:48
个人简介

迷彩 潜伏 隐蔽 伪装

文章分类

全部博文(3857)

文章存档

2017年(5)

2016年(63)

2015年(927)

2014年(677)

2013年(807)

2012年(1241)

2011年(67)

2010年(7)

2009年(36)

2008年(28)

分类:

2012-05-29 09:34:32

原文地址:RHEL6之图解RHEL6.0排错 作者:fortara

Rhel6.0 troubshtoting  详谈
模拟环境:

一台安装完好的rhel 6.0 机器,系统可正常启动且可正常使用

一.查看下系统环境

[root@xiaomo ~]# uname -r                   #RHEL6默认安装内核
2.6.32-71.el6.i686
[root@xiaomo ~]# ifconfig                
eth0      Link encap:Ethernet  HWaddr 00:0C:29:80:49:5D  
          inet addr:192.168.1.8  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe80:495d/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:68989 errors:0 dropped:0 overruns:0 frame:0
          TX packets:142 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:4616919 (4.4 MiB)  TX bytes:18653 (18.2 KiB)
          Interrupt:18 Base address:0x1080

下面我们将对该系统做破坏,troubshooting即将开始!
1.破坏grub引导分区
2.破坏/boot启动目录
3.破坏/etc/fstab文件
4.破坏/etc/inittab文件
5.破坏/etc/rc.d/rc.syslnit文件

二.简述Troubleshooting
    不难看出这些目录和文件都是系统启动必须目录和文件,如果这些文件丢失,那么将无法正常启动系统、挂载分区、加载内核,下面我们来破坏一下系统,在破坏之 前,想说明的是,我们为什么要破坏系统?这问题一定要了解,不然接下来的一切都是毫无意义的,前文说过这些文件是系统内置关键的引导和加载的文件,甚至还 有系统的内核文件,之所以破坏这些文件目的就是为了掌握恢复它的能力,linux服务器在运行状态下,服务是linux的核心,但内核文件和系统启动文件 同样重要,当某天你的系统内核崩溃启动不了,那就更不要谈服务器上所运行的服务,当然,一台稳定的服务器在上线前都是需要经过至少两周的环境测试和运行状 态的记录巡检,目的就是为了让Down机概率降至最低,让企业为之付出的损失降至最低!业界的朋友都该知道,并不是每个公司都有条件做热备的,也不是每个 公司都能用得了专业的NAS存储设备的,练就排错的能力是为了能在企业中更快的恢复好系统,让线上的服务器尽快的稳定运行!需要说明的是:在rhel5考 试中从2009年5月份改版后,troubleshooting就不再纳入rhce的考试内容,但掌握Troubleshooting对个人和企业而言是 非常实用的!闲话至此,希望对各位理解Troubleshooting能有所帮助,具体看演示操作!

三.解析破坏文件

[root@xiaomo ~]# ls /boot/                #引导文件(包括Grub,和kernel文件)
config-2.6.32-71.el6.i686         lost+found
efi                               symvers-2.6.32-71.el6.i686.gz
grub                              System.map-2.6.32-71.el6.i686
initramfs-2.6.32-71.el6.i686.img  vmlinuz-2.6.32-71.el6.i686
[root@xiaomo ~]# cat /etc/fstab  
       #系统分区信息文件,每行对应不同的文件系统
#
# /etc/fstab
# Created by anaconda on Mon Dec 13 20:56:55 2010
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=8198fbbe-c92b-4664-a14c-9f93eacff62b /                       ext4    defaults        1 1

#在rhel5里是指定LABEL来认系统挂载目录,rhel6中改用指定UUID(硬盘的ID号),可防止内核升级后硬盘挂载出错 (下同)
UUID=854051dd-0957-45e6-90eb-d6744700f0ca /boot                   ext4    defaults        1 2
UUID=0715b26e-eaa6-4127-a2b4-8d9a95c332d7 /tmp                    ext4    defaults        1 2
UUID=e89f2531-28bd-4e55-a2b4-48ddef30b0ba /usr                    ext4    defaults        1 2
UUID=b134a11d-90e9-4d6b-b7bd-81ac13835772 /var                    ext4    defaults        1 2
UUID=244e7420-4da2-478b-b9ba-04f056cc21da swap                    swap    defaults        0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0                                                                        
[root@xiaomo ~]# vim /etc/inittab                
#开机启动文件
[root@xiaomo ~]#cat /etc/rc.d/rc.sysinit     #系统启动文件,多用于测试挂载,具体看该文件内具体介绍请看该贴:http://blog.csdn.net/jiangcl2075 ... /01/15/5192215.aspx
四、破坏文件

[root@xiaomo ~]# rm -rf /boot/*                        
[root@xiaomo ~]#mv /etc/fstab /etc/fstab.backup                                 
[root@xiaomo ~]# rm -rf /etc/inittab 
[root@xiaomo ~]# rm -rf /etc/rc.d/*

#这里简单阐述/etc/fstab 这个文件,是系统安装时生成的文件,记录系统的磁盘和分区挂载信息,这里需要记住其文件格式才可以恢复,其他的文件包括内核都可以使用安装软件包来实现修 复,所以这里该文件在安装好系统后最好做个备份,在破坏时也最好不要rm直接删除,可以通过修改其文件格式和文件名让该文件失效;

五、重启系统

1-1.jpg

#重启系统后看到以上信息,说明你的grub已经被破坏,这时你可以尝试去修复Grub,会发现kernel 根本无法加载。下面开始我们漫长的修复过程。
六、修复系统
1.        挂载光盘,这里指需要挂载rhel6.0的光盘,可以通过光驱、U盘、ftp等多种方式实现,这里就不多过说明,在这里我是用光驱挂载
2.        光盘放好后,调开启启动项至CDROM/DVDROM为首选启动项
3.        启动后默认会发现到了安装系统的初始化界面

2-2.jpg
#这里我们选择 Rescue installed system  RHEL6里有所改动,rhel5是需要输入linux rescue的

4.        默认进入安装系统的状态,不过不同于安装系统状态的是多了个选项,这里根据你使用的挂盘方式来定,一般nfs 和 DVD常用,这里我选择Local CD/DVD。 

3-3.jpg 
4-1.jpg 
#如果你是通过网络ftp传输挂载安装文件的,那么这里必须要启动网卡,本地实用upan或光驱一类的外接设备则无需开启,这里我是无需开启的,我选择“NO”。
本帖隐藏的内容需要回复才可以浏览 5-1.jpg

#上面为提示信息,提示你未挂载sysimage ,先不管,直接Continue 


6-1.jpg 
#这里直接ok,具体信息见提示信息,这里么提示你 chroot /mnt/sysimage 那么就说明你不可以直接执行chroot /mnt/sysimage 挂载/ 目录,那么为啥出现这个提示,是因为我们的fstab 这个文件损坏,需要恢复该文件后,才可以直接挂载/ 。
7-1.jpg 
#这里选择 shell Start shell 

5.        注意,此时还没有进入系统真实的/ 目录

9-1.jpg
#从fdisk 信息不难看出,已经加密的 “*” ,肯定是我的引导分区,而我的真实/ 安装在/dev/sda2上的。

10-1.jpg
#现在chroot 还不可以,因为fstab文件丢失,系统不知道/ 挂载在什么地方

11-1.jpg
#这里,在chroot之前 bash-4.1# 目录下的/ 是内存中的 / ,也叫伪根;chroot后 sh-4.1#目录下的/ 才是系统真实的/ ,也叫真根 ,对于如何辨别自己的系统哪个目录才是/ 分区可以通过 e2label /dev/sda* 来查询,或者自己多尝试挂载,这里用mout是手动挂载自己的/ 目录

12-1.jpg
#进入系统真实 / 目录后,首先要做的就是恢复 /etc/fstab 这个文件,是系统分区挂载信息的核心文件,这里我做了备份,当然,我未对该文件进行修改,感兴趣的朋友可以研究该文件内容,然后详细了解各项作用,删除后 重新写都是可以的,修复好改文件后,再接着troubshooting!

13-1.jpg 
#修改好后退出重启,再次进入rescue模式,因为其他文件还没有恢复,进rescue模式就不再谈了

14-1.jpg 
#再次进入rescue模式后,在进shell 之前,提示变了,提示我可以直接 chroot 挂载目录,默认OK,下一步进入shell 

15-1.jpg

#这里直接 chroot /mnt/sysimage  就可以挂载/ 目录了

16-1.jpg 
# / 挂载好后,ls查看 /boot 目录,无任何文件,那么,现在需要挂载光盘,来恢复这个文件;这里需要注意的是 在rescue 模式下 /dev/scd0 为光盘所在分区媒介,挂载目录至 /mnt/source (这里这个目录可自定义); 区别于rhel5 的rescue 光盘存放分区 ;进入光盘的Package目录

17-1.jpg
# 安装内核的rpm包,安装好后再查看 /boot/ 分区信息,这里完全可以再光盘目录下安装,无需copy出来,包括RHEL5也是支持的;但这里我们未发现 grub目录,这需要再安装
Grub引导目录
18-1.jpg
#安装grub ,再次查看 /boot/ 目录已经有该目录了,这里注意,在rescue一切文件都是白色的
19-1.jpg
#进入grub目录,发现么grub.conf 引导文件,那么我们手工创建该文件,直接vim编辑后保存即可
20-1.jpg

#grub.conf 文件内容,这几行是grub.conf 引导文件必须的,其中 root=/dev/sda2是我本机的真实 / 目录,这里可以先不要填写硬盘的UUID号,如果非要填写可以查看系统/etc/fstab文件,复制主硬盘的UUID号即可,在rhel5里可以通过制 定LABEL来指定,对于相关引导文件的记忆可参考 /boot 目录下文件,只要记住命令格式即可,对该文件不做过多解释

到这里,Groub引导已经修复好了,下面开始我们的文件修复 
21-1.jpg 
# 这里 rpm –qf 查询 系统文件对应的安装包,rpm –ql 查询安装包对应生成哪些系统文件,查询后会发现initscripts-xxxx.rpm 生成很多系统关键文件,所以这里不能直接安装该包,需要对该包copy 出来,解压后,然后copy 需要的系统文件即可!
22-1.jpg
# 这里copy initscipts-9.03.17-1.el6.i686.rpm 至 /tmp 目录下,用rpm2cipo 指令通过管道cpio –imd解压该rpm包,解压后,会发现,这个文件内容都是/ 目录下关键的目录文件

23-1.jpg 
#修复 被删除的 inittbab文件,修复 /etc/rc.d/ 文件

至此,所有的破坏修复已经完成,在修复后,还可以根据要求修改文件相关参数,当然也有必要对你修复好的每个文件进行检查,查看文件参数是否正确等;

24-1.jpg 
#exit 退出系统真实/ ,第二个exit 退出虚拟 / 也称 伪 / ,reboot,reboot后就不要再从光盘引导,直接硬盘引导,看测试效果。
25-1.JPG

26-1.JPG

27-1.JPG

28-1.JPG 


#第一次修复好系统后默认selinux会对系统进行相关参数的检测,所以修复后第一次启动系统是相当慢的,默认检测完后系统会重新启动,直至到用户登录界面,输入用户名密码登陆即可。

七、小结

Ok,RHEL6系统的troubleshooting 已经全部完成,总结下该排错的遗漏点,就是没有对相关文件进行修改,所有的状态都是在已知状况下修复的,主要是为了能让各位理解相关文件的作用,方便演 示,仅此而已,此外,没有对系统账户、bash、mount等进行删除修复,其实原理都是一样,只要找到其对应安装包,即可搞定一切问题!所以如果想更好 的学习好troubleshooting这个能力还得多研究各个文件内部参数和关联包,这样才可以适应企业环境应用,练就更强的排错能力!

下面总结下rhel6和rhel5 troubleshooting的不同点:
1.进入rescue的模式不同   rhel5中 是引导盘后在boot: 处输入 linux rescue 进入急救模式
2.rescue 模式下 使用的急救光驱 rhel5下默认的是 /dev/hdc 
3.rhel5.3之前,不可以在真实 /下安装kernel只能在伪/ 下安装,但需要指定真实 / 路径: rpm –ivh –root=/mnt/sysimage /mnt/source/Server/kernel-2.6xx.rpm –force  rhel5.3以后,可以直接chroot /mnt/sysimage 后在真实 / 下安装内核。
4./etc/fstab 文件不同,rhel5可指定LABEL来制定挂载目录,rhel6则需要制定硬盘的ID,不过,不管RHEL5或6都可以直接指定挂载硬盘分区的。
也就简单总结了这么几点,仅供参考!
阅读(407) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~