2012-09-08
在前面,我们学习过RHEL6的开机流程。今天我们就来看看这个开机过程中,各种环节出现问题后的解决办法。winxp故障
回顾一下RHEL6的开机流程
1.加载BIOS的硬件信息、进行自我测试,并依据设定获得第一个可开机的设备; win2003故障
2.读取并执行第一个开机设备内MBR的boot Loader(grub等程序); 显卡故障
3.依据boot loader的设置加载Kernel,Kernel会开始检测硬件与加载驱动程序;
4.内核启动init
5.系统初始化:(/etc/init/rcS.conf exec /etc/rc.d/rc.sysinit)
6.init找到/etc/inittab文件,确定默认的运行级别(X) (/etc/init/rcS.conf exec telinit $runlevel)
7.触发相应的runlevel事件(/etc/init/rc.conf exec /etc/rc.d/rc $RUNLEVEL)
8.开始运行/etc/rc.d/rc,传入参数X
9./etc/rc.d/rc脚本进行一系列设置,最后运行相应的/etc/rcX.d/中的脚本
10./etc/rcX.d/中的脚本按事先设定的优先级依次启动
11.最后执行/etc/rc.d/rc.local
12.加载终端或X-Window接口
我们就根据上面的流程来制造问题,然后解决故障!
1、硬件故障解决
不用说,系统启动的时候就会报错,自检过不了,那么下面的所有步骤都是空谈。这个问题的解决办法就是找到硬件问题,然后排除。
2、GRUB故障解决
在破坏GRUB之前,我们先来看看/boot这个目录里面的文件是什么?
[root@yufei boot]# ls
config-2.6.32-71.el6.i686 initrd-2.6.32-71.el6.i686.img
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@yufei boot]# rpm -qf config-2.6.32-71.el6.i686 initramfs-2.6.32-71.el6.i686.img symvers-2.6.32-71.el6.i686.gz System.map-2.6.32-71.el6.i686 vmlinuz-2.6.32-71.el6.i686
kernel-2.6.32-71.el6.i686
kernel-2.6.32-71.el6.i686
kernel-2.6.32-71.el6.i686
kernel-2.6.32-71.el6.i686
kernel-2.6.32-71.el6.i686
我们看到,/boot这个目录里面,除了efi和grub目录以及initrd-2.6.32-71.el6.i686.img文件不是kernel-2.6.32-71.el6.i686这个软件包安装的,其它的都是。
[root@yufei boot]# rpm -qf efi/EFI/redhat/grub.efi
grub-0.97-68.el6.i686
[root@yufei boot]# rpm -qdf grub
/usr/share/doc/grub-0.97/AUTHORS
/usr/share/doc/grub-0.97/COPYING
/usr/share/doc/grub-0.97/ChangeLog
/usr/share/doc/grub-0.97/NEWS
/usr/share/doc/grub-0.97/README
/usr/share/doc/grub-0.97/TODO
/usr/share/doc/grub-0.97/menu.lst
/usr/share/info/grub.info.gz
/usr/share/info/multiboot.info.gz
/usr/share/man/man1/mbchk.1.gz
/usr/share/man/man8/grub-install.8.gz
/usr/share/man/man8/grub-md5-crypt.8.gz
/usr/share/man/man8/grub-terminfo.8.gz
/usr/share/man/man8/grub.8.gz
上面的这两个和grub-0.97-68.el6.i686这个文件有关了。哈哈,关于上面的命令,我们已经学习过man,如果有兴趣的朋友,可以打开来看看,学习一下。我只是提一下,rpm是RPM格式的软件包管理程序。
至于这个文件是怎么来的,我们后面再继续。
OK,我们知道上面的内容了,下面我们就来破坏GRUB,直接用rm -fr /boot/grub这个命令
[root@yufei boot]# rm -fr /boot/grub/
[root@yufei boot]# ls
config-2.6.32-71.el6.i686 symvers-2.6.32-71.el6.i686.gz
efi System.map-2.6.32-71.el6.i686
initramfs-2.6.32-71.el6.i686.img vmlinuz-2.6.32-71.el6.i686
initrd-2.6.32-71.el6.i686.img
[root@yufei boot]# reboot
看到如下的提示,就进入不了系统了
下面就来看看如何解决这个问题
首先拿出你的系统光盘,放入光驱,设置从光盘启动,进入救援模式(如图)
[!--empirenews.page--]副标题[/!--empirenews.page--]因为我们知道删除了/boot/grub这个目录,所以,我们就来创建这个目录。如果说,我们不知道原因的话,最好到/boot/这个目录中看看,是不是少了什么?如何来建立这目录里面的内容呢?看下面的步骤:
首先chroot
下面就开始重新安装我们的GRUB了
查看安装好的文件
编写自己的grub.conf文件
建立grub.conf这个文件,并输入下面的内容(参考中关于grub.conf的格式)
default=0
timeout=5
title Red Hat Enterprise Linux (New GRUB)
root (hd0,0)
kernel /boot/vmlinuz-2.6.32-71.el6.i686 ro root=/dev/sda1
initrd /boot/initramfs-2.6.32-71.el6.i686.img
当然,你可能说,不知道文件名啊,写错了怎么办,一种办法,自己用笔记下,另外一种办法,就是用VIM的多窗口功能,如果不知道怎么用(参考多窗口功能)
到命令行模式下
:sp /boot
最后两个exit后就跳到重新启动菜单
重新启动后,要记得选择最后一个Boot from local drive(如果说,你在BIOS中设置从硬盘启动,就无所谓了)。这时候会有个关于SELinux的检测过程,时间稍长,随后再重新启动就能登陆系统了。
哈哈,第一个故障成功排除!
3、boot的故障解决
这里boot的故障指的是/boot目录里面的文件被误删除或者是其它的破坏行为。
我们也知道/boot这个目录里面,除了efi和grub目录以及initrd-2.6.32-71.el6.i686.img文件不是kernel-2.6.32-71.el6.i686这个软件包安装的,其它的都是。那么我们就来把其它的全部删除,看看故障情况吧。
[root@yufei ~]# cd /boot
[root@yufei boot]# rm -f config-2.6.32-71.el6.i686 initramfs-2.6.32-71.el6.i686.img symvers-2.6.32-71.el6.i686.gz System.map-2.6.32-71.el6.i686 vmlinuz-2.6.32-71.el6.i686
[root@yufei boot]# ls
efi grub initrd-2.6.32-71.el6.i686.img
哈哈,只有两个目录和一个文件了。那你们重新启动机子reboot
还是一样,用光盘进入救援模式(参考第2个故障)。
当然,我们还是需要chroot /mnt/sysimage
因为我们要安装内核的相关文件,所以,我们要把光盘里面的kernel-2.6.32-71.el6.i686这个文件安装在系统上,那如何安装呢?
先挂载光盘
mount /dev/scd0 /mnt/hgfs
这里随便也说一下,在救援模式下chroot后,光盘名不是cdrom了,而是scd0
挂载上光盘后,我们进行kernel的重新安装
注意,一定要在后面加上个–force参数(强制)
安装好后,再看/boot目录,是不是已经有了我们想要的东东了
最后两个exit后就跳到重新启动菜单,两次重新启动后,就能正常登陆了。
注意:安装后,会在grub.conf中增加新的启动选项,如果不需要可以自己删除。哈哈……
这里你会不会有什么启发呢?对了,就是上面的grub.conf文件如果你不会写的话,尝试一下用安装内核的办法增加内容,也是个不错的选择,但需要自己先创建这个文件,然后才能写。
虽然一般情况下,没有这个文件,系统同样的启动,但遇到一些特殊应用的时候,系统就启动不了了。
initramfs和initrd的区别请参考(RHEL6由initrd走向initramfs
)
但是奇怪的是:在RHEL6中,还是用mkinitrd这个命令来创建initramfs,不知道为什么会这样?(如果有明白的朋友,可以留言交流)
现在我们来删除这个文件(建议备份)。
要想重新创建这个文件其实很简单就是用mkinitrd这个命令来创建,下面就来看看这个的用法。
[root@yufei ~]# mkinitrd –help
usage: mkinitrd [--version] [--help] [-v] [-f] [--preload <module>]
[--image-version] [--with=<module>]
<initrd-image> <kernel-version>
(ex: mkinitrd /boot/initramfs-2.6.32-71.el6.i686.img 2.6.32-71.el6.i686)
通过上面的帮助,我们可以看到他给的例子就是用mkinitrd创建initramfs的。那么OK,我们也来创建一个。
[root@yufei ~]# mkdir back
[root@yufei ~]# mv /boot/initramfs-2.6.32-71.el6.i686.img ./back
[root@yufei ~]# reboot
我们发现启动后就黑屏了,没有反应。同样还是进入救援模式,然后chroot 。
执行下面的命令,如果要查看具体的创建过程,我们可以加上-v参数。
执行上面的命令要稍等一会,
再来看看/boot目录下面,是不是有了这个initramfs-2.6.32-71.el6.i686.img文件了。
重新启动系统吧!
5、运行级别的故障解决
我们知道,系统运行级别的实际相关文件都在/etc/rc.d这个目录下,所以我们删除这个目录里面的全部文件。
[root@yufei ~]# mkdir /root/back
[root@yufei ~]# mv /etc/rc.d/rc?.d /root/back
重新启动系统错误提示如下
同样,还是进入救援模式
chroot后,
只需要把运行级别inittab文件里面的5改成3或者是2就能登陆系统了,如果是改成1的话,会在Entering non-interactive startkup处卡住。
注1:如果你的默认运行级别是5的话,系统是启动不了的。但如果你的默认运行级别是2、3的话,系统能启动,只是少了很多有服务而已。
注2:在RHEL6中,如果没有inittab这个文件系统同样能启动,但启动的级别是3。
注3:如果想让整个服务和系统安装时候的一样,那么就只能自己动手来增加了(参考其他的系统来配置相应的服务),我相信通过前面的学习,你已经知道如何来增加了吧!(不同的运行级别,只是启动的服务不同,而且都是连接文件+启动的优先级别)因为这个涉及到的操作很多,有兴趣的朋友就自行研究用ln命令来操作。下面我们演示的是通过chkconfig这个命令来增加。
接上面
我们把运行级别调整到3后,进入系统(当然不换到3运行级别也行,直接在救援模式下操作)
首先创建我们的rc?.d这7个目录,不然执行chkconfig命会出错
创建目录
我们来增加一个network服务
我们也可以不用他默认的,根据自己的情况来增加
以sshd为例
增加后,我们再来看看/etc/rc.d/rcN.d中的变化
6、其他启动相关的文件故障
如/etc/rc.d/rc、/etc/init/rcS.conf、/etc/rc.d/rc.sysinit等等,这些文件都是由initscripts这个软件提供的,我们可以提取这个软件包中的文件,进行恢复。
这里只做个简单的介绍
进入救援模式,挂载光盘,拷贝initscripts-$(uname -r).rpm到某个地方,提取文件(rpm2cpio initscripts-$(uname -r).rpm |grep cpio -imd),恢复相应的文件
奇妙商场嘉年华最新版本(改名奇妙故事创造家)下载v9.82.63.00 安卓版
其它手游 192.9M
下载天天爱消除官方下载v2.34.0.0Build13 安卓手机版
休闲益智 341.9M
下载爱玩信阳黑七游戏下载v10.50.208 安卓最新版
其它手游 96.1M
下载掌上英雄联盟ios版下载v10.12.2 iphone版
其它手游 346M
下载咪咕快游云游戏ios版下载v10.2.59 iphone版
其它手游 397M
下载罗布乐思roblox国际服最新版ios下载v2.651.836 iphone版
其它手游 258M
下载傲世西游ios版下载v2.116 iPhone版
其它手游 282M
下载宝宝甜品店宝宝巴士免费版下载v9.82.59.01 安卓版
其它手游 140.9M
下载最强NBA官方版下载v1.51.621 安卓版
下载
蛋仔派对4399版下载v1.0.168 安卓游戏盒版
下载
跑跑卡丁车官方竞速版手游下载v1.34.2 安卓版
下载
宝宝巴士世界国际版下载v10.00.75.21 官方安卓最新版
下载
王者荣耀体验服下载v10.11.13.1 安卓2024最新版
下载
2024王者荣耀前瞻版下载v10.11.13.1 安卓版
下载
宝宝奇妙世界游戏手机版(宝宝巴士世界)下载v10.00.75.21 安卓最新版
下载
nba直播ios版下载v7.17.0 iphone版
下载