系统故障排除

 

 

 

linux破解密码

 

案例一:破解Linux系统密码

 

1.启动Linux
2.在grub菜单选择上下键
3.按e   选择kernel这行,在选择e 
4.在最后空格加上1,回车
5.按b键启动
6.sh-3.2# passwd  修改密码
7.sh-3.2# init 5

 

启动Linux-->grub菜单选择上下键按e-->选择kernel这行,在选择e -->在最后空格加上1,回车-->b键启动。

进入单用户模式,修改密码。

 

步骤

 

步骤一:启动Linuxgrub菜单选择上下键

 

如图-1所示,在此处按上下键停止在此界面(如果虚拟机总是很卡跳过此界面,可选择开机到BIOS”再按F10保存退出即可看见),按e进入编辑。

 

 

 

 如图-2所示,选择kernel这行,在选择e

 

 

 如图-3所示,在最后空格加上1,回车。

 

 

如图-4所示,按b键启动。

 

 

 如图-5所示,执行passwd修改密码即可。切换运行级别5

 

 

 

 

案例二:为grub加密

 

1.在终端执行grub-md5-crypt会生成md5,加密字符串。
[root@svr5 /]# grub-md5-crypt 
Password: 
Retype password: 
$1$MWW7E$0iF8E8dCkAmJq0M27Aw5k.
[root@svr5 /]# 
2.将其加密字符串写到,grub.conf配置文件。
[root@svr5 /]# vim /boot/grub/grub.conf 
......
password --md5 $1$MWW7E$0iF8E8dCkAmJq0M27Aw5k.  ##注意写到title字段的上边  
title Red Hat Enterprise Linux (2.6.32-431.el6.x86_64)
......
3.重启再次进入在grub菜单选择上下键,需先按“p”输入密码。敲回车!
4.按e   选择kernel这行,在选择e 
5.在最后空格加上1,回车
6.按b键启动
7.sh-3.2# passwd  修改密码
8.sh-3.2# init 5

 

修复MBR扇区故障

 

1.为虚拟机添加一块80GB的新磁盘 
2.采用MBR模式分区,划分一个1GB的新分区 
3.将此分区格式化、挂载到 /mnt 下 
4.MBR备份及破坏 
5.备份磁盘/dev/sda的第1个扇区 
6.备份文件保存到/mnt/sda.mbr.bak 
7.清除/dev/sda前512个字节,关机重启 
8.进入光盘急救模式,进行恢复 

 

方案

 

本实验的整体操作是利用dd命令备份,再进行还原。需注意备份文件要放在另一硬盘。

修复时因MBR损坏,无法引导开机,是通过光盘引导进入修复模式进行还原。

在修复模式下,系统当中的目录是不允许挂载的。需要自己建立一个目录挂载。

 

 

步骤

 

实现此案例需要按照如下步骤进行。

 

步骤一:为虚拟机添加一块80GB的新磁盘

 

采用MBR模式分区,划分一个1GB的新分区,命令操作如下所示:

 

[root@svr5 ~]# ls /dev/sdb   //是否识别新的硬盘sdb
/dev/sdb
[root@svr5 ~]# parted /dev/sdb mktable msdos
信息: You may need to update /etc/fstab.                                  

[root@svr5 ~]# parted /dev/sdb print
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 85.9GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start  End  Size  Type  File system  标志

[root@svr5 ~]# parted /dev/sdb mkpart primary ext4 0 1G
警告: The resulting partition is not properly aligned for best performance.
忽略/Ignore/放弃/Cancel? i                                                
信息: You may need to update /etc/fstab.                                  

[root@svr5 ~]# parted /dev/sdb print
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 85.9GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start  End     Size    Type     File system  标志
 1      512B   1000MB  1000MB  primary

[root@svr5 ~]# partx -a /dev/sdb
BLKPG: Device or resource busy
error adding partition 1
[root@svr5 ~]# ls /dev/sdb1
/dev/sdb1
[root@svr5 ~]#

 

 

 

 

 

 

 

