系统故障排除
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键启动。
进入单用户模式,修改密码。
步骤
步骤一:启动Linux在grub菜单选择上下键
如图-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/fstab中boot目录的UUID
八、退出两次,选重启
Exit
Exit
reboot