Windows 安装 Ubuntu 双系统避坑指南:UEFI、分区与引导修复全解析
2026/8/30 17:16:47 网站建设 项目流程

很多刚接触 Linux 的开发者,往往会在虚拟机、WSL 和双系统之间反复横跳。虚拟机怕性能损失,WSL 怕兼容性不够,真正跑起 Docker、显卡驱动、嵌入式交叉编译或者内核调试时,才发现问题比想象中多。折腾到最后,很多人还是会选择在 Windows 主机上装一个 Ubuntu 双系统,保留 Windows 应对日常办公和游戏,把 Ubuntu 留给开发环境。这个方案不新潮,但它解决了实际工程里最要命的一个问题:你既需要 Windows 的软件生态,又需要 Linux 的真实内核和完整硬件访问能力。

这篇文章不是简单复述安装向导的每一步截图,而是把安装双系统前后真正影响成败的环节梳理出来。包括分区怎么规划、UEFI 和 Secure Boot 怎么处理、安装时最容易踩的坑、装完以后启动菜单丢失或无 WiFi 无显卡驱动怎么收拾。无论你是第一次在 Windows 上安装 Ubuntu,还是之前装过但没成功,按这篇文章的思路走一遍,基本能把系统跑起来。

1. 为什么双系统依然是值得认真考虑的选择

先聊一个前提性问题:如果 VMware、VirtualBox、WSL 已经很好用了,为什么还要装双系统?

关键在于“硬件访问”和“运行环境真实性”的差异。

  • 虚拟机里跑 Linux,CPU、内存、磁盘都是模拟出来的,写内核模块、调试驱动、做性能压测时,结果和真机往往对不上。
  • WSL 虽然启动快、集成好,但它的内核是微软定制维护的,某些依赖特定内核版本、特定硬件能力、特定系统调用的软件,在 WSL 里就是跑不完整。
  • 需要 GPU 直通、CUDA 加速、USB 设备透传、无线网卡兼容测试这类场景,双系统是最直接的方式:系统独占硬件,性能无损耗。

双系统的代价也很清楚:安装有风险、启动流程变复杂、两个系统之间切换需要重启,而且磁盘分区一旦规划错了,后期调整非常痛苦。

所以我的判断是:双系统适合对 Linux 环境要求高于“随便跑跑”的人,尤其是后端开发、嵌入式开发、人工智能训练、系统运维方向的同学。如果只是偶尔写几行 Python,那 WSL 或虚拟机就够了,没必要承担双系统的维护成本。

2. 双系统的核心概念与适用场景

在动手之前,先理解几个决定成败的概念。安装双系统最大的障碍不是不会点鼠标,而是不清楚电脑从开机到进入系统的完整流程。

2.1 UEFI 与 Legacy BIOS

现在的电脑基本都走 UEFI 引导,配合 GPT 分区表。老式电脑或某些显卡兼容性差的设备,可能还在用 Legacy BIOS + MBR。

  • UEFI 模式下,系统引导文件放在独立的 EFI 分区中,Windows 和 Linux 可以各自保留引导文件,通过主板启动菜单切换。
  • Legacy BIOS 模式下,引导记录写在磁盘主引导区,双系统共存时经常互相覆盖,处理起来更麻烦。

安装 Ubuntu 之前,先确认自己的电脑是 UEFI 还是 Legacy。可以在 Windows 的“系统信息”里查看 BIOS 模式,也可以在磁盘管理里看有没有 EFI 系统分区。绝大多数 2015 年之后的电脑都是 UEFI,本文以 UEFI + GPT 为主要讲解场景。

2.2 Secure Boot 的作用与影响

Secure Boot 是 UEFI 的一项安全机制,目的是防止未签名的引导程序在启动时加载。Windows 8 以后的电脑默认开启。

Ubuntu 官方支持 Secure Boot,安装程序带了签名引导文件,所以很多时候不关也能装。但问题是:某些第三方显卡驱动、内核模块没有微软签名,Secure Boot 开着会导致这些模块加载失败,表现为开机黑屏、进不了桌面、WiFi 无法工作。

稳妥做法是:安装前在 BIOS 中关闭 Secure Boot。如果遇到奇怪的内核模块加载问题,这也是第一个排查点。

2.3 交换分区 swap

swap 是 Linux 的虚拟内存扩展,当物理内存不够时,系统把部分数据换到磁盘上。

  • 内存 16GB 以下,swap 建议等于或略大于内存。
  • 内存 16GB 以上,可以设置 8GB 左右,用于休眠和内存溢出缓冲。
  • 如果使用 SSD,swap 文件放在 SSD 上没问题;机械硬盘则尽量少用 swap。