将此分区格式化、挂载到 /mnt 下。

 

命令操作如下所示:

 

[root@svr5 ~]# mkfs.ext4 /dev/sdb1
……
[root@svr5 ~]# mount /dev/sdb1 /mnt/
[root@svr5 ~]# mount | grep /mnt/
/dev/sdb1 on /mnt type ext4 (rw)
[root@svr5 ~]#

 

 

 

 

步骤二:MBR备份及破坏

 

 

分析:采用dd命令进行备份与破坏,把磁盘sda的前512个字节读取并写到一个文件里,要注意的是要写到mnt目录里。

 

备份磁盘/dev/sda的第1个扇区,命令操作如下所示:

 

[root@svr5 ~]# dd if=/dev/sda of=/mnt/sda.mbr.bak bs=1 count=512
记录了512+0 的读入
记录了512+0 的写出
512字节(512 B)已复制,0.00107661 秒,476 kB/秒
[root@svr5 ~]# ls -l /mnt/sda.mbr.bak 
-rw-r--r--. 1 root root 512 3月   3 15:51 /mnt/sda.mbr.bak
[root@svr5 ~]#

 

 

 

 

 

破坏磁盘/dev/sda的第1个扇区,命令操作如下所示:

 

 

[root@svr5 ~]# dd if=/dev/zero of=/dev/sda bs=1 count=512
记录了512+0 的读入
记录了512+0 的写出
512字节(512 B)已复制,0.00382325 秒,134 kB/秒

 

 

 

 

 

关机,命令操作如下所示:

 

[root@svr5 ~]# init 0

 

步骤三:进入光盘急救模式,进行恢复

如图-6所示,将光盘驱动的启动时连接的勾去掉,单击确认。

 

 

 

 开机查看效果,如图-7所示。

 

 

如图-8所示,关闭虚拟机电源,进入光盘急救模式,进行恢复,将光盘驱动启动时连接的勾打上,确保放入的是RHEL6.5的光盘,进入光盘修复模式。

 

 

 

 如图-9所示,开机选择第三项“Rescue installed system”进入修复模式。

 

 

 

 

如图-10所示,选择语言,此模式只支持英文。默认即可,按回车键。

 

 

如图-11所示,选择键盘,默认即可,按回车键。

 

 

 如图-12所示,是否开启网络,按Tab键选择“No”,按回车键。

 

 

 如图-13所示,简单理解是说会尝试寻找Linux系统分区,找到了会把它挂载/mnt/sysimage,按Tab键选择“Continue”,按回车键。

 

 

 如图-14所示,没有找到任何Linux分区,按回车键。

 

 

如图-15所示,选择start shell打开一个Shell环境,按回车键。

 

 

 

创建目录/bak,并挂载。

 

命令操作如下所示:

 

bash-4.1# mkdir /bak
bash-4.1# mount /dev/sdb1 /bak
bash-4.1# dd if=/bak/sda.mbr.bak of=/dev/sda
bash-4.1# reboot

 

修复GRUB引导故障

问题

 

删除/boot/grub/grub.conf 文件 
关机重启,进行修复 
进入系统后恢复或重写/boot/grub/grub.conf 文件 

 

方案

删除group.conf后,系统需要手动引导内核启动和加载必要的驱动程序。进入系统后需从新创建和书写group.conf配置文件。
手动引导内核的命令依次为:
grub> root (hd0,0) —— 找到/boot分区,此处为第一块磁盘的第一个分区。
grub> kernel /vmlinuz(Tab键) ro root=/dev/sda2 —— 指定内核及以只读方式加载根分区。
grub> initrd /initramfs-(Tab键) —— 指定必要驱动程序。
grub> boot —— 启动。

 

步骤

实现此案例需要按照如下步骤进行。

步骤一:删除/boot/grub/grub.conf 文件

命令操作如下所示:

 

 

