以挂载光盘的方式解决:
1.删除/bin/bash文件;
[root@localhost bin]# ll /bin/ | grep bash
-rwxr-xr-x. 1 root root 874376 Aug 29 2012 bash
lrwxrwxrwx. 1 root root 4 Mar 14 06:27 sh -> bash
[root@localhost bin]# rm /bin/bash
rm: remove regular file `/bin/bash'? y
[root@localhost bin]# ll /bin/ | grep bash
lrwxrwxrwx. 1 root root 4 Mar 14 06:27 sh -> bash #闪烁
2.reboot重启会出现无法关机的情况,因为关机会执行对应级别下的脚本,bash程序被删了,那么该级别下所有的脚本也无法执行了,这时可以用虚拟机的关机启动项重启,通过进入紧急救援模重装bash;
3.重启,按下F2,调到boot项,通过 +上移 -下移方式将CD-ROM Drive设定为第一启动盘,然后从光盘启动,如图
4.选择进入紧急救援模式Rescue installed system如图(把详细的图示都列出来了不管有没有必要)
5.如果用到网络功能就初始化网络设置,否则可以跳过,我用的是挂载光盘方式所以就跳过了,如图
6.然后它会告诉你你的系统已经被挂载到/mnt/sysimage下了,chroot /mnt/sysimage是切换到真正的根上,按下continue继续,如图
7.如果出现图示界面说明你已经进入到紧急救援模式下的命令行界面了,如图
8.接着就是找到bash的安装包然后安装即可(此时的光盘已经是挂载的了,而且最好不要再挂载光盘到/mnt目录下)。ls /dev会显示设备列表,但是其中并没有CD-ROM,看的教程上说CD-ROM一般模拟的都是hd的设备,而且CD-ROM是指向hdX的一个链接,我的/dev目录中没有hd设备,反而是/dev/dvd这个设备(最笨的方法就是实在无法确认的话就大致找几个貌似对的,先挂载,然后进去找,如果有安装包列表就是对的)
9.根目录下(不是/mnt/sysimage而是这个小系统的根)创建一个目录,然后将/dev/dvd挂载到该目录下,进入该目录,找到安装包列表,找到bash包,如图
10.安装bash包 rpm -ivh --replacepkgs --root /mnt/sysimage bash-4.1.2-14.el6.i686.rpm
其中--replacepkgs:指定替换原来的bash包;
--root /mnt/sysimage:指定将包装在根下(前面进去救援模式时告诉你的此时的根在/mnt/sysimage);没有此选项说明你把bash包装到当前的这个小系统中去了,并不是装到原系统中去,如图:
11.切换到真正的根上去查看是否装上了,完成到这一步就说明问题已经解决了;如图
12.重新启动,选择boot from local drive启动,进入/bin目录下可以重新找到bash
进入系统后
[root@localhost ~]# cd /bin/
[root@localhost bin]# ll | grep bash
-rwxr-xr-x. 1 root root 868596 Aug 29 2012 bash
lrwxrwxrwx. 1 root root 4 Jul 26 02:46 sh -> bash
[root@localhost bin]#
如果不确定能不能挂载上,或是不想用这个方式,而且你知道网络上有一台服务器,里面某个目录里有这个安装包,此时只需要连接该服务器切换到这个目录里,将其下载到本地安装即可(这个是教程说的,我没试,但是也是一种解决办法)
阅读(4486) | 评论(0) | 转发(0) |