注:本实验在server虚拟机中进行
1.计算机加电后,加载bios
2.bios对硬件进行自检
3.bios从硬盘第0柱面,第0磁道,第一个扇区读取MBR——主引导记录
4.MBR共512字节,其中引导程序512字节 = 引导程序446字节 + 磁盘分区表DPT64字节 + 结束位2字节
5.引导程序可以替换为Grub,用于引导centOs、RedHat
6.运行Grub,根据配置文件加载kernel镜像,并运行第一个程序/sbin/init
7./sbin/init通过etc/inittab进行初始化工作
8.linux根据/etc/inittab的配置来运行/etc/rc.sysinit脚本,设置系统变量、网络配置,启动swap,设定/proc,加载用户自定义模块,加载内核设置
9.启动其他服务
10.运行/etc/rc.local
11.生成终端或者X Window
1.首先我们先破坏引导文件
dd if=/dev/zero of=/dev/vda bs=446 count=1
2.重启server,我们会发现启不来了
接下来就是解决问题的时候了:
1.在真机超级用户下打开虚拟机管理器,并将server关闭,一定要关闭
2.双击关闭了的server,会出现一个界面,我们选择左上角像灯泡的图标
3.点击左下方的add hardware,会出现下面界面
4.进行如下图的选项,其中manage这个选项,要选和虚拟机版本一样的镜像文件,都选好后,点击右下方的finish
5.在点击像灯泡的图标界面里,选择 boot options选项
6.将右边的IDE CDROM 1选中,并将其同过点击右边的上下键调至第一个,完事后点击apply,进行应用(目的是将其改为光盘启动)
7.重新开启并查看server发现其将进入了挽救模式,选择Troubleshooting,按下回车继续选择Rescue a Red Hat Enterprise Linux System
8.进入救援模式后,先选择Continue ----->Ok----->Ok
9.进入非图形界面后
10.进行下列命令的输入
chroot /mnt/sysimage #进入根目录
grub2-install /dev/vda
vim /etc/sysconfig/selinux #将SElinux的状态修改为disabled
exit #退出根目录
exit #退出当前环境
11.关闭server虚拟机,修改启动方式为disk首选,或取消之前的IDE CDROM 1选项,进行应用
12.重启并查看server虚拟机,发现可以正常登录了
这样系统引导方式有问题的问题就解决了
开机文件保存在/boot/grub2/grub.cfg中
1。破坏开机以引导文件,重启系统,发现无法进入系统
rm -fr /boot/grub2/grub.cfg
reboot
2.进行手动引导,输入以下命令
set root='dh0,msdos1'
linux16 /boot/vmlinuz-3.10.0-123.el7.x86_64 ro root=/dev/vda1 #手动引导,系统启动后根分区在/dev/vda1
initrd16 /boot/initramfs-3.10.0-123.el7.x86_64.img
boot #直接启动系统
3.这样重启后可以正常登陆,但将再次登陆的话,还需要重新手动引导,所以我们要在shell生成开机文件,命令如下:
grub2-mkconfig > /boot/grub2/grub.cfg
注:内核文件丢失后,必须进入挽救界面,因此需使光驱启动先起作用,光驱的添加见1中的操作,但应注意,内核文件恢复必须使用与主机内核版本对应的光驱,uname -r命令可以查看主机的内核版本号。
内核文件位置:/boot/vmliuz-3.10.0-123.el7.x86_64
1.破坏内核文件,重启系统,发现无法进入系统
rm -fr /boot/vmliuz-3.10.0-123.el7.x86_64
reboot
2.设置光驱启动优先,并进入挽救模式
3.执行下列命令
chroot /mnt/sysimage #进入系统家目录
mkdir /rhel7.0 #创建挂载目录
mount /dev/sr0 /rhel7.0 #将光驱设备挂载至/rhel7.0后,才可以使用光驱设备
cp /rhel7.0/Package/kernel-3.10.0-123.el7.x86_64 /mnt #复制内核文件至/mnt
rpm2cpio /mnt/kernel-3.10.0-123.el7.x86_64.rpm | cpio -id #拆分软件包,将会得到/mnt/boot/目录
ls /mnt/boot #查看新生成的目录内容
cp/mnt/boot/vmlinuz-3.10.0-123.el7.x86_64 /boot/ #复制内核文件至/boot/
连续两次exit
4.修改为原来的硬盘启动优先即可
1.破坏初始化文件
rm -fr /boot/initramfs-3.10.0-123.el7.x86_64.img
2.重启后提示示没有初始化文件
3.关闭系统,设置光盘驱动,点击播放键进入挽救模式
mkinitrd /boot/initramfs-$(uname -r).img $(uname -r) #恢复初始化文件
$( )表示优先执行
uname -r #查看内核版本
initramfs-$(uname -r).img #生成文件名称
$(uname -r) #内核版本
关闭系统,修改成硬盘启动,即可正常启动系统
linux系统有6个启动级别
0表示关机,系统默认运行级别不能设置为0,否则不能正常启动
1表示单用户工作状态,root权限,用于系统维护,禁止远程登录
2表示多用户状态,但没有NFS支持
3表示完全多用户状态,登录后进入控制台命令行模式
4表示系统未使用,保留
5代表有图形模式启动
6表示正常关闭并重启,默认运行不能设置为6,否则不能正常运行
1.改变系统级别
[root@localhost ~]# systemctl set-default shutdown.target #设置系统开启时直接关闭
rm '/etc/systemd/system/default.target' #删除原有连接,建立一个错误连接
ln -s '/usr/lib/systemd/system/shutdown.target' '/etc/systemd/system/default.target'
2.在系统启动阶段按上下键停止系统引导选择启动引导标题,按“e”进行编辑找到内核启动行,在后面添加“5”
ctrl+x启动设定过后的系统引导条目
3.进入系统,修改开机默认运行级别
[root@localhost ~]# systemctl set-default graphical.target
rm '/etc/systemd/system/default.target'
ln -s '/usr/lib/systemd/system/graphical.target' '/etc/systemd/system/default.target'
修改后系统即可正常启动,并可以正常开启关闭系统