出现如下图的故障 进入救援模式 选择救援安装
这时候他会自动找到系统的原来根挂载到了/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 文件
使用下面ramdisk命令修复
进入/boot文件夹 cd /boot/
生成新的initramfs文件 :mkinitrd initramfs-`uanme -r`.img `uname -r ` (反向单引号)查看是否生成成功 ls -l 成功之后退出(exit)重启(reboot)即可
产生的现象如下图:
 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]# rebootgrub1阶段破坏就认为没有启动功能了 产生现象: 依旧救援模式 一直到开启shell中救援: 这个修复了grub1 2 的部分文件,但是没有修复grub.conf文件 需要手工写
vim /boot/grub/grub.conf技巧: :r!ls /boot/vmlinuz* :r!ls /boot/init*
重启即可
产生的现象如下图,一直转圈圈: 选择 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/
直接到救援模式下的开始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 0
reboot
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.img uname -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 加密密码
