文章目录
1.系统排错的过程
2.理解
(1)BIOS(Basic Input/Output System):基本输入输出系统,该系统存储于主板的ROM芯片上,计算机在开机时,会最先读取该系统,然后会有一个加电自检过程,这个过程其实就是检查CPU和内存,计算机最基本的组成单元(控制器、运算器和存储器),还会检查其他硬件,若没有异常就开始加载BIOS程序到内存当中。详细的BIOS功能,这边就不说了,BIOS主要的一个功能就是存储了磁盘的启动顺序,BIOS会按照启动顺序去查找第一个磁盘头的MBR信息,并加载和执行MBR中的Bootloader程序,若第一个磁盘不存在MBR,则会继续查找第二个磁盘(PS:启动顺序可以在BIOS的界面中进行设置),一旦BootLoader程序被检测并加载内存中,BIOS就将控制权交接给了BootLoader程序。
(2)MBR(Master Boot Record):主引导记录,MBR存储于磁盘的头部,大小为512bytes,其中,446bytes用于存储BootLoader程序,64bytes用于存储分区表信息,最后2bytes用于MBR的有效性检查。
(3)系统启动流程
第一步: 电脑通电
||
第二步: BIOS(主板上的只读存储ROM中,basic input or output system)
作用:硬件检测,激活硬件;
||
第三步: grub系统引导(grub引导分为两个阶段)
1)阶段1 grub磁盘引导阶段 (见3.2节)
mbr(主引导记录)主引导记录在硬盘上的0磁道,一扇区,446个字节
dd if=/dev/zero of=/dev/vda bs=446 count=1 ##可以清空mbr
进入到挽救模式,执行***chroot /mnt/sysimage***切换到真实/环境,
并执行***grub2-install /dev/vda***
2)阶段2 grub文件引导阶段(见3.3节)
找到/boot分区
读取***/boot/grub2/grub.cfg /etc/grub.cfg***
文件丢失:grub2-mkconfig >/boot/grub2/grub.cfg
grub2-mkconfig > /etc/grub.cfg
||
第四步: 内核引导阶段(见3.4节)
启动内核,只读挂载/设备
检测硬件设备
对设备驱动进行初始化
进入系统初始化阶段, 将/挂载
内核丢失,从新安装内核安装包就可以解决
方法一: rpm -ivh kernel-xxxxx.rpm --force
方法二: 拷贝所缺的目录;
||
第五步: 系统初始化阶段(系统初始化阶段加载initrd镜像)
(见3.5节)
||
第六步: 开启初始化进程systemd(见3.6节)
开始selinux
加载内核参数
初始化系统时钟,键盘,主机名称
重新读写挂载/设备
激活raid,lvm
激活配额
启动multi-user.target.wants中的所有服务(具体开启的服务取决于系统启动的级别)
开启虚拟控制台
启动图形
如何修改系统启动级别?
方法一: systemctl set-default + 启动级别
方法二: /etc/systemd/system/default.target
3.常见的系统恢复
注意: 重启速度慢的原因
开机会慢一点,因为重新扫描selinux,可以将/etc/sysconfig/selinux中enforcing改成disabled,避免开机速度慢。
3.1忘记密码
功能 | 代码 | 注释 |
---|---|---|
1.1实验准备 | ||
(1) | passwd | ## 修改密码 |
(2) | xxxxxxxx | ## 新密码 |
(3) | xxxxxxx | ## 确认新密码 |
(4) | init 6 | ##重启 |
1.2系统恢复 | ||
(1) | e | ##进入安装页面点击e |
(2) | ro xxxxxxxx…UTF-8 修改为 rw rd.break | ## |
(3) | chroot /sysroot/ | ## 切换到引导目录 |
(4) | ls | ## 查看目录 |
(5) | echo redhat | passwd --stdin root |
(6) | exit | ## 一次退出 |
(7) | exit | ## 二次退出,进行安装,生效 |
Result1.1实验准备 Result1.2系统恢复
3.2 MBR引导记录丢失
功能 | 代码 | 注释 |
---|---|---|
2.1实验准备 | ||
(1) | dd if=/dev/zero of=/dev/vda bs=446 count=1 | ##清空MBR |
(2) | init 6 | ## 重启 |
2.2系统恢复 | ||
2.2.1##添加硬盘设备 | virt-manager>>>add hardware>>> Selete od create custom storage(rhel7.0)>>>CDROM device>>>finish | |
2.2.2修改默认启动项为光盘启动 | Boot Options>>>IDECDROM>>>应用 | ## |
2.2.3恢复选项的选择 (1) | 进入启动页面,选择Troubleshooting >>>Rescue a red hat Enterprise Linux system | |
(2) | continue>>>okay>>>okay | 然后进入恢复界面 |
2.2.4恢复引导记录 (1) | chroot /mnt/sysimage | ##进入镜像目录 |
(2) | grub2-install /dev/vda | ## 恢复引导记录 |
(3) | exit>>>exit>>>force off the machine | ##二次退出 |
2.2.5修改默认启动项为磁盘启动 | Boot Options>>>VirtIO>>>应用 | ## ##修改默认启动项为磁盘启动 ,此时便能正常启动 |
Result2.1实验准备
Result2.2系统恢复
3.3 引导文件丢失
功能 | 代码 | 注释 |
---|---|---|
3.1实验准备 | ||
(1) | rm -rf /etc/grub2 | ##删除引导文件 |
(2) | init 6 | ## 重启 |
3.2系统恢复 | ||
3.2.1##添加硬盘设备 | virt-manager>>>add hardware>>> Selete od create custom storage(rhel7.0)>>>CDROM device>>>finish | |
3.2.2修改默认启动项为光盘启动 | Boot Options>>>IDECDROM>>>应用 | ## |
3.2.3恢复选项的选择 (1) | 进入启动页面,选择Troubleshooting >>>Rescue a red hat Enterprise Linux system | |
(2) | continue>>>okay>>>okay | 然后进入恢复界面 |
3.2.4恢复引导记录 (1) | chroot /mnt/sysimage | ##进入镜像目录 |
(2) | grub2-install /dev/vda | ## 恢复引导记录 |
(3) | grub2-mkconfig >/boot/grub2/grub.cfg | ##将文件添加到启动项 |
(4) | grub2-mkconfig > /etc/grub.cfg | ## 将文件添加到原来的配置文件 |
(5) | exit>>>exit>>>force off the machine | ##二次退出,并关机 |
2.2.5修改默认启动项为磁盘启动 | Boot Options>>>VirtIO>>>应用 | ## ##修改默认启动项为磁盘启动 ,此时便能正常启动 |
Result3.1实验准备
Result3.2系统恢复
3.4 引导内核文件丢失
功能 | 代码 | 注释 |
---|---|---|
4.1实验准备 | ||
(1) | cd /boot/ | ##打开启动目录 |
(2) | rm -rf vmlinuz-3.10.0-123.e17.x86_64 | ##删除引导文件 |
(3) | init 6 | ## 重启 |
4.2系统恢复 | ||
4.2.1##添加硬盘设备 | virt-manager>>>add hardware>>> Selete od create custom storage(rhel7.0)>>>CDROM device>>>finish | |
4.2.2修改默认启动项为光盘启动 | Boot Options>>>IDECDROM>>>应用 | ## |
4.2.3恢复选项的选择 (1) | 进入启动页面,选择Troubleshooting >>>Rescue a red hat Enterprise Linux system | |
(2) | continue>>>okay>>>okay | 然后进入恢复界面 |
4.2.4恢复引导记录:方案一 (1) | chroot /mnt/sysimage | ##进入镜像目录 |
(2) | mkdir /johnsonlee | ##创建搭载目录 |
( 3) | mount /dev/sr0 /johnsonlee | ##将光盘文件挂载 |
(4) | cd /johnsonlee/ | ##切换到光盘挂载点 |
(5) | ls | ##查看光盘中的文件 |
(6) | cd Packages/ | ##切换到安装包目录中(记住,不要ls,有4000多个包) |
(7) | rpm -ivh kernel-xxxxx.rpm --force | ##强制安装该内核文件 |
(8) | exit>>>exit>>>force off the machine | ##二次退出,并关机 |
4.2.4恢复引导记录:方案二 (1) | chroot /mnt/sysimage | ##进入镜像目录 |
(2) | mkdir /curry | ##创建搭载目录 |
( 3) | mount /dev/sr0 /curry | ##将光盘文件挂载 |
(4) | cd /curry | ##切换到光盘挂载点 |
(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>>>exit>>>force off the machine | ##二次退出,并关机 |
4.2.5修改默认启动项为磁盘启动 | Boot Options>>>VirtIO>>>应用 | ## ##修改默认启动项为磁盘启动 ,此时便能正常启动 |
注意:方法一速度慢但是能针对在未知所缺文件时使用;方法二速度快,已知所缺文件。
Result4.1实验准备
Result4.2系统恢复
3.5 镜像文件丢失
功能 | 代码 | 注释 |
---|---|---|
5.1实验准备 | ||
(1) | cd /boot/ | ##打开启动目录 |
(2) | rm -rf initramfs-3.10.0-123.e17.x86_64.img | ##删除引导镜像 |
(3) | init 6 | ## 重启 |
5.2系统恢复 | ||
5.2.1##添加硬盘设备 | virt-manager>>>add hardware>>> Selete od create custom storage(rhel7.0)>>>CDROM device>>>finish | |
5.2.2修改默认启动项为光盘启动 | Boot Options>>>IDECDROM>>>应用 | ## |
5.2.3恢复选项的选择 (1) | 进入启动页面,选择Troubleshooting >>>Rescue a red hat Enterprise Linux system | |
(2) | continue>>>okay>>>okay | 然后进入恢复界面 |
5.2.4恢复引导记录 (1) | chroot /mnt/sysimage | ##进入镜像目录 |
(2.1) 方法1 | mkinitrd /boot/initramfs-`uname −r`.img `uname -r` | ①生成系统初始化镜像;②initramfs是/boot/grub2/grub.cfg 文件已经写好的,不能更改;③uname -r ##系统当前版本;`command` 表示里面command的结果 |
(2.2) 方法2 | mkinitrd /boot/initramfs-$(uname -r).img $(uname -r) | 生成系统初始化镜像 |
(3) | exit>>>exit>>>force off the machine | ##二次退出,并关机 |
5.2.5修改默认启动项为磁盘启动 | Boot Options>>>VirtIO>>>应用 | ## ##修改默认启动项为磁盘启动 ,此时便能正常启动 |
Result 5.1实验准备
Result 5.2系统恢复
3.6 系统启动级别
功能 | 代码 | 注释 |
---|---|---|
6.1实验准备 | ||
(1) | systemctl set-default poweroff.target | ##开机自启动关机模式 |
(2) | init 6 | ## 重启 |
(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)runlever5.target reboot.target | ##(重启) | |
systemctl set-default +启动级别修改 | ##修改级别 | |
vim /etc/systemd/system/default.target | ##修改级别 | |
6.2系统恢复 | ||
(1) | e | ##进入安装页面点击e |
(2) | ro xxxxxxxx…UTF-8 修改为 rw rd.break | ## |
(3) | chroot /sysroot/ | ## 切换到引导超级用户目录 |
(4) | systemctl set-default graphical.target | ##(图形模式) |
(5) | exit>>>exit>>>force off the machine | ##二次退出,并关机 |
(6) | Boot Options>>>VirtIO>>>应用 | ## ##修改默认启动项为磁盘启动 ,此时便能正常启动 |
Result6.1实验准备
Result6.2:系统恢复
3.7 系统入口设置
注意:重装系统,双系统进入时的入口的选择;
功能 | 代码 | 注释 |
---|---|---|
(1) | vim /etc/grub2.cfg | ##打开配置文件,寻找关键字menu |
(2)vim | menuentry ‘Windows 10’{ >>> set root=‘hd0,msdos1’>>>chainloader +1>>>} | ##标题写法,menuntry为固定格式;‘入口名称’,单引号间的内容为入口名称;大括号内的内容为参数 |
(3) | Boot Options>>>VirtIO>>>应用 | ## ##修改默认启动项为磁盘启动 ,此时便能正常启动 |