有时我们会碰到系统不能正常启动的情况,可能有以下几种原因,这里列出了解决方法
一、grub文件损坏
二、bash损坏
三、开机后忘记密码或者脚本设置问题
一、grub文件损坏
grub配置文件损坏,这里我们人为将文件改名后并重启系统
系统重启,将会到该grub提示符界面
解决方法
1.指定根分区,不知道可以用find (hd0,0)/,然后敲tab键补全,找一下根分区,也就是存放内核的分区
2.找到根分区后,root到根分区,指定kernel文件和initrd文件,然后boot系统
3.RHEL6在boot过程中会出现下图情况,提示没有参数或参数为空,说明要指定根设备,也就是明确分区信息,RHEL5中只需指定kernel文件即可正常启动
4.如果记得根目录的路径位置,就指定内核所在的根设备,boot之,如果信息正确,则可以正常启动
逻辑卷
一般分区
4.1、不记得,就需要使用安装光盘进入紧急救援模式,Rescue installed system,选择该项会启动光盘上的精简Linux系统,在特殊情况下可以进入该模式,修复硬盘上的系统。
选择语言
选择键盘类型
指定救援镜像文件的介质,可以是光盘镜像也可以是其他本地或网络路径,这里我门选择光盘镜像即可
提示是否启用网络功能,根据需要选择
选择配置下
下图中提示紧急救援模式下将找到Linux的安装信息并将其挂载到/mnt/sysimage下,选择Continue
单击OK,提示我们硬盘中的系统已被挂载至/mnt/sysimage目录下
下图提示,进入shell、诊断或重启,我们选择进入shell
出现命令行界面
使用mount命令查看挂载信息
然后我们可以切换根目录,到硬盘系统中/boot/grub目录下手动新建grub.conf文件,原硬盘上系统可成功重新启动
bash-4.1# chroot /mnt/sysimage #切换根目录到原磁盘文件根目录 bash-4.1# cd /boot/grub #进入到grub目录 bash-4.1# vim grub.conf #重新创建grub文件 default=0 timeout=5 splashimage=(hd0,0)/grub/splash.xpm.gz hiddenmenu title CentOS (2.6.32-431.el6.x86_64) root (hd0,0) kernel /vmlinuz-2.6.32-431.el6.x86_64 ro root=/dev/sda initrd /initramfs-2.6.32-431.el6.x86_64.img bash-4.1# exit #退出根目录 bash-4.1# reboot #重启系统,只要grub文件正确,重启后,可正常进入原硬盘上的操作系统
二、bash损坏
系统启动时,提示init进程、脚本不能执行
解决方法
1、利用引导盘,进入紧急救援模式,选择Rescue installed system回车,过程同上文中4.1
2、挂载光盘镜像
3、重装bash的rpm包到root下
bash-4.1# rpm-ivh bash-4.1.2-9.el6_2.x86_64.rpm --root /mnt/sysimage/ --replacepkgs #安装版本以光盘镜像中rpm包为准,最好比原有版本一致或更新
这样就可以成功解决bash损坏造成启动不了系统
三、开机后忘记密码或者脚本设置问题
问题1:由于生产环境需要,可能需要在系统启动后执行一些操作,我们会编辑/etc/rc.d/rc.local文件,其链接文件为/etc/rc.d/rc3.d/S99local,是init3系统正常启动后用户登陆前最后执行的脚本。
问题2:/etc/inittab文件内容,id:3:initdefault: ,如果这里改为6,系统会不停重启
解决方法:如果系统启动后有异常,也有可能是这个脚本内容有问题,进入单用户模式,修改密码或者文件即可
重启系统,3秒钟内,按一下回车键。此时显示如下界面,输入‘e’会在启动前编辑命令行; 输入‘a’ 会在启动前更改内核的一些参数; 输入‘c’ 则会进入命令行。而我们要做的是输入 ‘e’
输入‘e’后,到了下图界面,选择kernel项,输入‘e’
下图界面中,在命令行后输入“single”或者“1”或者“s”,然后先按回车然后按 ‘b’,启动后就进入单用户模式
单用户模式界面
此时只需使用passwd命令修改用户密码或者找到有问题的文件进行修改即可