[root@kaivi6 boot]# rm -rf initramfs-2.6.32-754.el6.x86_64.img
[root@kaivi6 boot]# reboot
这时候他会自动找到系统的原来根挂载到了/mnt/sysimage下
真正的操作系统根/dev/sa2 在/mnt/sysimage下
破坏的文件initramfs-2.6.32-754.el6.x86_64.img 在/dev/sda1 /mnt/sysimage/boot下
切换到根目录下 chroot /mnt/sysimage
查看是否在根目录下 pwd
查看根下面的文件 ls
查看是否挂在到跟下 df
查看 /boot下的文件 缺少了initramfs 文件
进入/boot文件夹 cd /boot/
生成新的initramfs文件 :mkinitrd initramfs-`uanme -r`.img `uname -r ` (反向单引号)
查看是否生成成功 ls -l
成功之后退出(exit)重启(reboot)即可
[root@kaivi6 ~]# rm -f /boot/vmlinuz-2.6.32-754.el6.x86_64
![在这里插入图片描述](https://img-blog.csdnimg.cn/20191102153453200.png
此时的根 是光盘加载的一个虚拟的文件系统根,不是我们所要找的根文件系统
创建一个新的文件夹 ,把光盘挂在到这个临时文件夹中
原理就是在光盘中有一个文件和vmlinuz是一样的,只需要挂在光盘然后拷贝过来就ok
接下来就是退出 重启就ok
[root@kaivi6 ~]# vim /etc/inittab
修改默认启动级别为6 reboot 模式,则会不断重复开机自启。
倒计时的时候按任意键 到下面这个界面
按照下面的提示 按下 a 键
在 qiuet 后面加上 空格 1-6 跳过 /etc/inittab 中的启动选项 先进入这里对应的
默认启动项 这里选择 3 字符界面为例 ,即在qiuet 后面直接输入 3
这里注意这是临时启动,还需要改对应的文件 vim /etc/inittab 。
1 模式 单用户模式 可以修改 破解root 口令
服务故障起不来故障排错
临时进入1 单用户模式 因为 一般2-5模式都是关闭的 但是1模式是开启的
一般很多服务都不启动,所以一般因为服务起不来而down机
checonfig --list
找到对应的服务先暂时关闭
checonfig [service] off [service] 对应的服务名称
重启忽略这个服务先把机器起来
之后再解决的服务的问题
reboot
[root@kaivi6 ~]# dd if=/dev/zero of=/dev/sda bs=1 count=446
446+0 records in
446+0 records out
446 bytes (446 B) copied, 0.00988625 s, 45.1 kB/s
产生的现象:
直接到了光盘启动,因为光盘已经连接
断开光盘象限:
会尝试去通过网络来去找开机引导文件
进入救援模式:
第一种方式后面加的是硬盘DISK,因为gurb的引导文件在BMR的前面446字节,不属于任何一个分区
第二种方式是gurb交互是的方式
boot 的分区
setup 按装分区
进入到开启shell的模式下:
先要切换到根目录下 之后运行grub 修复命令即可
也可以用第二种方式进行交互式grub修复
MBR后续的27个扇区里面 上图看的很清楚
不仅仅修复1阶段 其他阶段都有着一定的修复
重启即可
[root@kaivi6 ~]# dd if=/dev/zero of=/dev/sda bs=1 count=10240 seek=512
10240+0 records in
10240+0 records out
10240 bytes (10 kB) copied, 0.021381 s, 479 kB/s
产生的现象:
依旧救援模式 一直到开启shell中救援:
重启即可
先破坏二阶段的分区表
[root@kaivi6 grub]# dd if=/dev/zero of=/dev/sda bs=1 count=446
446+0 records in
446+0 records out
446 bytes (446 B) copied, 0.00951482 s, 46.9 kB/s
[root@kaivi6 grub]# hexdump -C -n 512 /dev/sda -v
00000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
[root@kaivi6 grub]# rm -rf /boot/grub/
[root@kaivi6 grub]# reboot
grub1阶段破坏就认为没有启动功能了 产生现象:
依旧救援模式 一直到开启shell中救援:
这个修复了grub1 2 的部分文件,但是没有修复grub.conf文件 需要手工写
vim /boot/grub/grub.conf
技巧:
:r!ls /boot/vmlinuz*
:r!ls /boot/init*
重启即可
[root@kaivi6 ~]# mv /sbin/init /data
[root@kaivi6 ~]# reboot
产生的现象如下图,一直转圈圈:
选择 a键
为了看到更加清楚,把前面的rhgb quiet删除 然后加上 selinux=0 init=/bin/bash
禁用selinux 更改第一个进程
挂载光盘
之后可以引用光盘里面对应的包
ls /mnt/Packages
找到对应的安装包
有时候会第一次根的挂载第一次是只读的,这时候就需要重新挂载一次
找一个比较空的地方解开对应的压缩包
查看文件是否存在
重新移到/sbin目录下
重启即可
(登入问题)
方法二:
重启后,发现可以在bash环境下操作。此时,用rpm命令查询/sbin/init文件对应的安装包为upstart,挂载光盘到/mnt目录为安装做准备。由于/目录挂载状态为只读,重新挂载并设置为读写。
rpm重新安装upstart软件包。因为只是丢失了/sbin/init文件,所以需要添加–force选项强制覆盖安装。
重新启动后,成功进入系统。
实验: rm /sbin/init 恢复之
1 grub菜单 加 selinux=0 init=/bin/bash 2 mount -o remount,rw /
3 mount /dev/sr0 /mnt/
4 rpm2cpio /mnt/Packages/upstart.xxx.rpm | cpio -idv ./sbin/init
5 mv ./sbin/init /sbin/
[root@kaivi6 ~]# rm -rf /etc/fstab /boot/*
[root@kaivi6 ~]# cat /etc/fstab
cat: /etc/fstab: No such file or directory
[root@kaivi6 ~]# ll /boot/
total 0
直接到救援模式下的开始shell下进行操作
对应一样的版本号
这次的后果 系统找不到根在哪里,找不到分区
找不到根就等于说进不去根下面的/boot/里面进行修复
所以第一步就是先回复fastab配置文件,这样才能把根挂载
能看到只有一块sda 硬盘 一共分了5个分区 分区4和5 可以先排除,因为一个扩展分区 一个swap分区 对于1分区只有1个G的很小空间,所以当根的话不现实
,大概率是/boot分区 。最大可能是2 3 。所以在这里可以建立一个临时文件夹,尝试挂载一下 看下里面具体的内容,从而来判断哪一个是根分区。
很明显,sda2 是根
在上面文件配置之后重启
就能找到对应的根了 就可以chroot 切根进行修复了
重新启动 进入救援模式 开启shell界面
切根并且进入/boot文件夹,boot中重要的2个文件 一个是vmlinuz文件,这个文件需要光盘重新挂载后重新拷贝一份到/boot/下即可
有个这个vmlinuz文件就可以通过命令生成initramfs文件
现在还缺少grub.conf文件 需要自己配置
vim /boot/grub/grub.conf
1 rescue mode
恢复/etc/fstab 找到/ 所在分区 fdisk -l
mkdir /mnt/tmp
mount/dev/sdaN /mnt/tmp
ls /mnt/tmp
mount /dev/sda2 /mnt/tmp
vim /mnt/tmp/etc/fstab
/dev/sda1 /boot ext4 defaults 0 0
/dev/sda2 / ext4 defaults 0 0
/dev/sda3 /data ext4 defaults 0 0
/dev/sda5 swap swap defaults 0 0reboot
2 rescue mode 恢复内核和initrd 文件
/dev/sda2 --> /mnt/sysimage
chroot /mnt/sysimage
mount /dev/sr0 /mnt/
方法1 rpm -ivh/mnt/Packages/kernel.xxxx.rpm --force方法2 cp /mnt/isolinux/vmlinuz /boot/
mkinitrd /boot/initramfs.imguname -r
3 修复 grub grub-install /dev/sda vim /boot/grub/grub.conf 方法2
cat /boot/grub/grub.conf
default=0
timeout=5
title=centos
kernel /vmlinuz root=/dev/sda2
initrd /initramfs.img
4 reboot
给grub的启动过程加密:
可以在grub的启动过程的两个环节加密:
1)给启动菜单项编辑权限加密;
2)启动特定菜单项的加密,加密命令相同,但是位于/boot/grub/grub.conf文件的不同位置
加密可以使用明文密码,但安全性太差。目前使用md5和sha-512加密方式加密,现在用md5加密启动项编辑权限,用sha-512加密启动特定菜单项
可以在vim编辑器下使用:r!grub-md5-crypt和r!grub-crypt命令直接生成md5和sha-512加密密码。一般把这个password放在hiddenmenu前面。
加密选项的语法为:
md5加密:password --md5 加密密码
sha-512加密:password --encrypted 加密密码