故天将降大任于斯人也
自从在虚拟机中安装了Ubuntu25.04后,一直震惊于Ubuntu25的流畅度,但是受限于虚拟机的体验一般,非常希望能够体验直接在电脑上原生运行的Ubuntu,于是萌生了想要安装双系统的想法。
最开始想要将Linux系统安装在我的U盘上,实现想要运行linux时,随时插入U盘作为启动盘,并且U盘还可以随身携带,在任何地方,只要有一台电脑,就能启动一个属于我的小型Linux系统。想一想确实非常帅气,但是博主的U盘写入速度实在是太慢了,安装过程异常缓慢,多次让我怀疑是写入镜像的过程卡机了,还是U盘写入太慢了。
所以最终还是选择将Linux系统安装在电脑的两个固态硬盘中的另一个盘,实现一个盘安装Windows11,一个盘安装Ubuntu的效果。
安装在两个不同的盘有以下优点:
- 可以设置一个默认启动盘,开机时自动优先加载默认的系统,防止电脑远程开机时卡在引导程序界面
- 在需要进入另一个系统时,通过手动切换启动盘,实现启动到第二操作系统
- 防止两个系统的更新相互产生干扰
- 经过实测,Linux可以访问Windos系统下的所有文件,而Windows看不见Linux下的任何文件
环境说明:
- 一台以及安装好Windos11的联想拯救者R900p
- 插了两根固态硬盘,其中一个盘已经安装了Win11系统,另一个盘挂在为Windos11的一个文件盘
- 一个u盘
制作Linux镜像
准备工具:Rufus - 轻松创建 USB 启动盘
下载Ubuntu镜像:Ubuntu系统下载 | Ubuntu
打开rufus:博主选择如下

由于博主在第一次安装时,预留了10g的持久分区,但是不知为何在启动ubuntu时总是黑屏,所以这次还选择了检查设备坏块,实测这个步骤会非常慢,第一次尝试时可以先不用勾选最后的“检查设备坏块”
镜像制作好后,U盘会显示成这个样子:

分盘
右键“此电脑”,点击显示更多选项:

选择右侧的磁盘管理:

此时磁盘的情况如下:

磁盘0是我们安装Windos的硬盘,我们将要在磁盘1上安装Linux系统。
我们选择原本以及分配好的卷,右键:选择压缩卷

这里我们要压缩卷的大小就是将要分配给Linux的大小,博主这里分配了50GB = 1024 * 50 = 51200MB。
看到有50GB为分配即可

安装Ubuntu
现在我们将电脑关机,等待完全关机后,我们再次开机,同时连按F12(不同的电脑可能不是F12),进入选择启动器的界面:
也可以进入BIOS,调整启动盘的顺序
我们这里选择第二个,即我们插入的U盘作为启动盘。

等待电脑启动,会看到这个界面:

我们可以优先选择第一个试一下,但是博主的电脑开了独显直连,由于驱动问题最终电脑屏幕背光不亮,无法正常显示。如果遇到显示问题,我们长按电源键强制关机,然后按照上面的步骤重新启动电脑,这此我们选择第二个:安全图像模式(有助于避免显卡驱动问题导致的花屏等)

这次很成功的进入了Ubuntu:

我们选择中文:

接下来一路点击下一步:






这一页注意勾选安装驱动

我这里选择了第一个会自动分区,希望自定义可以选择第三个。
第二个会擦除整个磁盘安装Linux,不建议选择。



点击一下国内的地图即可


这一步我们检查一下自动分区的方法,可以看到所有原本的分区都保持 Unchanged,然后 Creat了两个新的分区用于挂在EFI和系统根目录。这就是我们想要的效果,点击安装就行。
等待系统安装完成:

点击立即重启即可:

修改第一启动项
重启后,电脑开机会显示如下页面:

- 进入Ubuntu
- Ubuntu的高级选项
- 内存测试
- 内存测试
- 进入Windos系统
- 进入系统BIOS
以后每次开机,系统都会停留在这一界面一段时间,如果未选择,则会自动进入Ubuntu系统。
博主主要用Windos系统,希望每次开机可以直接进入Windows系统,所以我选择最后一个:

系统Bios显示如下:

ubuntu是第一启动项,我选择将Windos修改为第一启动项:

