案例1:自己忘记root密码,可进单用户模式进行修改root密码;
案例2:服务器在公共场合,为了防止有人进入单用户模式破解root密码,可先对grub引导进行加密,为了更加安全可对启动内核也加密:
编辑/etc/grub.conf文件,添加编辑grub启动菜单的密码和启动内核密码:
这样在编辑grub启动菜单之前要输入制定密码,启动内核之前也要输入指定密码。
案例3:忘记了grub启动编辑密码和内核启动密码的解决办法:
可通过光盘的救援模式进行修复:
1、 从光盘启动,选择RescueInstalled system进入救援模式;
2、 根据提示选择语言和键盘类型;
3、 选择是否配置网络,不需要配置;
4、 根据硬盘上提示,将文件系统挂载在/mnt/sysimage/下,选continue以读写模式加载;
5、 用chroot /mnt/sysimage命令切换系统根目录;
6、 然后vi/etc/grub.conf修改文件,将密码行删掉,exit退出,重启即可;
案例4:如果grub被破坏,系统无法启动,则需要用光盘的救援模式进行重装grub:
通过光盘的救援模式进行修复:
1、 从光盘启动,选择RescueInstalled system进入救援模式;
2、 根据提示选择语言和键盘类型;
3、 选择是否配置网络,不需要配置;
4、 根据硬盘上提示,将文件系统挂载在/mnt/sysimage/下,选continue以读写模式加载;
5、 用chroot /mnt/sysimage命令切换系统根目录;
6、 使用fdisk –l /dev/sda命令确认启动程序的安装位置是在/dev/sda;
7、 使用grub-install/dev/sda命令安装grub引导程序到磁盘/dev/sda的mbr扇区;
8、 Exit退出重启。
Linux系统启动故障修复案例:
登录linux系统之后,依次执行以下命令人为破坏当前linux系统:
#cd /
#umount /boot
#rm –fr /boot 删除/boot目录,此目录包含grub有关的文件和内核文件
#rm –fr /etc/inittab 删除init表,此文件定义了系统运行级别;
#rm –fr /etc/rc.d/rc.sysinit 删除init运行级别脚本文件;
#rm –fr /etc/rc.d/rc.local 删除开机脚本文件;
#mv /etc/fstab /etc/fstab.bak 备份系统挂载表fstab文件;
#sync
#reboot
此时,linux系统已经瘫痪,重启已无法正常进行了。。。
修复思路:fstab àkernelà grubàinit
通过rhel6光盘引导启动,进入rescue installed system修复模式;
进入修复模式时,选择语言和键盘类型,直接回车;
之后选择是否配置网络,选择否,因为修复系统用不到网络;
然后会提示:Rescue程序将查找当前硬盘上是否有已安装的linux系统,如果找到的话就自动挂载到/mnt/sysimage下,Rescue程序搜索硬盘上的linux分区;搜索结果显示找不到linux分区,这是因为/etc/fstab文件被删除了,所以导致系统无法读取linux分区,此时需要恢复/etc/fstab文件:
#fdisk –l 查看磁盘分区:
在结果中可以看到系统分区有两个/dev/sda1和/dev/sda2。/dev/sda1是/boot分区,/dev/sda2是LVM分区;
#lvm vgchange –ay 命令可告诉系统建立相关的device-mapper,这样就可以看到/dev/mapper/VGname-LVname的设备文件;
从/dev/mapper/VGname-LVname中即可找到根分区;
此时,要挂载/根分区,恢复/etc/fstab文件:
#mkdir test
#mount –t ext4/dev/mapper/vg_redhat6-lv_root /test 挂载根分区到/test目录下;
#cp /test/etc/fstab.bak/test/etc/fstab 还原恢复fstab文件,如果fstab没备份,可现写一个;
#reboot 重启系统;
重启之后,再次进入Rescue系统,此时Rescue程序会根据fstab文件将linux分区挂载到/mnt/sysimage目录下;
此时,#chroot /mnt/sysimage命令可以切换至原来系统,可操作原系统的文件,以恢复被破坏的文件;
#exit 退回Rescue模式下;
#mount /dev/sr0 /mnt/source 挂载关盘到/mnt/source目录下;
#rpm –ivh /mnt/source/Packages/kernel-2.6.32-573.el6.x86_64.rpm–root=/mnt/sysimage –force 安装kernel文件可以修复三个内核文件;此时修复了内核文件,接下来修复grub程序;
修复grub程序:
#chroot /mnt/sysimage
#grub-install /dev/sda 安装grub程序到/deb/sda
#ls /boot/grub 查看grub目录下是否存在grub.conf文件,如果没有就手动编辑一个;
#vi /boot/grub/grub.conf 内容如下:
保存退出,grub修复完成。
修复启动脚本文件:
#rpm –qf /etc/inittab 查询包含inittab文件的软件包;
#rpm –qf /etc/rc.d/rc.sysinit 查询包含rc.sysinit文件的软件包;
#rpm –qf /etc/rc.d/rc.local 查询包含rc.local文件的软件包;
查询得知,要修复的文件都包含在initscripts-9.03.49-1.el6.x86_64.rpm这个软件包里;
接下来要把文件从这个RPM包里分离出来,并还原到/etc目录下:
#exit
#cp /mnt/source/Packages/initscripts-9.03.49-1.el6.x86_64.rpm/mnt/sysimage/tmp
#chroot /mnt/sysimage
#cd tmp
#rpm2cpio initscripts-9.03.49-1.el6.x86_64.rpm| cpio –imd 解压软件包到当前目录;
#cd etc
#cp inittab /etc/
#cp rc.sysinit /etc/rc.d/
#cp rc.local /etc/rc.d
此时修复已经完成,重启即可恢复系统;过程中可能有其他未提到的问题,需要视情况上网查询解决。
扫一扫关注作者公众号