引导过程与故障修复

一、Linux操作系统引导过程

1、引导过程总览

开机自检

检查硬件设备,检测出第一个能够引导系统的设备,比如硬盘或者光驱 

 MBR 引导

运行MBR扇区里的主引导程序GRUB

启动GRUB菜单

统读取GRUB配置文件(/boot/grub2/grub.cfg)获取内核的设置和位置,并在屏幕显示GRUB菜单页面 。

加载Linux内核

把内核加载到内存,将系统控制权交接给内核

 init进程初始化

 内核将init进程加载到内存中运行,并把init进程作为系统的第一个进程

系统初始化      

启动内核模块,执行运行级别的启动脚本,执行/etc/rc.d/rc.local文件里的命令等 

 2、系统初始化进程

init进程

  • init进程文件位于 /sbin/init -> /lib/systemd/systemd 
  • init进程PID号固定为 1 ,是系统中其它所有进程的父进程
  • init 进程负责完成整个系统的初始化,最后等待用户进行登录

Systemd

  •  Systemd是Linux操作系统的一种init软件
  •  CentOS7中采用全新的Systemd启动方式,取代传统的SysVinit
  • CentOS7中运行的第一个init进程是/lib/systemd/systemd

进程启动方式 

  • centos7开始的版本默认的启动方式是 systemd,开机服务程序为并行启动,启动效率较快
  • centos6及以前版本的启动方式是 sysVinit,开机服务程序是通过串行执行/etc/init.d/目录下的shell脚本启动的,容易阻塞,启动效率较慢

System单元类型

Linux的运行级别

运行级别说明对应的Systemd的target
0关机poweroff.target
1单用户模式rescue.target
2字符界面的多用户模式(无网络)multi-user.target
3字符界面的多用户模式(有网络)multi-user.target
4字符界面的多用户模式(保留)multi-user.target
5图形界面的多用户模式graphical.target
6重启reboot.target

二、系统故障修复

1、修复MBR扇区故障

MBR   主引导程序 1~446字节   硬盘分区表 447~510字节

如果是 MBR 整个扇区数据被破坏了,需要进入到急救模式将备份的MBR数据导入还原

备份命令:dd if=/dev/sda  of=备份文件  bs=512  count=1
还原命令:dd if=备份文件  of=/dev/sda

解决思路:

  1. 应提前作好备份文件
  2. 以安装光盘引导进入急救模式
  3. 从备份文件中恢复

 实例:修复MBR扇区故障

步骤一:增加一块硬盘,用于存放数据

[root@localhost ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

Device does not contain a recognized partition table
使用磁盘标识符 0x2d7e90b8 创建新的 DOS 磁盘标签。

命令(输入 m 获取帮助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
分区号 (1-4,默认 1):
起始 扇区 (2048-104857599,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-104857599,默认为 104857599):+2G
分区 1 已设置为 Linux 类型,大小设为 2 GiB

命令(输入 m 获取帮助):w^H
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@localhost ~]# mkfs -t xfs /dev/sdb1
meta-data=/dev/sdb1              isize=512    agcount=4, agsize=131072 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=524288, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@localhost ~]# cd /opt
[root@localhost opt]# mkdir mbr-bak
[root@localhost opt]# mount /dev/sdb1 /opt/mbr-bak/
[root@localhost opt]# df -hT
文件系统                类型      容量  已用  可用 已用% 挂载点
devtmpfs                devtmpfs  1.9G     0  1.9G    0% /dev
tmpfs                   tmpfs     1.9G     0  1.9G    0% /dev/shm
tmpfs                   tmpfs     1.9G   13M  1.9G    1% /run
tmpfs                   tmpfs     1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/mapper/centos-root xfs        26G  4.4G   22G   17% /
/dev/sda1               xfs      1014M  187M  828M   19% /boot
tmpfs                   tmpfs     378M  8.0K  378M    1% /run/user/42
tmpfs                   tmpfs     378M     0  378M    0% /run/user/1000
/dev/sdb1               xfs       2.0G   33M  2.0G    2% /opt/mbr-bak
[root@localhost opt]# dd if=/dev/sda of=/opt/mbr-bak/mbr.bak bs=512 count=1
记录了1+0 的读入
记录了1+0 的写出
512字节(512 B)已复制,0.00112141 秒,457 kB/秒
[root@localhost opt]# ll -h
总用量 0
drwxr-xr-x. 2 root root 21 4月  18 03:12 mbr-bak
drwxr-xr-x. 2 root root  6 10月 31 2018 rh