这样,每次开机会直接进入Windos,如果需要进入Linux,可以在开机时通过按F12进入切换页面。
电脑从开机到加载系统中间都发生了什么?
通电与硬件自检
这是最基础的物理和硬件层面:
-
按下电源键:会向主板发送一个“开机”信号
-
电源供应单元(PSU)响应:PSU收到信号后,开始进行自我检查。如果电压稳定且一切正常,他会向主板发送一个“Power Good”信号。表明可以开始安全供电
-
CPU启动:主板收到“Power Good”信号,开始将电力分配给所有关键部件,最重要的就是中央处理器(CPU)。CPU被激活并重置,然后去一个预先写死的、固定的内存地址去寻找他的第一行指令。
-
UEFI/BIOS 固件启动:CPU的第一行指令指向了主板上的一个芯片,这个芯片存储着“固件”。通常是非易失存储器ROM。现代电脑上,这套固件是UEFI(统一可扩展固件接口),在老式电脑上则是BIOS(基本输入输出系统)。Win11要求必须为UEFI
-
开机自检:UEFI的首要任务是进行POST(Power-On Self-Test)。他会快速的检查所有的核心硬件是否就位并能正常工作。
- 内存
- 显卡
- 键盘、鼠标等外设
- 硬盘/固态硬盘
如果在这个阶段发现问题,可能会卡在开机第一屏,并且无法继续启动。
寻找并加载引导程序
确认硬件检查无误后,UEFI就需要找到操作系统的引导程序。
- 确认启动顺序:UEFI会根据你在设置中预设的启动顺序(Boot Order),依次检查各个存储设备。
- 定位EFI系统分区(ESP):ESP分区专门用来存储操作系统的启动加载程序,无论是Windows,Linux,还是macOS。
- 启动系统管理程序:以windows为例,我们可以在ESP分区中找到
bootmgfw.efi文件,这就是Windows启动管理器(Windows Boot Manager)。
针对Ubuntu可以找到:shimx64.efi和grubx64.efi他们两个协同工作
shimx64.efi:是一个安全启动的加载程序,主要用于绕过安全启动的限制grubx64.efi:是GRUB(通用引导加载程序)的核心部分,负责加载Linux内核和初始RAM磁盘(initrd)
安全启动要求所有被执行的引导文件都必须有微软的数字签名。Canonical(Ubuntu的母公司)将shimx64.efi 这个小程序送过去给微软签名。因此UEFI固件会验证并信任这个文件。
shimx64.efi启动后,它的任务就是去验证并加载下一个引导程序,也就是grubx64.efi
Windows内核加载
现在,轮到Windows自己来接管了。
- 读取启动配置数据(BCD):Windows 启动器首先会读取BCD(Boot Configuration Data)文件,告诉启动管理器真正的windows11系统安装在那个分区,以及有哪些启动选项(正常启动/安全模式)。
- 加载核心组件:根据BCD的指引,启动管理器会将Windows最核心的两个部分加载到内存中。
- Windos内核(ntoskrnl.exe)
- 硬件抽象层(hal.dll)
- 加载关键驱动程序:内核启动后,会立即加载一批最关键的驱动程序
内核初始化与徽标亮起
Windows内核被完全加载到内存后,正式接管了计算机的控制权。
- 初始化系统:内核开始初始化它所管理的各个子系统,启动必要的系统服务。
- 加载显卡驱动并亮起屏幕
核心概念解释
BIOS(基本输入/输出系统)
英文全称:Basic Input/ Output System
BIOS是一套固化在主板上一个只读存储器芯片里的程序。他是电脑通电后第一个被唤醒和运行的软件。它诞生于上世纪70年代,服务了个人电脑几十年。
主要工作:
- 开机自检(POST):检查CPU、内存、显卡等关键硬件是否存在且能基本工作。
- 初始化硬件:让硬件处于一个可用的状态
- 引导加载程序: 按照设定的顺序在存储设备的第一个扇区(主引导记录MBR)寻找启动代码,然后把控制权交给它,让它加载操作系统。
特点与局限:
- 16模式运行:速度慢,一次处理很少的信息
- 1MB寻址空间:只能识别和使用最初的1MB空间()
- MBR分区:MBR(主引导记录)分区表。MBR最大只支持2TB的硬盘,且最多只能有4个主分区。
- 文本界面:受限于性能影响,BIOS系统通常为蓝底白字的纯文本界面,只能用键盘操作。
MBR(主引导记录)
英文全称:Master Boot Record
MBR是传统的硬盘区分方案,自上世纪80年代开始,就一直是行业标准。它位于硬盘的最前端(第一个扇区),是一个非常小的数据区域,仅有512字节。
MBR的结构和工作方式
这512字节被分成了三个部分:
- 主引导代码(Master Boot Code):一小段程序(约446字节),任务是在BIOS完成自检后,找到被标记为”活动”的分区,然后加载该分区的操作系统。
- 分区表(Partition Table):记录硬盘分区信息的地方(64字节)。这是MBR的核心局限所在
- 结束标志(Boot Signature):最后两个字节
55AA,用来表示这是一个有效的MBR分区。
MBR的致命缺陷:
- 最大只支持2TB硬盘:MBR使用32bit来记录扇区的地址。硬盘通常以512字节为一个扇区。则硬盘能表示的最大地址为:
以1024为单位进位则为2TB,以1000进位则为2.2TB。
- 最多只支持四个主分区:64字节的分区表空间,每个分区信息占16个字节。所以最多只能创建4个主分区。为了解决这个问题,后来引入了”扩展分区”和”逻辑分区”的复杂概念,允许在一个扩展分区里创建多个逻辑分区,但这只是一个笨拙的补丁。
- 数据安全性差:所有的分区信息都集中存放在硬盘开头的这一个扇区里。一旦这个扇区因为病毒、坏道、或误操作而损坏,整个硬盘的分区信息就全部丢失了。
UEFI(统一可扩展固件接口)
英文全称:Unified Extensible Firmware Interface
UEFI是一个全新的、更现代的电脑固件标准,旨在取代老旧的BIOS。它不在是一小段汇编代码,而更像是一个微型的、功能强大的操作系统,运行在操作系统之前。Windows11已经强制要求使用UEFI。
主要工作:
- 开机自检(POST):同样执行硬件检查,但是速度更快、更全面。
- 提供丰富的预启动环境:它不再是简单的交接工作,而是提供了一个功能完备的”准备室”。
- 直接加载启动文件:它不再是去硬盘的第一个”扇区”盲找,而是直接去一个叫EFI系统分区的地方,读取启动加载程序文件(例如Windows的
bootmgfw.efi)
优势与特点:
- 32/64位模式:处理能力和速度远超BIOS
- 没有内存限制:可以访问计算机所有内存,运行更加复杂的程序。
- GPT分区:它使用GPT分区(GUID分区)来管理硬盘。GPT分区理论上支持18EB(约1800TB)的硬盘和最多128个主分区,彻底解决了容量和分区数量的限制。
- 图形化界面:受益于性能的提升,UEFI通常是有图形化界面的,支持鼠标操作。
- 安全启动(Secure Boot):这是UEFI最重要的特性之一。它能确保在启动过程中,只加载有可信数字签名的启动程序和驱动,从而有效防止恶意软件在系统启动前就侵入电脑
- 扩展性强:UEFI是模块化设计的,厂商可以很方便地为其添加新功能,如硬件诊断工具、固件更新程序等。
EFI系统分区(ESP)
英文全称:EFI System Partition
ESP是UEFI的专属启动文件夹。ESP是采用GPT分区表的硬盘上,一个被格式化为FAT32的、相对较小的独立分区(通常为100MB~500MB)。这个分区是操作系统和UEFI固件之间沟通的桥梁。
主要工作:
- 存放引导加载程序:这是它最核心的功能。所有安装在该硬盘上的操作系统(无论是Windows、macOS还是Linux)都会把自己的启动加载程序文件存放在这个分区里。
- 存放驱动程序:UEFI可以在操作系统启动前加载一些硬件驱动程序。这些驱动文件也存放在ESP中。
- 存放系统工具:一些系统维护工具,如内存检测程序、固件更新程序、也会被存放在这里。
UEFI启动时,它不会再想BIOS那样去猜测启动代码的位置。而是直接挂载ESP分区,然后像打开文件夹一样,查找并运行指定的 .efi文件。这种方式更精确、更可靠、也更灵活,尤其是在多系统环境下,管理起来非常清晰。
GPT(GUID分区表)
GPT是一个与UEFI标准一同推出旨在取代MBR的全新分区方案。它解决了MBR的所有主要缺点。
GPT的结构与工作方式
GPT的设计要复杂和周全的多:
- 保护MBR(Protective MBR):在硬盘的第一个扇区,GPT仍然保留了一个”假的”MBR。它的作用是告诉那些只认识MBR的老旧系统和软件:“这个硬盘已经被占用了,请不要动它”,从而防止数据被意外破坏。
- 主GPT头(Primary GPT Header):紧跟在保护MBR后,它定义了分区表的位置、大小,并为整个硬盘创建了一个全局唯一标识符(GUID)
- 分区条目(Partition Entries):紧跟在主GPT头之后,这里是真正的”分区表”,它有比MBR大得多的空间,在Windows下默认可以创建多达128个主分区。
- 备份GPT头和分区条目:在硬盘的末尾,完整的备份了一份GPT头和分区条目。
GPT的核心优势:
- 支持超大容量硬盘:GPT使用64bit来寻址,理论上可以支持的硬盘容量高达:9.4ZB(1 ZB = 10亿TB)。
- 支持超多分区
- 数据安全可靠:
- 冗余备份:由于在硬盘末尾有一份完整的备份,如果主分区表损坏,系统可以自动从备份中恢复。
- CRC32校验:GPT会对头部和分区表进行循环冗余校验(CRC32)。保证每次启动时,系统都会检查校验值是否正确。如果不正确,它就会尝试用备份来修复,从而保证了分区数据的完整性。