Ubuntu 新版默认采用 swap file 而不是 swap 分区,手动分区时我会建议按需求决定是否单独分 swap。

2.4 GRUB 引导管理器

GRUB 是 Ubuntu 的引导管理器,安装完成后它接管开机启动菜单,默认列出 Ubuntu 和 Windows Boot Manager,用户可以选择进哪个系统。实际安装中遇到的“启动菜单不见了”“重启直接进 Windows”“重启进 Ubuntu 但 Windows 没了”,大多是 GRUB 和 Windows 引导顺序问题。

3. 环境准备与前置条件

动手安装前,先花半小时检查机器状态,比装到一半才发现磁盘空间不够稳妥得多。

3.1 硬件要求

  • 磁盘至少留出 60GB 空闲空间,推荐 100GB 以上。Ubuntu 系统本身 20GB 左右就能跑,但开发环境、Docker 镜像、依赖缓存、模型文件很快会把空间占满。
  • 内存建议 8GB 以上,开发机 16GB 起步比较舒服。
  • 准备一个 8GB 以上的 U 盘,用来制作 Ubuntu 启动盘。
  • 能连上网,最好有有线网络或可用的 WiFi,安装完成后需要更新软件源。

3.2 在 Windows 中做的准备工作

  1. 创建 Windows 系统还原点。还原点不能备份全部数据,但能让你在安装过程出问题时恢复部分系统设置。
  2. 如果开启了 BitLocker 磁盘加密,务必先暂停加密或备份恢复密钥。否则安装 Ubuntu 后,Windows 分区可能因加密状态变化导致无法挂载。
  3. 关闭 Windows 的“快速启动”。快速启动会让 Windows 关机时进入休眠式状态,可能导致 Linux 无法正常挂载 Windows 分区,甚至出现时间错乱。
  4. 用磁盘管理工具压缩出未分配空间。在 Windows 搜索栏输入“磁盘管理”,打开后右键点击你要压缩的卷,选择“压缩卷”,输入容量后确认。不要用第三方分区软件在 Windows 里强行调整分区,除非你很清楚自己在干什么。

3.3 下载 Ubuntu 镜像

推荐使用 Ubuntu 22.04 LTS,长期支持版本,软件生态和驱动适配都比较成熟。也可以访问 Ubuntu 官网下载最新 LTS 镜像。注意区分桌面版和服务器版,本文场景选择桌面版。

3.4 制作启动盘

在 Windows 上推荐使用 Rufus 或 balenaEtcher。

Rufus 操作要点:

  • 分区类型选择 GPT。
  • 目标系统类型选择 UEFI(非 CSM)。
  • 文件系统保持 FAT32 即可。
  • 点击开始即可写入。

制作完成后,U 盘会变成一个可引导的 Ubuntu 安装介质。

4. 核心流程拆解:从启动盘到进入 Ubuntu

安装过程可以分为四个阶段:设置 BIOS、U 盘启动、分区安装、重启配置。每一步都有容易出错的细节,下面逐个拆开讲。

4.1 设置 BIOS

重启电脑,在开机画面出现时按对应键进入 BIOS 设置界面。常见按键是 Del、F2、F10、F12,具体看主板品牌。

需要确认的项目:

  • 启动模式为 UEFI。
  • Secure Boot 设置为 Disabled。
  • 启动顺序中 U 盘排在第一位,或者通过临时启动菜单选择 U 盘启动(通常是 F12 或 F11)。

设置完成后保存退出,电脑会从 U 盘启动。

4.2 U 盘启动后的第一屏

U 盘启动后,会看到 GRUB 菜单,包含两个选项:

  • Try or Install Ubuntu
  • Try or Install Ubuntu (safe graphics)

选择第一项即可。如果出现黑屏或花屏,尝试第二项。这一屏出现即说明启动盘本身没问题,后续问题主要出在磁盘和显卡驱动上。

4.3 安装类型选择

进入 Ubuntu 安装界面后,会要求选择语言、键盘布局、网络、安装类型。到“安装类型”这一步是关键分水岭。

有两种常见路线:

  • 自动安装:选择“Install Ubuntu alongside Windows Boot Manager”,安装程序会自动缩容 Windows 分区并安装 Ubuntu。适合不想手动分区的用户。
  • 手动分区:选择“Something else”。适合对磁盘布局有明确规划的用户,也是本文推荐的方式。

