1.系统引导过程概述
通电自检→bios初始化→grub2磁盘引导阶段→grub2文件引导阶段→指定boot所在分区→启动内核,只读挂载在/下的设备→启动init程序进入初始化阶段→启动systemd初始化进程→取/etc/systemd/中的文件→启动程序→启动登陆环境
什么是bios
BIOS是电脑的基本输入输出系统 BIOS是连接电脑硬件和软件的枢纽,也可以说是一款转换器 从功能上看,BIOS分为三部分:自检及初始化程序,硬件中断处理,程序服务请求。
自检及初始化程序 | 电脑通电后BIOS对硬件部分的检测,是否有异常或者故障,还有就是启动前一些硬件参数的比对是否符合,之后就是引导硬盘的操作系统 |
---|---|
硬件中断处理 | 计算机开机的时候,BIOS会告诉CPU硬件设备的中断号,当你操作时输入了使用某个硬件的命令后,它就会根据中断号使用相应的硬件来完成命令的工作,最后根据其中断号跳回原来的状态 |
程序服务请求 | 从BIOS的定义可知道它是输入输出系统,它通过最特定的数据端口发出指令,发送或接受各类外部设备的数据,从而实现软件应用程序对硬件的操作 |
实验一 在grub硬盘引导阶段出现问题怎么解决
fdisk -l 查看磁盘的目录,(看*在哪,哪就是使用的磁盘),我的启动分区所在磁盘是/dev/vda
模拟问题
关闭selinux,以防selinux对实验有影响,reboot
dd if=/dev/zero of=/dev/vda bs=446 count=1 破坏磁盘引导,然后reboot
此时采用磁盘的方式打开虚拟机并不能打开,要采用光驱的方式启动,进入虚拟控制台
先关闭虚拟机,然后进入虚拟后台,加入光驱,光驱加入镜像,在boot options里将光驱启动置顶。
然后分别选择toubleshooting,和rescue模式
点击continue和ok进入,resecue模式
首先改变真实系统的环境
chroot /mnt/sysimages
grub2-install /dev/vda 启动分区所在硬盘,两次exit ,就成功了,关闭虚拟机,以磁盘的方式启动,可以看到恢复了。
可以看到虚拟机可以正常启动了
系统启动阶段引导文件丢失应该如何解决?
模拟问题:rm -fr /boot/grub2/grub.cfg
当系统没有重新启动时,直接输入
grub-mkconfig > /boot/grub2/grub.cfg 重新创建grub2引导文件,然后重新定向输出到/boot/grub2/grub.cfg,vim查看,发现文件已生成,reboot发现也可以重新启动。
当删除/boot/grub2/grub.cfg并且重新启动,会出现启动不了的情况,这时候,需要手动输入grub引导文件
然后会出现如下界面
然后输入
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.el17.x86_64.img
grub> boot
==此操作可以使系统临时启动,所以进入系统后还是需要执行 ==
grub2-mkconfig > /boot/grub2/grub.cfg
完成。
系统内核镜像文件丢失应该怎样解决
模拟问题:
rm -fr /boot/vmlinuz-3.10.0-123.el7.x86_64
reboot 发现不能启动,于是我们用光驱启动进入rescue模式
先进入系统的真实环境
mkdir /rhel7.0 mount /dev/sr0 /rhel7.0 cd /rhel7.0/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
cd boot cp vmlinuz-3.10.0-123.el7.x86_64 /boot
exit exit
以硬盘的方式看是否可以启动
系统可以正常启动了。
系统初始化程序镜像文件丢失应该怎么恢复
模拟问题:
rm -fr /boot/initramfs-3.10.0-123.el7.x86_64.img
如果系统没有重启直接利用
mkinitrd /boot/initramfs-$(uname -r).img $(uname -r)恢复镜像文件
如果删除并且reboot了,系统启动不起来了,进入rescue模式,以光驱的方式开启虚拟机。
输入 chroot /mnt/sysimages 进入真实环境
然后输入mkinitrd /boot/initramfs-$(uname -r).img $(uname -r),再次进入/boot下查看是否生成img文件即可。
以硬盘的方式查看系统是否可以正常启动。
成功。
系统/boot分区被删除怎么恢复
reboot
用光驱进入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
exit*2后,用硬盘启动,发现启动成功
系统开机启动级别被人恶意篡改,一致处于重启模式,怎么解决?
模拟实验:
systemctl set-default reboot.target
此时reboot虚拟机,会发现一直处于重启模式
解决
开机按上下键停止读秒 按E进入编辑模式
选择内核启动行 linux16 /vmlinuz-xxxxxxxxx ro xxxxxxxxxx 将ro之后的删除,并将ro改称rw(读写),输入rd.break(停止),然后crtl+x退出,启动系统。
注意这里的chroot在/sysroot/下
可以看到/etc/systemd/system/default.target是一个软连接,将它删除并且重新创建有图形的软连接。
成功恢复。
root用户密码忘记怎么办
重启主机的时候按下e进入编辑模式
找到内核启动行,删到ro然后更改ro为rw rd.break,ctrl+x退出
==输入chroot /sysroot/==得到root用户身份
passwd 来修改用户密码 设置密码为redhat 再次输入密码redhat 即可更改root用户密码 touch /.autorelabel 让selinux生效,即可重新开启虚拟机。