随笔 - 576  文章 - 0  评论 - 62  阅读 - 219万

Linux 启动流程

1、首先加载BIOS(Basic Input Output System),自检,读取可启动的设备顺序(一般是硬盘)。
2、每个硬盘有一个MBR(Master Boot Record)区域,MBR是硬盘第一个扇区446B的区域。设置启动顺序,相当于读取不同硬盘的MBR。
3、然后加载MBR。
4、每个操作系统都有一个自己的Boot Loader,Boot Loader负责把系统内核加载到内存中运行。安装操作系统的时候,操作系统会把Boot Loader安装在自己的文件系统中。
  安装Linux的时候,可以选择是否要把Boot Loader拷贝到MBR中,而Windows会主动把Boot Loader拷贝到MBR中,特别注意:MBR中只有一个区域存放Boot Loader,后一次拷贝的Boot Loader会覆盖掉前一次拷贝的Boot Loader。
5、加载MBR,读取其中的Boot Loader,启动系统。那么问题来了?
  MBR中只有一个Boot Loader,后安装的系统拷贝Boot Loader 到MBR,覆盖掉前一个系统的Boot Loader,这不就导致,前一个系统永远没有办法启动了?
6、这就要谈到Boot Loader的功能,MBR中只有一个Boot Loader,但是Boot Loader提供菜单选项,可以选择不同的启动选项。
  a、直接指向可启动的程序区段,加载操作系统。
  b、将引导加载功能,转交给其他的Boot Loader。
7、考虑下面的情况,安装了Windows,文件系统中有Boot Loader,名称W,将W拷贝到MBR。再安装Linux,文件系统中有Boot Loader,名称L,将L拷贝到MBR,覆盖掉W。启动的时候,加载MBR中的L,L提供选项:
  a、可以直接加载Linux系统;
  b、可以转交给Linux文件系统中的Boot Loader,再加载Linux;
  c、可以转交给Windows文件系统中的Boot Loader,再加载Windows。
8、特别注意的是:Windows的Boot Loader 默认不具备转交的功能,而且安装Windows的时候,会主动把Boot Loader拷贝MBR,覆盖掉以前的。这就存在一个问题:
  安装多操作系统,最后安装Windows,导致无法引导启动其他的系统。因此,安装多操作系统,涉及到MBR与多重引导,应该先安装Windows,在安装Linux,让Linux的Boot Loader 在MBR覆盖掉Windows的。
9、然后Boot Loader加载系统内核到内存中,系统内核驱动周边的设备,接管了BIOS以后的工作。

posted on   Andy Niu  阅读(326)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示