如果你的 Windows 已经压缩出未分配空间,自动安装通常能直接识别;但手动分区能更精确地控制每个挂载点的大小。

4.4 手动分区方案

手动分区界面会列出当前磁盘的所有分区,包括 Windows 的 EFI 分区、恢复分区、系统分区和未分配空间。请注意不要动 Windows 已有的分区,只在未分配空间上创建新分区。

推荐的分区方案如下:

挂载点大小文件系统说明
/剩余空间,建议 60GB 以上ext4系统根目录
/home剩余空间,按需分配ext4用户数据目录,独立分区便于重装系统保留数据
swap物理内存不足时使用,8GB 左右即可swap交换空间,可不建而改用 swap 文件

EFI 分区不需要新建。Ubuntu 安装器会识别 Windows 已有的 EFI 系统分区,并把引导文件写进去。有些教程会让你单独再建一个 EFI 分区,这会增加混乱,容易导致启动菜单冲突。除非你确定要独立引导管理,否则共用现有 EFI 分区是最省事的方案。

分区设置完成后,确认“Device for boot loader installation”选择的是整块磁盘的设备名,例如/dev/sda/dev/nvme0n1,而不是某个分区。这保证 GRUB 能正确安装到 UEFI 启动链中。

4.5 用户账户和时区

安装程序会要求创建用户名、主机名和密码。建议使用简单名字的账户,避免路径中出现中文字符。时区选择会自动识别,确认无误即可。

安装完成后会提示重启。拔出 U 盘,回车确认。

5. 完整示例与配置说明

下面给出几个关键步骤的完整操作示例,方便照着做。

5.1 在 Windows 中查看磁盘状态

打开 PowerShell 或命令提示符,运行以下命令确认磁盘信息和压缩空间前的准备情况:

# 查看磁盘及分区信息 Get-Disk # 查看卷信息,确认要压缩的分区 Get-Partition # 查看 BitLocker 状态 Get-BitLockerVolume

如果需要用命令行压缩卷,可以使用 diskpart:

# 以管理员身份打开 cmd 或 PowerShell diskpart # 列出磁盘 list disk # 选择磁盘,请把 0 换成实际磁盘编号 select disk 0 # 列出分区 list partition # 选择要压缩的分区 select partition 3 # 压缩 100GB,单位是 MB shrink desired=102400

这里真正容易踩坑的地方是:shrink 需要目标分区有足够可用空间,而且系统分区往往有无法移动的文件,导致压缩出来的空间小于预期。如果压缩选项是灰色,或者压缩量特别小,可以先关闭系统保护、清理磁盘碎片,再尝试。

5.2 制作 Ubuntu 启动盘

Rufus 使用界面没有统一的命令行,这里给出 balenaEtcher 的典型流程,作为备选:

# macOS 或 Linux 下如果要用命令行写启动盘,等价的 dd 命令如下 # 注意:if 是 Ubuntu ISO 路径,of 是 U 盘设备路径,实际操作前请再三确认设备名 sudo dd if=~/Downloads/ubuntu-22.04.3-desktop-amd64.iso of=/dev/sdb bs=4M status=progress oflag=sync

在 Windows 上推荐直接用 Rufus 图形界面,分区类型选 GPT,目标系统类型选 UEFI,然后用 FAT32 文件系统写入。不需要额外配置其他选项,Rufus 会自动处理可启动标志。

5.3 安装完成后验证系统状态

重启进入 Ubuntu 后,打开终端,运行以下命令确认关键状态:

# 查看磁盘分区布局,确认 Ubuntu 分区挂载正常 lsblk # 查看文件系统详细信息 sudo blkid # 查看内存和 swap 信息 free -h # 查看 GRUB 版本 grub-install --version # 更新软件源缓存,确认网络正常 sudo apt update

预期结果是:lsblk输出中能看到 ext4 类型的根分区挂载在/,Windows 的 NTFS 分区也能被识别;free -h显示 swap 已启用或已设置为 swap 文件;sudo apt update能正常拉取软件源列表。

如果apt update失败,先检查网络连接和 DNS 配置,再检查软件源是否正确。

6. 运行结果与效果验证:怎么判断双系统装成功了

双系统安装成功不等于配置成功。完成安装后,至少要做以下验证:

6.1 验证启动菜单

