硬盘中的mbr信息丢失
模拟问题: dd if=/dev/zero of=/dev/vda bs=446 count=1
(将启动磁盘的前446字节,即mbr文件更改)
解决方案:
从光盘启动系统,进入rescue(援救)模式
(我们正常启动时,是从系统的硬盘启动)
chroot /mnt/sysimage
grub2-install /dev/vda
(grub2-install 启动分区所在硬盘)
exit
exit
问题产生及现象
图一操作后,reboot重启机器,遇到问题,见图二
(图一中,fdisk -l ,可见。/dev/vda右侧有一 * 号,表示该盘为启动分区所在磁盘)
解决问题具体操作:
先将虚拟机关机。
启动虚拟机
再次关闭虚拟机
这时再启动虚拟机就可以正常启动了
(1)引导文件丢失
模拟问题:rm -fr /boot/grub2/grub.cfg
当系统未重新启动时:
grub2-mkconfig > /boot/grub2/grub.cfg
使用该命令即可以重新找回grub.cfg文件
当系统重新启动时:
grub > set root=‘hd0,msdos1’
grub > linux16 /boot/vmlinuz-3.10.0-123.el7.x86_64 root=/dev/vda1
grub > initrd16 /boot/initramfs-3.10.0-123.el7.x86_64.img
grub > boot
以上操作虽然能进入系统,但只是临时的,还是需要下面的命令将grub.cfg文件爱你找回来
grub2-mkconfig > /boot/grub2/grub.cfg
解决问题具体操作:
(2)内核文件丢失
模拟问题:rm -fr /boot/vmlinuz-3.10.0-123.el7.x86_64
进入rescue模式
chroot /mnt/sysimage
mkdir /rhel7
mount /dev/sr0 /rhel7
cd /rhel7/Packages
cp kernel-3.10.0-123.el7.x86_64.rpm /mnt
cd /mnt
rpm2cpio kernel-3.10.0-123.el7.x86_64.rpm | cpio -id
(将这个rpm包打开,只安装其中的一部分)
cd boot
cp vmlinuz-3.10.0-123.el7.x86_64 /boot
exit
exit
问题及现象:
解决问题具体操作:
先关闭虚拟机
开启虚拟机
关闭虚拟机
再开启虚拟机就可以正常启动系统了
(3)初始化镜像文件丢失
模拟问题:rm -fr /boot/initramfs-3.10.0-123.el7.x86_64.img
当系统没有重启时:
mkinitrd /boot/initramfs-$(uname -r).img $(uname -r)
(该操作消耗时间略长,需要耐心等待)
系统重启后:
chroot /mnt/sysimage
mkinitrd /boot/initramfs-$(uname -r).img $(uname -r)
exit
exit
问题及现象:
解决问题具体操作:
系统未重启时:
系统重启后:
关闭虚拟机
由光盘启动,进入rescue模式
关闭虚拟机后
再切换回,从硬盘启动进入系统
重新启动虚拟机,就可以正常进入系统
(4)boot分区被删除
进入rescue模式
chroot /mnt/sysimage
mkdir /boot
grub2-install /dev/vda
mount /dev/sr0 /mnt
rpm -ivh /mnt/Packages/kernel-3.10.0-123.el7.x86_64.rpm --force
(此操作时间也较长,需要耐心等待)
grub2-mkconfig > /boot/grub2/grub.cfg
问题及现象:
解决问题具体操作:
从光盘启动,进入rescue模式
exit退出该rescue模式后,关机,设置为从硬盘启动,再重启虚拟机,即可正常启动系统
模拟问题:
systemctl set-default reboot.target
解决方法:
1.开机按上下键停止在选择系统的界面
2.按e进入编辑界面
3.选择内核启动行
linux16 /vmlinuz-xxxxx ro xxxxx 更改为:
linux16 /vmlinuz-xxxxx rw rd.break
(将原来的ro只读挂载,更改为rw读写挂载,进入单用户模式进行操作)
4.ctrl+x
5.chroot /sysroot
6.rm -fr /etc/systemd/system/default.target
7.ln -s /lib/systemd/system/graphical.target
/etc/systemd/system/default.target
(或者6,7可以使用该命令代替systemctl set-default graphical.target,但本质相同)
8.两次exit退出该模式
exit
exit
即,如何在无法拥有root权限的限制下,更改root用户的密码,修改完成后,建立文件/.autorelabel让系统重新扫描所有文件
不知道读者注意到没有,刚进入单用户模式下就可以看到switch_root,也就是说我们无需输入密码就获得了root权限
(作者认为,这应该是因为只有一个用户的模式下,也就不存在权限的限制,自然要将所有的权限都给这唯一的一个用户)
也由此可见,最重要的安全保障,不是逻辑上的,而是物理上的,要保证我们的机器的安全才是绝对的安全
解决方法:
同上文类型3,先进入但用户模式下,再使用passwd更改root用户密码,修改完成后,建立文件/.autorelabel让系统重新扫描所有文件
这里如果直接用passwd命令更改,我们无法直观地看到我们所输入的密码,容易在输入错误的情况下,反而不能更改密码成功。因此这里我们使用如下命令:
echo 2019ccjj | passwd --stdin root
(–stdin标准输入)