步骤二:备份MBR扇区数据到其他磁盘(/dev/sdb1)

if指定从何处提取数据,of表示备份到何处,bs指定提取的大小,count指定次数

步骤三:模拟破坏MBR引导扇区 

步骤四:进行恢复操作

 

实例:修复GRUB引导故障 

方法:

  1.  尝试手动输入引导命令
  2.  进入急救模式,重写或者从备份中恢复grub.conf
  3. 向MBR扇区中重建grub程序

实例:

步骤一:删除grub.cfg文件并重启

方法一:手动输入引导命令(笨拙繁琐,不建议使用)


grub> insmod xfs                                                                 #加载指定的模块到内核
grub> linux16 /vmlinuz-3.10.0-693.el7.x86_64 root=UUID=8fd74986-ae66-4ffd-b7d8-a19f2eca7b6f ro rhgb quiet LANG=zh_CN.UTF-8               #内核的名字及位置等信息
grub> initrd16 /initramfs-3.10.0-693.el7.x86_64.img            #镜像系统文件
grub> boot                                                                            #引导boot

方法二:

 

重启后,文件已恢复,如图: 

实例:MBR 的GRUB主引导程序被破坏

 

进入急救页面。重建MBR数据

总结:

启动类故障恢复
MBR   主引导程序 1~446字节   硬盘分区表 447~510字节
如果是 MBR 整个扇区数据被破坏了,需要进入到急救模式将备份的MBR数据导入还原

备份命令:dd if=/dev/sda  of=备份文件  bs=512  count=1
还原命令:dd if=备份文件  of=/dev/sda
  

如果是 MBR 的GRUB主引导程序被破坏了

(1)在急救模式下使用备份文件恢复          dd if=备份文件  of=/dev/sda  bs=446  count=1
(2)在急救模式下重建MBR的GRUB主引导程序   chroot /mnt/sysimage   ->   grub2-install /dev/sda
      

如果是GRUB配置文件被删了