重启电脑,观察 GRUB 菜单是否出现。正常情况下,菜单顶部是 Ubuntu 内核选项,中间是 Ubuntu 高级选项,底部是 Windows Boot Manager。

  • 默认 Ubuntu 能正常进入桌面,说明内核和引导流程没问题。
  • 选择 Windows Boot Manager 能进入 Windows,说明 Windows 引导链没被破坏。
  • 如果只有 Ubuntu 没有 Windows,或者直接进 Windows 看不到 GRUB,参照第 7 节的排查方法。

6.2 验证硬件驱动和网络

  • 打开“设置”里的“WiFi”,确认无线网卡能搜到信号。
  • 检查显卡驱动:运行ubuntu-drivers devices查看推荐驱动,运行nvidia-smi验证 NVIDIA 驱动是否生效(如果有 NVIDIA 显卡)。
  • 检查蓝牙、USB、触控板、声音等外设是否正常工作。

6.3 验证 Windows 和 Ubuntu 时间同步

Ubuntu 默认使用 UTC 时间,Windows 默认使用本地时间,这会导致两个系统切换后时间相差 8 小时。解决办法是在 Ubuntu 中执行:

# 让 Ubuntu 使用本地时间,与 Windows 保持一致 timedatectl set-local-rtc 1

执行后重启进入 Windows,再看时间是否正常。

6.4 验证磁盘挂载是否正确

# 查看挂载情况和磁盘使用率 df -h

确认根分区、home 分区(如果有)、swap 状态正常。如果 Windows 分区没有被自动挂载,这是正常现象,Ubuntu 默认不会自动挂载 Windows 的 NTFS 分区,避免误操作破坏数据。

7. 常见问题与排查思路

双系统安装过程中遇到的问题高度集中,这里把最常见的场景整理成表格,方便快速定位。

问题现象可能原因排查方式解决方案
安装完成后重启直接进 Windows,没有出现 GRUB 菜单BIOS 启动顺序 Windows Boot Manager 优先,或 GRUB 引导未写入 EFI 分区进入 BIOS 查看启动顺序,用启动菜单手动选择 Ubuntu 项在 BIOS 中将 Ubuntu 设为第一启动项;若找不到 Ubuntu 引导项,用启动盘进入 Try Ubuntu 执行 boot-repair 修复
Ubuntu 安装后没有 WiFi无线网卡驱动未安装或与内核不兼容插上网线,运行lspci -k查看网卡型号和驱动状态;运行sudo apt update后安装系统更新前往官方驱动页面下载对应 Linux 驱动,或运行sudo apt install linux-firmware;部分 Realtek 网卡需要手动编译驱动
开机花屏或黑屏,只能进入 safe graphics显卡驱动未正确加载,或内核启动参数需要调整在 GRUB 菜单按 e 编辑启动项,临时在 linux 行末尾加入nomodeset再启动安装 NVIDIA 官方驱动或 AMD 开源驱动;确认 Secure Boot 状态;必要时修改 GRUB_CMDLINE_LINUX_DEFAULT 配置并运行sudo update-grub
启动菜单中只有 Ubuntu 没有 WindowsGRUB 未检测到 Windows 引导项在 Ubuntu 终端运行sudo os-probersudo update-grub若 os-prober 未识别,安装 os-prober 包后重试;确认 Windows 的 EFI 分区未被误删
两个系统时间相差 8 小时Windows 使用本地时间,Ubuntu 使用 UTC查看timedatectl状态运行timedatectl set-local-rtc 1让 Ubuntu 使用本地时间
无法挂载 Windows 的 NTFS 分区Windows 启用了快速启动或系统处于休眠状态检查 ntfsfix 和 ntfs-3g 是否安装,确认 Windows 完全关机和快速启动已关闭在 Windows 中关闭快速启动,再回到 Ubuntu 重试;必要时运行sudo ntfsfix /dev/nvme0n1pX修复 NTFS 错误
安装时无法识别未分配空间Windows 压缩卷未完成,或磁盘分区表冲突回到 Windows 磁盘管理,确认分区状态;在安装器中使用“Something else”方式查看分区删除不必要的恢复分区或调整分区;不要手动删除 ESP 分区
双系统切换后 Windows 变慢或蓝屏动过 Windows 分区,或 GRUB 引导导致磁盘标识变化用 Windows 安装盘执行启动修复bootrec /fixmbr保持 Windows 分区结构不变,安装完 Ubuntu 不要随意读写或删除 Windows 分区文件

