系统修复
1. BIOS详解
BIOS(Basic Input/Output System),基本输入输出系统,该系统存储于主板的ROM芯片上,计算机在开机时,会最先读取该系统,然后会有一个加电自检过程,这个过程其实就是检查CPU和内存,计算机最基本的组成单元(控制器、运算器和存储器),还会检查其他硬件,若没有异常就开始加载BIOS程序到内存当中。详细的BIOS功能,这边就不说了,BIOS主要的一个功能就是存储了磁盘的启动顺序,BIOS会按照启动顺序去查找第一个磁盘头的MBR信息,并加载和执行MBR中的Bootloader程序,若第一个磁盘不存在MBR,则会继续查找第二个磁盘(PS:启动顺序可以在BIOS的界面中进行设置),一旦BootLoader程序被检测并加载内存中,BIOS就将控制权交接给了BootLoader程序。
1.系统启动流程
第一步: 电脑通电
第二步: BIOS(主板上的只读存储ROM中,basic input or output system)
作用,硬件检测,激活硬件
第三步: grub系统引导(grub引导分为两个阶段)
1)阶段1 grub磁盘引导阶段
mbr(主引导记录)主引导记录在硬盘上的0磁道,一扇区,446个字节
(MBR(Master Boot Record),主引导记录,MBR存储于磁盘的头部,大小为512bytes,其中,446bytes用于存储BootLoader程序,64bytes用于存储分区表信息,最后2bytes用于MBR的有效性检查。
)
1./dev/zero of=/dev/vda bs=446 count=1 可以清空mbr
1)chroot /mnt/sysimage切换到真实/环境,
并执行grub2-install /dev/vda
2)阶段2 grub文件引导阶段
找到/boot分区
读取/boot/grub2/grub.cfg /etc/grub.cfg
文件丢失,grub2-mkconfig >/boot/grub2/grub.cfg
grub2-mkconfig > /etc/grub.cfg
第四步: 内核引导阶段:
启动内核,只读挂载/设备
2.检测硬件设备
3.对设备驱动进行初始化
4.进入系统初始化阶段, 挂载
内核丢失,从新安装内核安装包就可以解决
方法一: rpm -ivh kernel-xxxxx.rpm --force
方法二:
1.在virt-manager里面,将光驱 IDE CDROM1 放在开机启动项第一位,启动主机进入挽救模式
2.chroot /mnt/sysiamge 将系统挂载更改到根目录下
3.mount /dev/sr0 /westos 将光盘文件挂载
4.cd /westos/ 切换到光盘挂载点
5.ls 查看光盘中的文件
6.cd Packages/ 切换到安装包目录中(记住,不要ls,有4000多个包)
7.cp kernel-3.10.-123.e17.x86_64.rpm /mnt/
将这个文件包拷贝到/mnt/下,因为在光盘目录中不能进行拆包
8.cd /mnt/ 切换到/mnt/
9.ls 查看/mnt/下拷贝过来的文件包
10.rpm2cpio kernel-3.10.0-123.e17.x86_64.rpm | cpio -id
拆包
11.ls 查看包中的文件
12.pwd 查看当前路径
13.cd boot/ 切换到包中的boot/目录下
14.ls -l 包中存在内核文件
15.cp vmlinuz-3.10.0-123.e17.x86_64 /boot/
将内核文件拷贝到系统的/boot/目录下16.exit 退出chroot更改的根目录
exit shell窗口
第五步: 系统初始化阶段
1.系统初始化阶段加载initrd镜像
initrd镜像丢失如何解决?
initramfs-uname -r
.img丢失用:
mkinitrd initramfs-uname -r
.img uname -r
**方法一:**1.当系统没有重新启动时uname -r ##系统当前版本1)mkinitrd /boot/initramfs-`uname −r`.img `uname -r` 生成系统初始化镜像initramfs是/boot/grub2/grub.cfg 文件已经写好的,不能更改2)mkinitrd /boot/initramfs-$(uname -r).img $(uname -r) ##生成系 统初始化镜像**方法二:**
1)进入到挽救模式
1..chroot /mnt/sysiamge 使用超级用户
2.mkinitrd /boot/initramfs-uname −r
.img uname -r
生成系统初始化镜像
重启速度会慢一点
原因:重新扫描selinux
解决:将/etc/sysconfig/selinux中enforcing改成disabled
第六步: 开启初始化进程systemd
1.开始selinux
2.加载内核参数
3.初始化系统时钟,键盘,主机名称
4.重新读写挂载/设备
5.激活raid,lvm
6.激活配额
启动multi-user.target.wants中的所有服务(具体开启的服务取决于系统启动的级别)
7.开启虚拟控制台
8.启动图形
如何修改系统启动级别?
系统启动级别
(init 0)runlever0.target -> poweroff.target
runlever1.target -> rescue.target
runlever2.target -> multi-user.target
(init 3)runlever3.target -> multi-user.target
runlever4.target -> multi-user.target
(init 5)runlever5.target -> graphical.target
(init 6)runlever6.target -> reboot.target
方法一: systemctl set-default + 启动级别
方法二: /etc/systemd/system/default.target
第七步: 用户名密码登录
忘记密码如何解决?
1.开机按上下健停止读秒
2.按E进入编辑模式
3.选择内核启动行
Linux16 /vmlinuz-xxxxx ro xxxx 改为:
Linux16 /vmlinuz-xxxxx rw rd.break ##在内核启动完成后终止系统初始化程序的执行
4.启动系统 ctrl+x
Chroot /sysroot
Echo westos |passwd --stdin root
Touch /.autorelabel ##重新初始化selinux,当selinux未开启时不需要操作