在急救模式下重建GRUB配置文件  chroot /mnt/sysimage   ->   grub2-mkconfig -o /boot/grub2/grub.cfg

  • 25
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
NTBootAutofix扫描硬盘各分区,找出已安装的各种版本Windows,包括XP/2003/VISTA/WIN7/2008/2008R2等,自动修复系统引导。 更新概述: -------- v2.3.9:自动修复默认关闭Win8的Metro引导菜单,手动修复可以选择开启Metro引导菜单 v2.3.6:增加BCD管理功能,可以对BCD中的引导菜单进行查看、移动、删除、重命名、设置默认等操作。 v2.3.5:修正在极少用到的同盘多系统中使用的一些错误;使部分NT6.x系统可以同时使用ACHI/IDE模式。 v2.3.3:支持如 WES7 这类精简系统的菜单修复。 v2.3.2:支持多硬盘时Win8的WinRE修复,修正一个不影响修复结果的错误提示。 v2.2.9:增加对Win8的WinRE修复,正常情况会强制去掉Win8的Metro引导界面,恢复为经典的黑白引导界面;不再支持旧版本中极少用到的“额外功能” v2.2.8:增加手动修复,可以自已决定是否修复某一系统 v2.2.4:为防止批处理程序中的鼠标键盘混合控制模块失效,添加纯键盘控制选择 v2.2.2:去除了以前版本在使用实例中的大部分限制,更新较多,不详述 v2.0.0:NTBOOTautofix前身为BCDautofix,版本号顺延更新,但工具名因功能改变而更换,纯修复BCD的BCDautofix最新版本为v1.2.3,BCDautofix v1.1.x已经有nt5.x的boot.ini的自动生成,应属NTBOOTautofix系列。v2.0.0是更名后的第一个版本。 使用方法: ——– 非安装软件,直接双击运行,傻瓜式修复,可运行于32位和64位系统和WINPE系统 程序根据当前系统non-Unicode设置自动显示中/英界面 "自动修复"自动判断和系统启动有关的条件并自动修复程序支持的盘符上的NT系统启动,无需用户手工干预 "高级修复"只供特殊需要的朋友,参看下面应用实例中的高级修复部分 PE中自动判断PE环境,单硬盘可以直接"自动修复",如多硬盘在PE中修复时推荐使用"高级"修复选择你作为系统引导的盘符 适用范围: ——– 1. 启动菜单/启动文件丢失修复: 适用所有NT5.x(2000/XP/2003)和NT6.x(Vista/2008/Win7/2008r2) 2. 修复其他因BCD相关引起的故障 a. Win7/2008r2中 BCD 的修复计算机(Windows Recovery Environment)菜单丢失 b. Win7/2008r2中 BCD 引起的3D启动画面丢失(变成VISTA滚动条启动画面) c. BCD 引起的启动菜单选择界面乱码现象 3. 系统BCD非法的强制修复 – 现象:Vista/2008/Win7/2008r2中 - a. 运行msconfig后"启动"或"引导"栏空白 b. 管理员身份运行命令提示符中后运行bcdedit等和BCD相关的操作提示出错 c. 系统属性的"启动和故障恢复"窗口无法配置"默认操作系统"和"等待时间" d. 其他软件无法添加/删除/修改基于 BCD 管理的新启动菜单 注: 3的这种情况是否要强制修复自行决定。 额外功能: ——– 1. 为VISTA/2008添加修复计算机(Windows Recovery Environment)菜单 使用方法:在系统盘符中新建recovery文件夹,再把光盘或安装程序中的boot\boot.sdi和sources\boot.wim复制至 recovery文件夹,再运行本程序,即可自动添加。 2. 磁盘ID变化或OSletter变化引起的无法进入系统桌面的修复修复 OSletter功能) 修复效果: ——– 存在原BCD或Boot.ini时程序将予备份,备份文件名/路径在修复完成后给出提示 NT5.x菜单在boot.ini中以"Microsoft Windows Server 2003 x86"形式存在 NT6.x菜单在BCD中以"Windows Server (R) 2008 Standard x86"形式存在 NT6.x的修复过程提示成功即时写入生效,NT5.x的修复在最后完成后再一并写入生效 NT5.x支持最多同接8个硬盘时的修复,但如果不同接口硬盘混用且三个或以上硬盘就未必能准确判断硬盘号,三硬盘以上 并混用的情况就算微软自己的控制台都未必能准确判断 NT6.x理论无限制硬盘数,也不限制混用 根据当前系统non-Unicode设置决定修复后的启动菜单中/英优先级 NT5.x+NT6.x的多系统中 – 当存在多个NT5.x时,修复后BCD显示的NT5.x相应菜单为“Earlier Version of Windows”, 当只有一个NT5.x系
当你的电脑没有光驱如何用U盘重装电脑。hal.dll ........(硬件抽象层). 隐藏 Windows 应用程序处理硬件问题的复杂性 从找一块可以启动的硬盘(与的操作系统一样),“搜索”到hal.dll这个文件,复制到windows root\system32目录下即可 方法一:在命令提示符模式下直接输入“Sfc/scanonce”,检查一下所有的系统文件,如果需要,Windows 会提示插入原始安装光盘,然后重新启动计算机,即可解决问题。 方法二:这可能是由于安装游戏软件的过程中损坏了Windows XP的启动文件boot.ini造成的,因为系统提示hal.dll文件丢失是boot.ini文件丢失或者损坏的典型表现。一般情况下,当出现boot.ini文件损坏的情况时,WindowsXP会自动尝试从c盘启动,就有可能出现上述的问题。 可以通过编辑boot.ini文件来排除此故障。打开其他与本系统安装情况相同的计算机的C:\下的boot.ini文件,然后参照其格式重新编辑受损的boot.ini文件即可。为了系统的安全,最好在修改之前各份一下boot.ini文件,以免造成更太的损失。 方法三:插入xp安装盘重新启动电脑,选择故障恢复控制台。依提示进入Windows dos目录。 在DOS提示符下输入:expand x:\i386\driver.cab /f:hal.dll c:\windows\system32\(x:为光驱盘符.再次利用expand 首先将halaacpi.dll拷贝至c:\windows\system32\,并改名为hal.dll后重新启动电脑,再拷halacpi.dll(因为hal.dll的源文件名是halacpi.dll).改名(ren)后重启,(restart)即可 现象:屏幕显示“因以下文件的损坏或者丢失,Windows无法启动:<Windows root>\system32\hal.dll,请重新安装以上文件”的错误提示(如图1)。是系统引导文件损坏了,可以用故障恢复控制台来修复。   下面操作以 Windows XP Pro 为例,Windows 2000/2003 与此法大同小异。   一、什么是故障恢复控制台   故障恢复控制台是 Windows 2000/XP/2003 操作系统中用于修复系统的工具,它可以启用和禁用系统服务、格式化磁盘、挽救磁盘数据、修复系统故障,是我们无法进入系统(包括安全模式)时修复系统的“法宝”,被用户形象地称之为“救命稻草”。   二、如何进入故障恢复控制台   第一步:按下键盘上的“Del”键进入到BIOS设置程序。在主菜单中选择“Advanced BIOS Features”选项,并按“回车”键进入高级BIOS设置,再通过键盘的上的“↑”、“↓”方向键选择其中的“First Boot Device”选项,再按下“回车”键进入后选中“CDROM”(将第一启动设备设置为光驱)。设置完毕后,按下“F10”键存盘退出即可。   第二步:将 Windows 2000/XP/2003 安装光盘插入光驱,启动计算机,系统会自动以光盘引导,无需用户干预,待到屏幕出现相关提示时,按下键盘上任意键即可看见 Windows XP 的安装程序画面,在提示界面中,按下“R”键选择第二项“要使用‘故障控制台’修复 Windows XP 安装,请按R。”选项即可。   第三步:按下“R”键后,系统会自动检测机器所安装的所有操作系统,并出现登录到哪一个 Windows 的提示,键入欲进入的操作系统的序号即可,示例中键入的是“1”,回车后会提示你键入管理员密码,键入正确的管理员密码并回车,当出现“C:\WINDOWS>”提示符的时侯,故障恢复控制台也就成功启动了。   要使用故障恢复控制台,每次都要翻出安装光盘,从光盘启动,比较麻烦。其实,我们还可以将故障恢复控制台安装到硬盘中,实现从硬盘启动故障恢复控制台。将 Windows 安装光盘放入光驱,然后在“运行”对话框中输入并执行“X:\i386\winnt32.exe/cmdcons”命令,(X为光驱盘符,请自行修改),这时就会弹出 Windows 安装程序对话框,询问你是否将故障恢复控制台安装到硬盘上。点“是”按钮即可将故障恢复控制台安装到硬盘上。重新启动计算机,你就会在多重启动菜单中发现一项名为“Microsoft Windows XP Recovery Console”的选项,通过该选项就可以进入系统故障恢复控制台了。   三、让垂危的系统起死回生   从开机错误提示中我们可以看到是“Hal.dll”文件丢失或损坏造成了系统无法启动,因此,只需从安装光盘中找到同名文件将其释放到原文件所在目录就可以了。安装光盘的“I386”文件夹是一个重要的文件夹,几乎所有的系统级文件全部位于其中。   在故障恢复控制台的命令提示符后依次输入如下命令:   C:\WINDOWS>x: //x为光驱盘符,请自行修改为你的光驱盘符   X:\>CD I386 //切换到光盘的I386文件夹下   X:\>I386>expand hal.dl_C:\WINDOWS\system32\ //将安装光盘I386文件夹中的“hal.dl_”文件释放到“C:\Windows\项式system32\”目录中,当出现“扩充了一个文件”的提示后,表明已经将“hal.dll”文件释放出来,重新启动计算机后,即可使电脑重新启动。“expand”命令是释放文件命令,在 Windows 安装光盘中所有的动态链接库文件为了缩小体积,减少对光盘空间的占用,都是经过特殊压缩的,是以“*.dl_”的形式存在的。要替换系统中丢失或损坏的同名文件,必须用“expand”命令释放到系统才行。   四、故障恢复控制台精彩实例   实例一:无法启动故障   安装有 Windows XP 的机器,系统无法启动,提示“NTLDR is Missing,press any key to restart”。   这主要是由于NTLDR文件丢失或损坏所致,只要从 Windows 2000/XP/Server 2003 安装光盘的I386文件夹中提取出此文件,然后复制到C盘的根目录下覆盖即可。在故障恢复控制台中的命令提示符依次输入以下命令,重启计算机即可修复故障。   C:\WINDOWS>x:   X:\>CD I386   X:\>I386>COPY NTLDR C:\ //将安装光盘I386文件夹中的NTLDR文件复制到C盘的根目录下   实例二:多系统并存故障   机器安装有 Windows 98/XP,当从屏幕上的多重启动菜单中选择了 Windows 98 之后,出现错误提示:“访问引导扇区文件Multi(0)disk(0)rdisk(0)partition(1)\\BOOT,出现I/O错误”。   这主要是由于找不到启动 Windows 98 启动分区文件 Bootsect.dos 所造成的。我们在安装多操作系统的过程中,一般是先安装 Windows 98,然后再安装高版本的操作系统如 Windows 2000/XP/2003。在安装高版本系统的过程中,安装程序首先将原有的启动分区保存成 Bootsect.dos 文件,然后将自身的启动程序放入启动分区。由于 Bootsect.dos 文件是在安装过程中由安装程序创建的,无法象其它丢失或损坏的文件一样,从安装光盘拷贝覆盖一下完事。   首先在DOS提示符后键入“SYS C:”,传递 Windows 98 的系统文件到C盘。然后,将 Windows 2000/XP/Server 2003 的安装光盘插入光驱,重新启动计算机,从光盘引导系统,当出现欢迎屏幕之后,按两次“R”键,当安装程序运行到修复任务选项的时候,选中“检查启动扇区”选项,然后将光标移动到“继续(执行所选任务)”选项上按回车,按照向导的提示进行直到“安装程序已完成修复”的提示。现在重新启动计算机,故障即可排除。   实例三:显示乱码故障   在系统启动过程中,凡是有中文的地方均显示为乱码,英文可以正常显示。   此问题主要是字库文件 bootfont.bin 文件损坏或丢失造成的,从 Windows 2000/XP/2003 安装光盘的I386文件夹中提取出此文件,复制到C盘根目录下覆盖即可。多操作系统能否正常运转,只需将安装光盘I386文件夹中的 NTLDR、ntdetect.com、Boot.ini、Bootsect.dos、bootfont.bin 这五个文件复制覆盖到C盘根目录下,再将 ntoskrnl.exe、hal.dll 这两个文件复制覆盖到 X:\Windows\System32\ 文件夹下(X为操作系统所在的分区盘符),多重引导故障便不攻自破,实为一劳永逸之举。
使用方法: -------- 非安装软件,直接双击运行,傻瓜式修复,可运行于32位和64位系统和WINPE系统 程序根据当前系统non-Unicode设置自动显示中/英界面 "自动修复"自动判断和系统启动有关的条件并自动修复程序支持的盘符上的NT系统启动,无需用户手工干预 "高级修复"只供特殊需要的朋友,参看下面应用实例中的高级修复部分 PE中自动判断PE环境,单硬盘可以直接"自动修复",如多硬盘在PE中修复时推荐使用"高级"修复选择你作为系统引导的盘符 适用范围: -------- 1. 启动菜单/启动文件丢失修复: 适用所有NT5.x(2000/XP/2003)和NT6.x(Vista/2008/Win7/2008r2) 2. 修复其他因BCD相关引起的故障 a. Win7/2008r2中 BCD 的修复计算机(Windows Recovery Environment)菜单丢失 b. Win7/2008r2中 BCD 引起的3D启动画面丢失(变成VISTA滚动条启动画面) c. BCD 引起的启动菜单选择界面乱码现象 3. 系统BCD非法的强制修复 - 现象:Vista/2008/Win7/2008r2中 - a. 运行msconfig后"启动"或"引导"栏空白 b. 管理员身份运行命令提示符中后运行bcdedit等和BCD相关的操作提示出错 c. 系统属性的"启动和故障恢复"窗口无法配置"默认操作系统"和"等待时间" d. 其他软件无法添加/删除/修改基于 BCD 管理的新启动菜单 注: 3的这种情况是否要强制修复自行决定。 额外功能: -------- 为VISTA/2008添加修复计算机(Windows Recovery Environment)菜单 使用方法:在系统盘符中新建recovery文件夹,再把光盘或安装程序中的boot\boot.sdi和sources\boot.wim复制至 recovery文件夹,再运行本程序,即可自动添加。 修复效果: -------- 存在原BCD或Boot.ini时程序将予备份,备份文件名/路径在修复完成后给出提示 NT5.x菜单在boot.ini中以"Microsoft Windows Server 2003 x86"形式存在 NT6.x菜单在BCD中以"Windows Server (R) 2008 Standard x86"形式存在 NT6.x的修复过程提示成功即时写入生效,NT5.x的修复在最后完成后再一并写入生效 NT5.x支持最多同接8个硬盘时的修复,但如果不同接口硬盘混用且三个或以上硬盘就未必能准确判断硬盘号,三硬盘以上 并混用的情况就算微软自己的控制台都未必能准确判断 NT6.x理论无限制硬盘数,也不限制混用 根据当前系统non-Unicode设置决定修复后的启动菜单中/英优先级 NT5.x+NT6.x的多系统中 - 当存在多个NT5.x时,修复后BCD显示的NT5.x相应菜单为“Earlier Version of Windows”, 当只有一个NT5.x系统,修复后BCD中显示的NT5.x相应菜单则为类如"Microsoft Windows Server 2003 x86"格式 不修复NT5.x的Boot.ini和NT6.x的BCD中的多余的启动菜单 因为精简版的精简程度无从判断,所以不保证能修复精简版系统启动故障

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值