[root@svr5 ~]# rm -rf /boot/grub/grub.conf
[root@svr5 /]# df –h                             //查看一下根分区是sda2,恢
复时会用到
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2        97G  2.8G   89G   4% /
tmpfs           491M   76K  491M   1% /dev/shm
/dev/sda1       194M   34M  151M  19% /boot
/dev/sda3        97G  188M   92G   1% /data
/dev/sr0        3.6G  3.6G     0 100% /media/RHEL_6.5 x86_64 Disc 1
[root@svr5 ~]# init 6

 

 

 

 

如图所示,系统停在grub>处无法进行启动。

 

 

步骤二:进入系统后恢复或重写/boot/grub/grub.conf 文件

首先进入系统,手动输入命令,此模式下支持Tab键。

命令操作如图所示:

 

 

 

 进入系统后恢复或重写/boot/grub/grub.conf 文件,命令操作如下所示:

 

 

[root@svr5 /]# vim /boot/grub/grub.conf
[root@svr5 /]# cat /boot/grub/grub.conf 
default=0        //时间截止默认进入第一个系统
timeout=20       //时间等待为20秒钟
title TARENA NSD Linux Server    //选择系统时,系统名称
root (hd0,0)
kernel /vmlinuz-2.6.32-431.el6.x86_64 ro root=/dev/sda2  //内核名称复制粘贴
initrd /initramfs-2.6.32-431.el6.x86_64.img                //驱动文件名复制粘贴
[root@svr5 /]# init 6

 

如图所示,查看grub引导界面变化。

 

 

 

或者:用备份恢复系统grub启动

1.做备份

[root@localhost ~]# mkdir  /data
[root@localhost ~]# mount /dev/sdb1 /data/
[root@localhost ~]# cp /boot/grub/grub.conf  /data/
[root@localhost ~]# ls  /data/
grub.conf  lost+found 

 

 

2.进入救援模式,用备份恢复grub引导启动

 

 

 

 3.关机,这个需要设置cdrom为第一启动项,放入系统盘进入救援模式

 

 

 4.用备份恢复grub.conf引导文件

 

 手写恢复grub启动

 

1.对 /boot/grub/grub.conf 进行手动编写,注意:错一点就进不去

