从 win10 换到 Linux,最绕不开的一道坎就是双系统。我说的不是装个虚拟机体验一下,也不是 WSL 里敲两句命令,而是认认真真在硬盘上装一个原生 Linux,开机时自己选进哪个系统。很多教程把这件事写得像拆炸弹,又是改 BIOS 又是分区的,搞得新手还没动手就想放弃。这篇我直接把整套流程拆开讲,包括方案怎么选、分区怎么给、引导怎么修、出问题怎么排查,尽量把我在这个过程中踩过的坑一次说清。
1. 装双系统前,先把三个方案选明白
1.1 双系统、虚拟机、WSL 到底该怎么选
在真正动手之前,我建议你先想清楚一个问题:你装 Linux 到底是拿来干嘛的?
如果你是学 Linux 命令、写点脚本跑个服务,或者只是好奇想体验一下,那说实话,虚拟机或者 WSL 已经完全够用了。WSL 现在的体验相当好,能直接访问 Windows 文件系统,还能跑 Docker,很多嵌入式开发场景它都应付得来。虚拟机的好处是隔离得干净,Windows 里随便折腾,装坏了直接快照还原,完全不心疼。
但如果你是冲着深度学习、机器人仿真、或者平时需要大量读写硬件资源的场景去的,虚拟机那个性能损耗就很让人难受了。我在 VMware 里跑过带图形界面的 ROS 仿真,帧率低到怀疑人生。WSL 呢,虽然底层很强大,但 GPU 直通、USB 串口这些场景依然不够省心,尤其是接一些传感器、相机之类的硬件,在 WSL 里配置有时候能把人逼疯。
双系统的最大优势是硬件资源完全原生,Linux 拥有整台机器的控制权,性能上没有任何折损,驱动兼容性也最好。代价就是你需要在 Win10 和 Linux 之间切换时需要重启,不能像虚拟机那样直接拖拽传文件。另外,双系统最大的风险在于引导区操作,一不小心 Windows 进不去,或者 Linux 起不来,必须有一点排查能力才敢碰。
我把三个方案的特性列了一张表,方便你根据自己情况对照:
| 维度 | 双系统 | 虚拟机 | WSL |
|---|---|---|---|
| 安装难度 | 较高,涉及分区和引导 | 低 | 极低 |
| 性能表现 | 原生性能 | 有虚拟化损耗 | 比虚拟机好,但有边界限制 |
| 硬件直通 | 完美 | 受限 | 部分支持 |
| 文件互通 | 跨分区访问麻烦 | 拖拽/共享目录 | 原生集成 |
| 适合人群 | 深度学习、嵌入式、正式使用 | 尝鲜、学习、测试 | 写代码、跑服务 |
1.2 装双系统的整体思路:先搞清楚引导这回事
决定要装双系统之后,先别急着下载镜像。你需要先搞清楚一个核心概念:引导方式。现在的电脑主板基本都支持两种引导模式,一种是传统的 Legacy 模式,配合 MBR 分区表;另一种是 UEFI 模式,配合 GPT 分区表。Win10 时代出厂的电脑默认基本都是 UEFI + GPT,所以你大概率会遇到的是这种组合。
UEFI 引导的好处是启动快、支持大容量硬盘,而且启动管理器在留了专门的 EFI 分区(ESP),这个分区是独立于系统盘的,里面放着各个系统的引导文件。双系统能不能和平共处,关键就看这个 EFI 分区里能不能同时放下 Windows 和 Linux 的引导程序。
安装顺序上有个铁律:先装 Windows,后装 Linux。Windows 的安装器比较霸道,它不认别的引导程序,装的时候会直接把自己设置成唯一引导项。反过来,Linux 的引导程序 GRUB 很客气,安装时会自动探测硬盘上已有系统,把我们熟悉的那个双系统启动菜单生成好。所以你先装好 Win10,再往里装 Linux,装完重启就能看到 GRUB 菜单里同时列着两个系统;顺序反过来的话,你就得手动折腾引导修复了。
这里还要说一句,启动模式最好统一。Windows 是 UEFI 引导,你装 Linux 时也必须是 UEFI,否则两个系统一个在 EFI 分区引导、一个在硬盘 MBR 引导,就会出现你选了 Linux 就进不去 Windows、选了 Windows 就找不到 Linux 的诡异情况。
2. 安装前的准备:把坑提前填上
2.1 磁盘规划与分区建议
理清方案之后,接下来就是给 Linux 腾地方。两种选择:一种是给 Windows 的现有分区缩容,腾出空白空间装 Linux;另一种是直接用一整块单独的硬盘装 Linux,互不干扰。如果你手头有闲置硬盘,我强烈建议你用独立硬盘,这样安装时选“清除整个磁盘”就行,分区都不用亲手设置,而且以后删除 Linux 系统也简单,直接把硬盘拔了就完事。没有多余硬盘的话,就在现有硬盘上缩容,也完全可行。
用 Windows 自带的磁盘管理就可以缩容。右键“此电脑”选“管理”,进入“磁盘管理”,找到你的系统盘(一般是 C 盘),右键选“压缩卷”。这里有个细节:压缩出来的空间不要太小,Linux 系统本身占不了多少,但你需要给它留出换分区、装软件、放数据的余地。我给 Ubuntu 系统盘的建议是至少 50GB,如果能给到 100GB 以上,那日常使用就比较从容了。
如果条件允许,尽量把 Linux 装在固态硬盘上,体验会好非常多。千万不要装在机械硬盘上,开机和运行程序的差距大到你怀疑装了个假系统。我知道有些朋友觉得“我只是偶尔用用 Linux”,但相信我,一旦你习惯了金数据秒开的感觉,就再也回不去了。
2.2 制作启动U盘与系统镜像下载
装 Linux 的第一步,是准备一个至少 8GB 的 U 盘,制作启动盘。工具方面我推荐 Ventoy,它和传统的 Rufus 不太一样,Ventoy 装到 U 盘之后,你只需要把 ISO 镜像文件丢进去就行,启动时会弹出一个菜单让你选要运行哪个镜像。好处是以后你想换其他 Linux 发行版或者装 Windows,不用反复格式化 U 盘,直接把新镜像扔进去就能用。
下载 Ubuntu 镜像(或者你喜欢的其他发行版)时,别去官网硬扛跨国网速,直接找国内镜像源,比如阿里的镜像站、清华的 TUNA 镜像站,速度会快很多。根据你自己需求的版本号选 22.04 LTS 或者 24.04 LTS 即可,LTS 是长期支持版本,稳定性好,适合日常使用。
用 Ventoy 制作启动盘时有个容易忽略的点:U 盘会被格式化,制作之前一定要先备份里面的文件。制作完成后,你可以把 Windows 的安装 ISO 也放进去,这样一个 U 盘既能装 Linux 又能装 Windows,非常实用。对了,刻录的时候用默认的 GPT 分区格式,配合 UEFI 引导,绝大部分新机器都能顺利启动。
2.3 关闭快速启动和安全启动
Windows 10 默认开启一个叫“快速启动”的功能,它本质上不是真正的关机,而是把系统内核会话保存到硬盘上的休眠文件里,下次开机时直接恢复,所以开机很快。但这对双系统是个麻烦:当你从 Linux 重启进入 Windows 时,Windows 可能会因为休眠状态锁住系统分区,导致 Linux 无法写入或正确读取挂在同一个磁盘上的 NTFS 分区。
解决办法就是在 Windows 设置里关闭快速启动。步骤:控制面板 → 电源选项 → 选择电源按钮的功能 → 更改当前不可用的设置 → 取消勾选“启用快速启动”。如果你找不到这个选项,说明你的电脑本来就没开该功能,也可以跳过。
然后是 Secure Boot(安全启动)。这项技术用来防止恶意软件在启动阶段劫持引导程序,但它的副作用是:某些 Linux 发行版的引导程序因为签名问题无法通过验证,导致启动不了。Ubuntu 官方的新版本基本是兼容 Secure Boot 的,但我个人的经验是,为了减少不必要的麻烦,还是建议在 BIOS 里先把 Secure Boot 关掉。不同主板的 BIOS 界面不一样,一般在“Security”或“Boot”选项卡下面能找到,把状态改成 Disabled 就行。
2.4 确认 UEFI 还是 Legacy,别等装完才发现
前面反复提到 UEFI 和 GPT,实际操作时你该怎么判断自己电脑的当前模式?很简单,Win+R 打开“运行”,输入 msinfo32 回车,在“系统概要”里找到“BIOS 模式”,如果是“UEFI”,那你走的就是 UEFI 引导;如果是“传统”,说明 BIOS 里可能设置成了 Legacy。
知道这个信息的意义在于,它会直接决定你制作启动盘的格式和对分区的操作方式。UEFI 模式下,你需要给 Linux 指定一个类型为 “EFI 系统分区” 的挂载点(通常是 /boot/efi),有些教程会忽略这一步,导致装完开机直接黑屏。
还要特别注意:之前用 Ventoy 制作的启动盘,在启动时会自动判断当前机器是 UEFI 还是 Legacy。如果你发现 U 盘在 UEFI 模式下无法启动,常常是 Secure Boot 没关,或者 Ventoy 版本太旧,升级 Ventoy 到最新版就能解决。
3. 安装全流程:从 U 盘启动到进入 Ubuntu
3.1 进入安装器与 Live 环境检查
把启动盘插上,重启电脑。开机时按特定快捷键进入启动菜单(不同品牌不太一样,华硕是 F8,技嘉是 F12,联想是 F12,戴尔是 F12,微星是 F11,部分 HP 是 F9,记不住的话就直接进 BIOS 把 U 盘设为第一启动项)。从 Ventoy 菜单里选你的 Linux ISO,回车,进入系统。
这时你会先进入一个 Live 环境,就是不用安装就能直接用的 Linux 系统。很多人不理解为什么要先进去转一圈再安装,其实这一步特别重要。你可以先看看无线网卡能不能正常工作、触摸板能不能用、屏幕分辨率对不对,如果连 Live 环境都有各种硬件问题,那装完也是一样的问题,提前发现可以尽早排查。
Live 环境里双击桌面的“安装 Ubuntu”图标就开始真正的安装了。安装器会让我们选择语言、时区、键盘布局,这些按自己情况填就行。重点在“安装类型”这一步,千万别选错。
3.2 手动分区,别贪便宜选自动安装
“安装类型”里有两个常见选项:一个是“清除整个磁盘并安装 Ubuntu”,另一个是“与 Windows 共存”。我的建议是,除非你用的是独立硬盘装 Linux,否则不要用“清除整个磁盘”——它会把你整个硬盘内容全抹掉。而“与 Windows 共存”这个选项虽然在简单场景下能用,但它自动调整分区时往往不够合理,后面想改很麻烦,不如手动分区。
选择“其他选项”,进入手动分区界面。你会看到硬盘的几个分区,包括 NTFS 格式的 Windows 系统分区和一个 EFI 系统分区。如果你不确定 EFI 分区是哪个,就看分区类型列,一般写着“EFI 系统分区”或者文件系统是 FAT32、大小在 100MB 到 500MB 之间,那就是它。
在空闲空间上,一般我们手动创建以下分区:
| 挂载点 | 建议大小 | 文件系统 | 说明 |
|---|---|---|---|
| /boot/efi | 复用已有 EFI 分区 | FAT32 | 不要把已有 EFI 分区格式化,选它挂载即可 |
| swap | 4GB 到 8GB | swap | 内存大可以不设,或用 swapfile 替代 |
| / | 50GB 及以上 | ext4 | 系统根目录,所有软件装这里 |
| /home | 剩余空间 | ext4 | 个人数据存放,可选但强烈建议 |
为什么说要给你的 Linux 系统根目录留足 50GB?因为现代软件生态很占空间,光是装几个开发环境、浏览器、聊天工具,轻轻松松就 20GB 出去了。如果你还要在 Linux 下做深度学习,模型文件和数据集动辄几十 GB,根分区不够的话很快就满了。想省事的话,把剩余空间直接分配给 / 也行,但这样如果系统出问题重装,个人数据也都一起被清掉。分一个 /home 的好处是,以后系统重装时只要重新挂载 /home,个人数据都还在。
我比较推荐 512GB 固态硬盘的用户这样分:/ 分配 100GB,swap 分配 8GB,剩余全部给 /home。如果你预算充足用了 1TB 硬盘,那 / 可以直接给到 200GB,用起来更从容。关于 swap,如果你的电脑内存已经 16GB 以上了,其实 8GB 的 swap 已经绰绰有余,除非你需要休眠功能,才需要让 swap 不小于内存大小。
3.3 安装后第一次重启,先干这几件事
分区设置好之后,确认一下引导程序安装的位置。默认情况下,Ubuntu 安装器会把 GRUB 写到你已经挂载的 EFI 分区里,一般情况下不需要改。但如果你之前对分区做过奇怪的骚操作,比如除了 EFI 分区之外又建了一个 F 盘当 /boot,那可能需要手动选择引导安装的设备。不懂就直接保持默认。
安装完成后重启,拔掉 U 盘,你会看到 GRUB 菜单。菜单里大概率有两个条目:一个是 Ubuntu,另一个是 Windows Boot Manager。默认会选中 Ubuntu,如果几秒内没操作,就会直接进 Ubuntu。
第一次进入 Ubuntu 后,别急着瞎折腾,先做以下几件事:第一,打开软件更新器,把系统更新完整,这个过程可能比较久,但一定要做,新版内核和驱动补丁对稳定性影响很大;第二,确认显卡驱动是否需要额外安装,如果你的机器有独立显卡,默认可能用的是开源驱动,性能不一定发挥得出来,去“软件和更新 → 附加驱动”里切换成专有驱动并应用;第三,测试一下声音、Wi-Fi、蓝牙、摄像头是否都正常工作,有问题的话先查驱动,大部分问题都可以通过加装对应固件包解决。
4. 常见问题与排查技巧实录
4.1 开机直接进 Windows,看不到 GRUB 菜单
装入 Linux 后重启,发现直接进了 Windows 桌面,仿佛 Linux 根本没装过。这种情况非常常见。一部分原因是 BIOS 的启动顺序里,Windows Boot Manager 排在 GRUB 前面,开机时电脑先去 Windows 的引导目录看一眼,发现能引导就直接进系统了。
解决办法很简单:进 BIOS 设置,把启动项改成对应发行版的引导程序。一般来说,UEFI 模式下你有多个启动项,比如 “Ubuntu”“Windows Boot Manager”“U 盘”等,把 “Ubuntu” 排到第一位,开机就会进入 GRUB,然后从 GRUB 里再选 Windows。如果你找不到独立的 Ubuntu 启动项,可以稍等一会儿,看看 GRUB 是否真的被写入到 EFI 分区里,这时候就可能要用到 Boot-Repair 来修复。
Boot-Repair 是恢复 Linux 引导的招牌工具,对付引导丢失、引导顺序混乱非常有效。操作方法是:用启动 U 盘进入 Live 环境,联网后打开终端,执行:
sudo add-apt-repository ppa:yannubuntu/boot-repair sudo apt update sudo apt install boot-repair装完以后,在终端里输入 boot-repair 打开界面,直接点 “Recommended repair”,它会自动检测并修复 GRUB。修复完重启就能看到引导菜单了。有个容易被忽略的细节:跑 Boot-Repair 之前确认 Secure Boot 已经关闭,否则修复完可能依然起不来。
4.2 GRUB 菜单里看不到 Windows 选项
GRUB 能正常启动,但菜单里只有 Ubuntu,找不到 Windows。这种情况通常不是真的把 Windows 弄丢了,而是 GRUB 没有扫描到 Windows 的引导信息。
在 Ubuntu 终端里执行:
sudo update-grub这个命令会重新扫描系统里已安装的操作系统,并自动把 Windows Boot Manager 加到 GRUB 菜单里。如果 update-grub 之后还是没有 Windows,那就需要检查 Windows 的 EFI 引导文件是否还存在于 EFI 分区里。比较常见的场景是,你之前手贱格式化或删除了 EFI 分区里的某个文件夹,导致 Windows 的引导文件缺了。这时候就得用 Windows 安装 U 盘启动,进入命令行,运行 bootrec /fixmbr、/fixboot、/scanos 等命令修复 Windows 引导,然后回来再跑一次 update-grub。
这里我想特别强调:EFI 分区里不懂的文件千万别乱删。很多人为了清理空间,把看起来像垃圾文件的目录删掉,结果把引导文件一起删了,系统直接进了恢复模式。遇到这种情况,先用 Boot-Repair 或者 Windows 安装盘修复引导,洗心革面再战第二轮。
4.3 双系统时间总差八小时,怎么调都不对
这是一个特别经典的双系统问题。Linux 和 Windows 对硬件时钟(BIOS 里的时间)的理解不一样:Windows 把硬件时钟当作本地时间,Linux 默认把硬件时钟当作 UTC,然后通过时区换算成本地时间。结果就是你在两个系统切换时,时间要么快八小时要么慢八小时。
解决办法有两个方向:改 Windows 或者改 Linux。我更推荐改 Linux,因为 Windows 更新有时候会把注册表设置给重置,而 Linux 的命令行设置相对稳定。在 Ubuntu 终端里执行:
timedatectl set-local-rtc 1 --adjust-system-clock执行完可以再输入 timedatectl,确认 “RTC in local TZ: yes” 就成功了。下次再进入 Windows,时间就不会再有八小时的差了。
4.4 想把 Linux 删掉,恢复成纯 Windows 系统
双系统用久了想拆除的也不在少数。删除 Linux 这件事本身不难,难的是删完之后别把 Windows 的引导也一并干掉。完整流程分三步:备份数据、删除分区、修复引导。
首先,如果你有 /home 独立分区,进 Windows 前先确认里面没有重要数据。有的话提前在 Linux 里备份到移动硬盘。没有 /home 的更要留意,因为根目录挂载点会包含所有个人文件。
备份完成后,在 Windows 里右键“此电脑” → “管理” → “磁盘管理”,看到 Linux 的分区后,一个个选中右键删除卷。删除过程不会影响 Windows 分区,但前提是你别手滑把 Windows 恢复分区或 EFI 分区给删了。识别方式很简单,Linux 分区通常是 ext4 文件系统,Windows 里显示为“RAW”或“未分配”,EFI 分区和恢复分区则显示为 FAT32 或 NTFS。
删完分区之后,重启可能还是会进 GRUB,或者直接提示找不到引导。这时需要用 Windows 安装 U 盘进入修复环境。如果电脑是 UEFI 启动,打开命令行执行磁盘管理,找到 EFI 分区,给它分配盘符,然后进入 EFI 文件夹删掉 ubuntu 目录:
diskpart list disk select disk 0 list vol找到文件系统是 FAT32、大小一般在 100MB-500MB 的 EFI 分区,记下它的卷号,然后:
select vol 5 assign letter=Z exit cd /d Z:\EFI rmdir /s ubuntu如果电脑是 Legacy 引导,那就简单很多,直接在修复命令行里执行 bootrec /fixmbr 和 bootrec /fixboot 就行。
4.5 想把 Linux 设为默认启动项,怎么改顺序
双系统装好以后,如果你主要工作环境已经切换到 Linux 了,那每次开机停在 GRUB 等好几秒,或者在 GRUB 里手动选 Ubuntu,会有点烦。改默认启动项其实不复杂。
最干净的做法是编辑配置文件:
sudo nano /etc/default/grub找到 GRUB_DEFAULT 这一行。如果只想要 Ubuntu 默认,把值保留为 0 就行;如果想让 Windows 变成默认,就需要知道 Windows 在 GRUB 菜单里的实际序号。GRUB 菜单从 0 开始计数,你可以在启动时看菜单从上往下数。比如第一个是 Ubuntu,第二个是 Windows Boot Manager,那 Windows 的序号就是 1,设置 GRUB_DEFAULT=1。除了直接写数字,还可以设置成 saved,然后用 grub-set-default 指定默认项。修改完执行:
sudo update-grub有时候调整序号特别费劲,毕竟每次还要数一数。这里推荐一个更可视化的工具:grub-customizer。安装后直接打开,里面会列出 GRUB 菜单的所有条目,你可以拖动上下顺序,设置默认项和等待时间,改完保存即可。不过提醒一句,grub-customizer 在部分系统上会覆盖 GRUB 的自动配置,用的时候稍微留意一下,别和其他引导工具同时用。
表格式地总结一下这些问题的排查方向和工具,方便你按图索骥:
| 症状 | 原因分析 | 首选手法 |
|---|---|---|
| 开机直接进 Windows | BIOS 启动顺序把 Windows 排在 GRUB 前 | 进 BIOS 调整启动项顺序 |
| GRUB 里没有 Windows | GRUB 配置过期 | sudo update-grub |
| 进 Windows 出现蓝屏提示 | Linux 动了快速启动锁定的分区 | 关闭 Windows 快速启动 |
| 时间差八小时 | 硬件时钟时区解释不一致 | timedatectl set-local-rtc 1 |
| Boot-Repair 修复无效 | Secure Boot 未关闭 | 关闭 Secure Boot 后再执行修复 |
| 删除 Linux 后进不去 Windows | EFI 分区里的 ubuntu 目录还在 | 删除 ubuntu 目录并修复 EFI 引导 |
4.6 启动菜单太暗看不清?顺手解决一下
不少朋友遇到过这样的问题:开机进入 GRUB 界面,背景黑漆漆的,菜单文字又小又暗,看起来非常费劲。这个问题通常出在 GRUB 的默认主题上,可能是分辨率设置不对,或者显卡驱动影响了文字渲染。
解决办法有几个,最简单的在 GRUB 界面按 C 进入命令行,输入 videoinfo 查看支持的分辨率,然后把支持的分辨率写进配置里:
sudo nano /etc/default/grub把 GRUB_GFXMODE 设为比如 1920x1080,再把 GRUB_GFXPAYLOAD_LINUX 也设置成对应分辨率,然后 update-grub。如果你还嫌菜单不够好看,可以安装 GRUB 主题,网上有很多开源主题包,下载后放到 /boot/grub/themes 下,再在配置文件里指定 GRUB_THEME 路径即可。
5. 一些值得收藏的操作习惯
装好双系统只是起点,日常使用中有几个小习惯能让你少踩很多坑。第一,定期备份重要数据,尤其是 /home 下的内容。双系统虽然稳定,但引导区和分区表出问题的时候,数据恢复难度比普通 Windows 系统高不少。第二,Windows 和 Linux 文件互访时,优先通过 Windows 侧的 NTFS 分区读写,Linux 侧用 NTFS-3G 驱动访问 Windows 分区时,要避免两边同时写同一个文件,否则可能出现文件锁死甚至损坏。第三,别频繁折腾 EFI 分区和引导项,除非你真的知道自己在做什么,否则一不小心系统就起不来了。
我个人的体会是,双系统装好之后,最关键的其实是心平气静地接受“切换需要重启”这个事实。它不像虚拟机那样无缝,但换来的是实实在在的性能和兼容性。装过几次以后,你会发现每一步的原理都相通,以后不管是帮朋友装、还是换发行版重装,都能驾轻就熟。最后再分享一个小技巧:装完系统后,用 U 盘把当前硬盘的分区表信息导出一份,放在安全的地方。将来万一分区表损坏,可以用它辅助恢复,能省不少事。
说到底,win10 下安装 Linux 双系统并不神秘,就是一个按流程执行、逐步验证的过程。只要你理解了引导方式、分区和后处理,这套方法论可以复制到任何 Linux 发行版上。希望这篇文章能帮你少走一些弯路。