上表中出现频率最高的是“无 WiFi”“花屏”和“启动菜单丢失”三类问题。前两类的根源基本都是驱动和 Secure Boot,后一类多半是 GRUB 和 BIOS 启动顺序的问题。遇到问题先别慌,按表格里的“排查方式”一步步走,多数都能解决。

8. 最佳实践与工程建议

安装完成后,双系统已经能正常使用,但离“长期稳定维持”还有一段距离。下面这些实践经验,能帮你少走很多弯路。

8.1 安装前的备份应覆盖关键数据

很多教程只提醒备份“重要文件”,但在工程场景里,更重要的是备份系统状态:Windows 的还原点、浏览器书签、SSH 密钥、数据库导出文件。建议把这四类数据单独备份,尤其 SSH 私钥和数据库文件,一旦丢失几乎无法恢复。备份建议放外部硬盘或云盘,不要放 U 盘,U 盘在制作启动盘过程中可能被格式化。

8.2 磁盘分区要有“未来预留”概念

很多人的安装规划是“刚好够用”,结果半年后 Docker 镜像、conda 环境、node_modules 把磁盘塞满。建议在给 Ubuntu 分配空间时,至少预留 20% 的余量。如果硬盘空间充足,/home独立分区能让你重装系统时保留用户数据;但独立分区也意味着/空间要提前算好,否则以后要调整分区大小非常麻烦。

8.3 Windows 快速启动和 Ubuntu 电源管理需要配合

在 Windows 中关闭快速启动,不仅是为了避免 NTFS 分区挂载异常,还会影响双系统的休眠和唤醒行为。Ubuntu 侧建议设置合理的自动挂载策略,尤其是当你需要在 Ubuntu 里读 Windows 文件时,挂载时加上windows_namesuidgid参数,避免文件权限混乱。

8.4 GRUB 启动菜单可以进一步管理

安装完成后的 GRUB 默认行为可能不是你想要的。例如,想把 Windows 设为默认系统,可以修改/etc/default/grub

# 查看当前 GRUB 菜单中的系统顺序 grep menuentry /boot/grub/grub.cfg

找到 Windows 对应的菜单序号后,修改 GRUB 配置:

sudo nano /etc/default/grub

GRUB_DEFAULT=0改成 Windows 对应的序号,然后更新 GRUB:

sudo update-grub

如果不想手动改配置文件,也可以安装 grub-customizer 图形工具,但注意版本兼容性,不要用它改动 EFI 分区的结构。

8.5 驱动安装要有验证手段

显卡驱动和 WiFi 驱动是双系统最常见的两个“隐形杀手”。安装驱动后,建议立即验证:

  • 显卡驱动:运行nvidia-smi,确认驱动版本和 CUDA 版本匹配。
  • WiFi 驱动:连接一个实际热点,连续 ping 外部地址,观察丢包情况,而不是只看图标是否显示连接。

如果驱动安装后开机花屏,不要急着卸载驱动。先进入恢复模式或 safe graphics,重新安装匹配的驱动版本,或者更新内核后再试一次。很多时候不是驱动本身有问题,而是内核版本和驱动版本对不上。

8.6 分区和引导操作记录到文档

双系统环境最怕“时间久了忘了当初怎么做”。建议安装完成后,把这次安装的分区表、驱动版本、GRUB 配置、Secure Boot 设置记录到一个 Markdown 文件里。以后系统出问题,或者要重装换机时,这份记录能节省大量时间。

9. 总结与后续学习方向

这篇教程从双系统的选型讲起,到核心概念、环境准备、安装流程、验证方式和常见问题排查,基本上覆盖了 Windows 主机安装 Ubuntu 双系统的完整链路。相比虚拟机或 WSL,双系统提供的是真正的硬件级 Linux 环境,特别适合开发、调试、性能测试等需要贴近系统的场景。

如果你按照步骤完成了安装,下一步可以尝试建立自己的日常使用体系:配置 Docker 环境、安装 Python 开发工具链、设置远程开发服务器、迁移 Windows 下的常用工作流。双系统只是入口,真正有价值的是你在 Ubuntu 上跑起来的服务和应用。

需要提醒的是,双系统维护并不是一劳永逸的事。Windows 大版本更新、Ubuntu 内核升级、BIOS 固件刷新,都有可能影响 GRUB 引导链。遇到问题时,不要把“重装”当作第一选项,先检查启动顺序、GRUB 配置和驱动状态,大多数问题都能在系统层面解决。备份策略永远不要省,它能让你在折腾各种配置时心里有底。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询