系统开启时的开启步骤:
通电—->bios初始化—–>grub2磁盘引导阶段—>grub2文件引导阶段—->指定boot所在分区—->启动内核,只读挂载/设备—->启动init程序进入初始化阶段—->启动systemd初始化进程—->读取/etc/systemd/中的文件—–>启动程序—->进入用户认证登录阶段
1.磁盘引导程序出错
dd if=/dev/zero of=/dev/vda bs=446 count=1 若想做此实验可利用命令将磁盘引导程序删除
重启之后
解决: virt-manager—->server—->关闭server—>Boot options—>添加光驱—>选择镜像路径—>将添加的光驱放到第一位 replay—>进入拯救界面 选择第三行—->选择第二行—>contine–>ok—>ok–>进入一个shell
添加光驱和镜像所在路径
光驱启动
进入挽救模式
OK后得到一个shell,在shell中执行命令
df 查看根挂载的位置
chroot /mnt/sysimage
grub2-install /dev/vda 安装磁盘引导程序
vim /etc/sysconfig/selinux 关闭selinux,否则启动时间太长
disabled
exit 两次退出是因为在转到自己的根下时重新打开了一个shell
exit
关闭虚拟机退出挽救模式进行磁盘引导
2. grub2中的系统开机自动引导程序丢失:
rm -fr /boot/grub2/grub.cfg
grub2-mkconfig > /boot/grub2/grub.cfg(没有reboot时恢复)
若已经reboot重启:
set root='hd0,msdos1'
linux16 /boot/vmlinuz-3.10.0-123.x86_64 ro root=/dev/vda1
initrd16 /root/initramfs-3.10.0-123.e17.x86_64.img
boot
grub2-mkconfig > /boot/grub2/grub.cfg(进入系统后恢复引导文件)
3. vmlinuz-3.10.0-123.x86_64文件丢失(内核文件丢失):
reboot之前:
yum whatprovides /boot/vmlinuz-3.10.0-123.x86_64查看文件属于哪个包
从光驱中移出上面查到的包(kernel-3.10.0-123.e17.x86_64.rpm)
rpm2cpio kernel-3.10.0-123.e17.x86_64.rpm | cpio -id
cp boot/vmlinuz-3.10.0-123.x86_64 /boot/
恢复成功
reboot之后:
真机上: virt-manager—->server—->关闭server—>Boot options—>添加>光驱—>选择镜像路径—>将添加的光驱放到第一位 replay—>进入拯救界面 选择第三行—->选择第二行—>contine–>ok—>ok–>进入一个shell (操作截图如1中)
df
cd /run/install/repo/
cd /Packages
cp kernel-3.10.0-123.e17.x86_64.rpm /mnt/sysimage/mnt
chroot /mnt/sysimage
cd /mnt
rpm2cpio kernel-3.10.0-123.e17.x86_64.rpm | cpio -id
cp boot/vmlinuz-3.10.0-123.x86_64 /boot/
两次exit
退出挽救模式,关闭虚拟机——>将启动模式转换为磁盘启动—-> 重新打开。
4.initramfs-3.10.0-123.e17.x86_64.img(初始化程序丢失):
reboot之前:
mkinitrd /boot/initramfs-$(uname -r).img $(uname -r)
reboot之后:
真机上: virt-manager—->server—->关闭server—>Boot options—>添加>光驱—>选择镜像路径—>将添加的光驱放到第一位 replay—>进入拯救界面 选择第三行—->选择第二行—>contine–>ok—>ok–>进入一个shell(操作截图如1中)
chroot /mnt/sysimage
mkinitrd /boot/initramfs-$(uname -r).img $(uname -r) (uname -r查看内核版本号)
退出挽救模式,关闭虚拟机——>将启动模式转换为磁盘启动—-> 重新打开。
5.启动级别错误(为shutdown)
系统启动的几种级别:
0———–> poweroff.target
1———–> resucue.target
2———–> multi-user.target
3———–> multi-user.target
4———–> multi-user.target
5———–> grapical.target
6———–> reboot.target
systemctl set-default graphical.target
解决:重启后按上下键–>e–>内核行(linux16)写5–>ctrl+x重新启动
systemctl set-default graphical.target
进入系统后更改启动的级别