进去输入root  (hd0, Tab键,出分区列表,找到启动分区

 

 

 2.成功进入系统后进入vim  /boot/grub/grub.conf再次进行编写

注:因为上1编写是临时的,所以在进入系统后要在/boot/grub/目录下创建grub.conf文件 进行手写变异,使其永久生效。

 

 

 

进入系统手写grub格式:

 

default=0       //0代表启动第一个内核   1代表启动第二个    
timeout=5       //选择进入系统时间5秒                     
title Red Hat Enterprise Linux (2.6.18-348.el5)  //系统名随便起     
root =(hd0,0)  //指定 root在救援模式里指定的启动引导区       
      kernel /vmlinuz-2.6.18-348.el5  ro  root=/boot/sda2  //内核
      initrd /initrd-2.6.18-348.el5.img

 

/etc/inittab文件丢失

 

 

 问题

 

 

 

1. 查询/etc/inittab文件是由哪个软件包产生的 
2. 删除/etc/inittab文件,重启系统 
3. 切换到运行级别3,进行修复 

 

方案

 

在RHEL6.5操作系统里,如果删除/etc/inittab文件,会默认进入第3运行级别。

修复的思路是,首先通过命令rpm -qf /etc/inittab,查看该文件是有那个包产生的,在重新将此安装包强制安装一遍。

 

 

步骤

 

 

实现此案例需要按照如下步骤进行。

 

步骤一:查询/etc/inittab文件是由哪个软件包产生的

 

命令操作如下所示:

 

 

 

[root@svr5 ~]# rpm -qf /etc/initta
initscripts-9.03.40-2.el6.x86_64
[root@svr5 ~]#

 

 

 

 

 

步骤二:删除/etc/inittab文件,重启系统

 

命令操作如下所示:

 

 

 

[root@svr5 ~]# rm -rf /etc/inittab
[root@svr5 ~]# init 6

 

 

 

 

 

步骤三:切换到运行级别3,进行修复

分析: 注意安装时要加强制才可以。

命令操作如下所示:

 

 

[root@svr5 ~]# rpm -ivh --force /misc/cd/Packages/initscripts-9.03.40-2.el6.x86_64.rpm 
Preparing...                ########################################### 
[100%]
   1:initscripts            ########################################### 
[100%]
[root@svr5 ~]# ls /etc/inittab 
/etc/inittab
[root@svr5 ~]#

 

 

 

修复/etc/fstab

 

 

问题

 

 

 

修改/etc/fstab中根分区的挂载设置
将根分区的UUID值故意写错 
重启系统,观察错误现象 
修复上述故障 

 

 

 

 方案

 

Linux在开机过程中会有一些提示,大家遇到问题时要多去关注这些信息。

需要注意的一点是,在开机过程中根分区是以只读方式加载的,所以要想修改并保存,要自己手动以读写方式挂载根分区。

 

 

步骤

 

 

实现此案例需要按照如下步骤进行。

步骤一:修改/etc/fstab中根分区的挂载设置

将根分区的UUID值故意写错(错误不要太大,就将第一个字母故意改错,修复时还有手动改回来)

重启系统,观察错误现象。

命令操作如下所示:

 

 

 

[root@svr5 ~]# cat /etc/fstab 
#
# /etc/fstab
# Created by anaconda on Wed Jan 14 17:11:20 2015
#
# 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=fbc9bd53-e533-44dd-9236-55ab71559d87 /            ext4    defaults      
1 1
[root@svr5 ~]# vim /etc/fstab
[root@svr5 ~]# cat /etc/fstab 
#
# /etc/fstab
# Created by anaconda on Wed Jan 14 17:11:20 2015
#
# 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=rbc9bd53-e533-44dd-9236-55ab71559d87 /            ext4    defaults      
1 1
[root@svr5 ~]# init 6

 

 

 

 

如图所示,系统开机界面。系统提示请输入root的密码进入修复。

 

 

 

 

步骤二:输入root密码

命令操作如下所示:

 

 

[root@svr5 ~]# mount -o remount,rw /dev/sda2 /
[root@svr5 ~]# vim /etc/fstab
[root@svr5 ~]# cat /etc/fstab 
#
# /etc/fstab
# Created by anaconda on Wed Jan 14 17:11:20 2015
#
# 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=fbc9bd53-e533-44dd-9236-55ab71559d87 /            ext4    defaults  
1 1
[root@svr5 ~]#init 5

 

 恢复 /boot 目录

 

RHEL6

 

一、模拟/boot目录损坏

 

#  umount  /boot           //假设sda1对应/boot分区
#  mkfs.ext4  /dev/sda1

 

二、以光盘启动,进入救援模式

 

 

 进入救援模式:

 

 选择语言:

选择键盘:

 

救援方法:

 

 

 

 设置网络:

 

Resue:

选择continue即可:

 

 

 

 

  然后进入到shell选择界面。我们选择开启一个shell,以供我们使用,完成系统修复。

 

 进入shell之后,我们就有得到了一个修复我们系统的平台,正式开始修复工作

 

挂载sda1/boot目录

 

 

 三、挂载光盘到/media目录

 

 

四、强制安装kernel

 

 

 五、安装完kernel后,内核文件等已经安装成功,但是没有grub,还要继续安装grub

 

 

 

 六、grub安装完毕后,没有生成配置文件,手工创建配置文件

 

 

 

 

 

七、更正/etc/fstabboot目录的UUID

 

 

 

 

 

八、退出两次,选重启

 

Exit

Exit

reboot

 

posted @ 2020-11-10 12:27  钟桂耀  阅读(350)  评论(0编辑  收藏  举报