
1. 为什么我劝你装双系统前先把这几个概念吃透很多人第一次装双系统都是被一台电脑同时用Windows和Linux这个念头勾起了兴趣。但真正动手的时候往往卡在第一步——连自己电脑的启动方式是什么都没搞清楚就开始分区、做U盘、点下一步结果要么装完进不去系统要么Windows引导没了要么分区表被搞乱。我自己第一次装Ubuntu双系统的时候就把一块移动硬盘的数据全弄丢了原因很简单没搞明白UEFI和Legacy的区别也没确认分区表到底是GPT还是MBR。这篇内容就是把我这些年装过的几十台双系统机器的经验从零开始完整梳理一遍。不管你是刚买的新笔记本还是几年前的老台式机只要你想在Windows基础上再装一个Linux发行版以Ubuntu为例其他发行版逻辑类似跟着这个流程走基本可以做到零翻车。核心关键词就几个Windows、Linux、双系统、UEFI、Ubuntu把这五个词背后的关系理清楚后面所有操作都是顺水推舟。先说清楚这套流程适合谁完全没装过系统的新手、装过一次但失败了的半新手、以及想把自己旧电脑利用起来跑Linux开发环境的程序员。不适合谁只想在虚拟机里体验一下的人那种直接装VMware或VirtualBox就行不用折腾分区。双系统的价值在于原生性能和硬件直通虚拟机给不了你完整的GPU加速和磁盘IO跑编译、跑容器、跑深度学习差距非常明显。在动手之前你需要准备的东西其实不多一个8GB以上的U盘会被格式化提前备份、Ubuntu的ISO镜像文件、以及至少50GB的未分配磁盘空间。但比这些实物更重要的是下面这几个概念你必须先弄明白否则后面每一步都可能踩坑。1.1 UEFI和Legacy到底有什么区别为什么它决定了你的分区方式UEFI全称是统一可扩展固件接口你可以把它理解成BIOS的升级版。老电脑用的是Legacy BIOS启动方式新电脑大概2012年之后基本都是UEFI。这两者的区别不是新旧这么简单而是直接决定了你的硬盘分区表格式和引导方式。Legacy BIOS配的是MBR分区表硬盘最多支持4个主分区单个分区最大2TB。UEFI配的是GPT分区表主分区数量几乎不受限制单分区容量可以到18EB实际用不到这么大。更关键的是UEFI启动需要一个专门的EFI系统分区ESP通常是FAT32格式大小100MB到500MB不等Windows和Linux的引导文件都放在这里。为什么这个概念重要因为如果你在UEFI模式下装了一个Legacy模式的系统或者反过来结果就是其中一个系统根本进不去。我见过太多人装完Ubuntu之后开机直接进Windows连GRUB引导菜单都看不到就是因为两个系统的启动模式不一致。怎么确认自己电脑的启动方式在Windows里按WinR输入msinfo32看BIOS模式这一行。显示UEFI就是UEFI启动显示传统就是Legacy。同时按WinX打开磁盘管理右键你的系统盘看属性在卷标签页里看分区样式显示GPT还是MBR。注意如果你的Windows是UEFIGPT装的那Ubuntu也必须用UEFIGPT装。这是铁律不要试图混搭。1.2 分区表GPT和MBR选错了后面全是坑分区表这个东西你可以把它想象成书的目录。MBR是老的目录格式只能记4条主记录GPT是新的目录格式能记128条而且每条都有备份。Windows在UEFI模式下必须装在GPT磁盘上在Legacy模式下必须装在MBR磁盘上。这里有个常见的报错无法安装Windows因为这台电脑的磁盘布局不受UEFI支持。这个错误出现的原因就是你的磁盘是MBR格式但你在用UEFI模式启动安装盘。解决办法要么是把磁盘转成GPT会清空数据要么是进BIOS把启动模式改成Legacy。对于双系统来说我强烈建议统一用UEFIGPT。原因有三个第一新硬件基本都默认UEFI强行改Legacy反而可能遇到驱动问题第二GPT支持更大的磁盘和更多的分区以后扩展方便第三UEFI启动速度更快而且支持安全启动虽然装Linux时通常要关掉。怎么查看自己的磁盘是GPT还是MBR除了上面说的磁盘管理方法还可以用命令行按WinX选Windows终端管理员输入diskpart然后list disk看Gpt那一列有没有星号。有星号就是GPT没有就是MBR。1.3 引导程序GRUB是怎么接管两个系统的GRUB是Linux下最常用的引导程序全称GRand Unified Bootloader。装完Ubuntu之后GRUB会接管整个启动流程开机时给你一个菜单让你选进Ubuntu还是Windows。它的工作原理是这样的UEFI固件先读取ESP分区里的引导文件Ubuntu安装时会把自己的引导文件grubx64.efi放到ESP分区的EFI/ubuntu/目录下同时把Windows的引导文件bootmgfw.efi路径记录到GRUB配置里。开机时UEFI执行GRUBGRUB再根据配置显示菜单你选哪个就加载哪个系统的内核。这里最容易出问题的地方是Windows更新有时候会修复引导把ESP分区里的默认引导项改回Windows Boot Manager导致开机直接进WindowsGRUB菜单消失。这不是GRUB坏了只是UEFI的启动顺序被改了。解决办法有两个一是进BIOS把Ubuntu调到启动顺序第一位二是用bcdedit或者efibootmgr命令调整。提示装完双系统后建议第一时间进BIOS确认启动顺序把Ubuntu或者显示为GRUB、ubuntu放在Windows Boot Manager前面。2. 装系统前的准备工作磁盘、U盘、BIOS一个都不能少准备工作做得好装系统就成功了一半。我见过太多人因为U盘没做好、磁盘没留够、BIOS没设置对导致安装过程中各种报错。这一章把每个准备环节拆开讲包括具体的操作步骤和背后的原理。2.1 磁盘空间怎么留压缩卷的正确姿势如果你打算在现有Windows的基础上装Ubuntu第一步就是从Windows的磁盘里切一块空间出来。这个操作在Windows自带的磁盘管理里就能完成不需要第三方工具。具体步骤按WinX选磁盘管理找到你的系统盘通常是C盘右键选压缩卷。系统会先查询可压缩空间然后弹出一个对话框让你输入要压缩的大小。这里有个关键点压缩出来的空间不要格式化也不要分配盘符保持未分配状态就行Ubuntu安装程序会自动识别并使用这块空间。压缩多少合适Ubuntu系统本身大概需要25GB加上你后面要装的软件、下载的文件、编译的代码我建议至少留80GB。如果你要跑深度学习或者大型项目留150GB以上。注意压缩卷能压缩的最大值受限于磁盘上文件的分布情况有时候你明明有200GB空闲但只能压缩出50GB这是因为文件碎片挡住了。解决办法是用磁盘碎片整理工具整理一下或者用第三方分区工具如DiskGenius来调整。注意压缩卷之前一定要备份重要数据。虽然这个操作本身是安全的但任何涉及分区的操作都有意外风险尤其是磁盘有坏道或者文件系统有问题的时候。还有一个细节如果你的Windows是用BitLocker加密的压缩卷之前必须先解密或者暂停BitLocker否则Ubuntu安装程序看不到磁盘内容。检查方法在此电脑里看C盘图标有没有一把锁有的话就是加密了。2.2 制作Ubuntu启动U盘Rufus和Ventoy怎么选制作启动U盘的工具很多Windows下最常用的是Rufus和Ventoy。这两个工具我都用过很多次各有优劣。Rufus的特点是简单直接打开软件、选ISO、点开始几分钟就做好。它支持UEFI和Legacy两种模式分区类型可以选GPT或MBR。用Rufus做出来的U盘一个U盘只能装一个系统。Ventoy的特点是一次制作多次使用。你只需要用Ventoy把U盘格式化一次之后直接把ISO文件复制到U盘里就行想装哪个系统就复制哪个ISO。而且Ventoy支持同时放多个ISO开机时给你一个菜单选择。如果你经常装系统Ventoy会方便很多。具体操作以Rufus为例插入U盘打开Rufus软件会自动识别到U盘在引导类型选择里点选择找到你下载的Ubuntu ISO文件分区类型选GPT目标系统类型选UEFI非CSM文件系统保持默认的FAT32簇大小默认点开始等待进度条走完Ubuntu ISO从哪里下载官网是ubuntu.com/download/desktop选LTS版本长期支持版比如22.04 LTS或24.04 LTS。LTS版本每两年发布一次支持5年稳定性最好。不要下载非LTS的中间版本那些只支持9个月不适合长期使用。提示下载完ISO之后建议校验一下SHA256值确保文件没有损坏。Windows下可以用certutil -hashfile 文件名 SHA256命令来校验。2.3 BIOS设置关掉Secure Boot和Fast Startup这一步是很多新手翻车的地方。Windows 10和Windows 11默认开启了快速启动Fast Startup这个功能会让Windows关机时不完全关闭而是进入一种休眠状态。这会导致Ubuntu安装程序无法正确识别磁盘或者装完之后Windows分区变成只读。关闭方法控制面板 → 电源选项 → 选择电源按钮的功能 → 更改当前不可用的设置 → 取消勾选启用快速启动。这个操作在Windows里完成不需要进BIOS。Secure Boot安全启动是UEFI的一个安全特性它会验证引导程序的签名防止恶意软件。但Ubuntu的引导程序默认没有微软的签名虽然Ubuntu官方做了签名但有些第三方驱动没有所以装Ubuntu时通常需要关闭Secure Boot。进BIOS的方法因品牌而异联想通常是F2或FnF2戴尔是F2惠普是F10华硕是F2或Del宏碁是F2。开机时狂按对应按键就行。进BIOS后找到Secure Boot选项设为Disabled。同时确认Boot Mode是UEFI不是Legacy或CSM。注意有些电脑关闭Secure Boot后Windows的BitLocker会要求输入恢复密钥。如果你开启了BitLocker关闭Secure Boot之前先备份好恢复密钥否则可能进不去Windows。另外如果你用的是较新的笔记本可能还需要在BIOS里把SATA模式从RAID改成AHCI否则Ubuntu安装程序可能看不到硬盘。这个选项通常在Storage或SATA Operation里。改之前要注意如果Windows是在RAID模式下装的改成AHCI后Windows可能蓝屏需要先做相应处理。3. Ubuntu安装全流程从启动U盘到进入桌面准备工作做完就可以开始正式安装了。这一章把安装过程拆成几个阶段每个阶段的关键点和容易出错的地方都会标出来。3.1 从U盘启动怎么进启动菜单插入做好的U盘重启电脑。开机时按启动菜单键不同品牌不一样联想F12戴尔F12惠普F9华硕Esc或F8宏碁F12选择从U盘启动。如果按不出来就进BIOS把U盘调到启动顺序第一位。进入Ubuntu启动菜单后会看到几个选项Try or Install Ubuntu、Ubuntu (safe graphics)等。正常情况下选第一个就行。如果你的显卡比较新比如NVIDIA RTX 40系可能会遇到黑屏或者花屏这时候选safe graphics模式它会用兼容性更好的驱动启动。启动过程中如果卡住可以在启动菜单按e编辑启动参数在linux那一行末尾加上nomodeset然后按F10启动。这个参数会禁用内核的显卡驱动用最基本的显示模式虽然分辨率会低一点但至少能进安装界面。3.2 安装类型选择手动分区还是自动进入安装程序后前面几步语言、键盘布局、网络按提示走就行。最关键的一步是安装类型选择。Ubuntu会给你几个选项清除整个磁盘并安装Ubuntu这会格式化整个硬盘Windows也没了。除非你就是要单系统否则不要选。与Windows Boot Manager共存这是自动分区Ubuntu会自动在未分配空间里创建分区。新手可以用这个但我不推荐因为它不会让你控制分区大小和布局。其他选项手动分区。这是我要重点讲的也是双系统安装的核心。选其他选项后你会看到磁盘分区列表。找到之前压缩出来的空闲空间选中它点号创建分区。Ubuntu至少需要两个分区EFI系统分区如果你已经有Windows创建的ESP分区通常是100MB到500MB的FAT32分区不需要新建Ubuntu会自动复用。如果没有新建一个大小512MB类型选EFI。根分区/这是Ubuntu的系统盘相当于Windows的C盘。大小建议50GB以上类型选Ext4挂载点选/。交换分区swap可选。如果你的内存小于8GB建议创建一个和内存大小差不多的swap分区。内存大于16GB的话可以不用swap或者用swap文件代替。类型选交换空间。家目录分区/home可选但推荐。把用户数据单独放一个分区以后重装系统时数据不会丢。大小根据你的需求定类型Ext4挂载点/home。分区方案没有绝对的对错我自己的习惯是512MB EFI 80GB根分区 剩余空间给/home 16GB swap。这样重装系统时只需要格式化根分区/home里的数据、配置都保留。注意分区时一定要看清楚设备名别把Windows的分区给格式化了。Windows的系统盘通常是/dev/nvme0n1p3或/dev/sda3这样的名字Ubuntu要装在你新创建的分区上。分不清的话看分区大小和文件系统类型NTFS的基本都是Windows的。3.3 安装过程中的关键选项别选错分区确认后安装程序会问你将引导程序安装到哪个设备。默认是/dev/nvme0n1或/dev/sda也就是整块硬盘不要改成某个分区。GRUB需要装在硬盘的EFI分区里选整块硬盘是对的。接下来是时区、用户信息设置。用户名建议用英文小写不要用中文或特殊字符否则后面终端里会各种麻烦。密码设置得复杂一点但自己要记得住因为sudo操作经常要输密码。安装过程大概需要10到30分钟取决于你的硬盘速度。安装完成后会提示重启重启时拔掉U盘否则可能又从U盘启动了。重启后如果看到GRUB菜单里面有Ubuntu和Windows Boot Manager两个选项恭喜你双系统装好了。如果直接进了Windows说明启动顺序不对进BIOS把Ubuntu调到第一位。如果两个都进不去那就是引导出问题了下一章专门讲怎么修。4. 装完之后的收尾工作驱动、输入法、常用软件系统装好只是开始真正让Ubuntu好用起来还需要做一些配置。这一章讲几个最影响日常使用体验的配置项。4.1 显卡驱动NVIDIA用户必看Ubuntu默认使用开源的Nouveau驱动这个驱动对NVIDIA显卡的支持很有限表现为分辨率不对、发热大、外接显示器不工作。如果你用的是NVIDIA显卡装完系统后第一件事就是装官方驱动。最简单的方法是在软件和更新 → 附加驱动里选择带有proprietary字样的NVIDIA驱动版本点应用更改等它下载安装完重启。命令行方法更可控先ubuntu-drivers devices查看推荐的驱动版本然后sudo apt install nvidia-driver-版本号。装完后nvidia-smi能显示显卡信息就说明成功了。注意装NVIDIA驱动之前最好先更新一下系统sudo apt update sudo apt upgrade。另外如果你用的是较新的显卡比如RTX 40系可能需要添加显卡驱动的PPA源才能装到最新版驱动。AMD显卡和Intel核显的用户基本不用操心开源驱动已经足够好用。4.2 中文输入法fcitx5配置指南Ubuntu默认的输入法框架是IBus中文输入法体验一般。我推荐换成fcitx5配合拼音输入法体验接近Windows下的搜狗。安装步骤sudo apt install fcitx5 fcitx5-chinese-addons fcitx5-frontend-gtk3 fcitx5-frontend-qt5然后在语言支持里把输入法系统改成fcitx5重启。重启后在fcitx5配置里添加拼音输入法。按Ctrl空格切换中英文。如果遇到某些应用里输入法不工作比如VS Code、Chrome需要设置环境变量。在~/.pam_environment或/etc/environment里加上GTK_IM_MODULEfcitx QT_IM_MODULEfcitx XMODIFIERSimfcitx然后重启。4.3 常用软件安装Docker、Git、开发工具Ubuntu的软件生态和Windows不太一样很多软件需要通过命令行安装。这里列几个开发常用的Gitsudo apt install git git config --global user.name 你的名字 git config --global user.email 你的邮箱Dockersudo apt install docker.io sudo systemctl enable --now docker sudo usermod -aG docker $USER最后一条命令是把当前用户加入docker组这样不用每次sudo。执行完要重新登录才生效。编译工具链sudo apt install build-essential cmakeVS Code从官网下载deb包然后sudo dpkg -i 文件名.deb。如果提示依赖问题执行sudo apt install -f修复。解压工具Ubuntu默认的归档管理器对某些中文压缩包支持不好会出现乱码。安装unzip和p7zip-full可以解决大部分问题sudo apt install unzip p7zip-full解压时用unzip -O CP936 文件名.zip指定中文编码就不会乱码了。5. 双系统引导修复一个系统坏了怎么救另一个双系统最让人头疼的就是引导问题。Windows更新、Ubuntu内核升级、BIOS重置都可能导致引导菜单消失。这一章讲几种常见情况的修复方法。5.1 Windows引导丢了怎么修如果开机直接进UbuntuGRUB菜单里没有Windows选项说明GRUB没有检测到Windows的引导文件。修复方法在Ubuntu终端里执行sudo update-grubGRUB会重新扫描所有磁盘找到Windows Boot Manager并加入菜单。如果update-grub也找不到可能是Windows的EFI文件损坏了。这时候需要进Windows修复。用Windows安装U盘启动选修复计算机 → 疑难解答 → 命令提示符依次执行bootrec /fixmbr bootrec /fixboot bootrec /scanos bootrec /rebuildbcd这几条命令会重建Windows的引导记录。执行完后重启应该能进Windows了。但GRUB菜单可能又没了需要再用Ubuntu U盘启动用efibootmgr或者boot-repair工具修复GRUB。5.2 Ubuntu引导丢了怎么修如果开机直接进WindowsGRUB菜单完全不出现说明UEFI的启动顺序被改了或者GRUB的EFI文件被删了。先检查启动顺序进BIOS看Boot Order里有没有Ubuntu。有的话调到第一位就行。没有的话说明GRUB的EFI文件可能被Windows更新覆盖了。修复方法用Ubuntu安装U盘启动选Try Ubuntu进入Live环境然后sudo add-apt-repository ppa:yannubuntu/boot-repair sudo apt update sudo apt install boot-repair boot-repairBoot-Repair是一个图形化工具选推荐修复就行它会自动检测并修复GRUB。修复完成后重启GRUB菜单应该回来了。提示Boot-Repair也可以修复Windows引导但它的强项是修GRUB。如果Windows引导也坏了建议先用Windows安装盘修Windows再用Boot-Repair修GRUB。5.3 用efibootmgr手动管理启动项efibootmgr是Linux下管理UEFI启动项的命令行工具比进BIOS方便。常用命令查看当前启动项efibootmgr -v输出里会列出所有启动项比如Boot0000* Windows Boot Manager、Boot0001* ubuntu。前面的数字是启动项编号星号表示当前激活。调整启动顺序sudo efibootmgr -o 0001,0000这条命令把ubuntu0001调到Windows0000前面。删除启动项sudo efibootmgr -b 0002 -B删除编号0002的启动项。如果Ubuntu的启动项完全消失了可以手动创建sudo efibootmgr -c -d /dev/nvme0n1 -p 1 -L ubuntu -l \EFI\ubuntu\grubx64.efi这条命令在/dev/nvme0n1的第一分区ESP分区里创建一个名为ubuntu的启动项指向GRUB的EFI文件。6. 常见问题速查与避坑经验装双系统这些年我遇到过各种各样的问题。这一章把最常见的问题整理成速查表附上排查思路和解决方法。6.1 安装过程中常见报错报错信息原因解决方法无法安装Windows因为这台电脑的磁盘布局不受UEFI支持磁盘是MBR但用UEFI启动转GPT或改Legacy启动您所选的分区表可能不正确分区表与启动模式不匹配确认UEFIGPT或LegacyMBR安装程序无法识别磁盘快速启动未关或SATA模式不对关快速启动改AHCI黑屏/花屏显卡驱动问题加nomodeset参数启动安装卡在正在复制文件硬盘有问题或U盘质量差换U盘或检查硬盘健康6.2 装完后的常见问题问题一开机直接进Windows没有GRUB菜单。排查进BIOS看启动顺序Ubuntu是否在第一位。如果不在调上去。如果BIOS里根本没有Ubuntu选项说明GRUB的EFI文件丢了用Boot-Repair修复。问题二GRUB菜单里没有Windows选项。排查在Ubuntu里执行sudo update-grub。如果还不行检查Windows的ESP分区是否挂载ls /boot/efi/EFI/看有没有Microsoft目录。问题三Windows时间不对和Ubuntu差8小时。原因Windows把硬件时钟当本地时间Ubuntu当UTC。解决方法在Ubuntu里执行timedatectl set-local-rtc 1让Ubuntu也用本地时间。或者在Windows注册表里改让Windows用UTC。问题四Ubuntu里访问Windows分区需要密码。原因Windows开启了快速启动分区处于休眠状态。解决方法关掉Windows快速启动或者在Ubuntu里用ntfsfix修复。问题五外接显示器不工作。原因NVIDIA驱动没装好。解决方法装官方驱动或者在BIOS里把显卡模式改成独显直连。6.3 我踩过的几个坑第一个坑没关快速启动就装Ubuntu。结果装完后Windows分区变成只读里面文件改不了。后来才知道是快速启动导致的关掉之后正常。第二个坑分区时选错了设备。把Windows的恢复分区给格式化了虽然不影响使用但Windows的恢复功能没了。教训是分区前一定要看清楚设备名和分区大小。第三个坑Secure Boot没关。装完Ubuntu后第三方驱动比如WiFi驱动加载不了因为签名验证不通过。关掉Secure Boot后解决。第四个坑用Ventoy做的U盘在某些老电脑上启动不了。Ventoy对老BIOS的兼容性不如Rufus后来换Rufus重新做了一遍就好了。第五个坑Ubuntu升级内核后GRUB菜单消失。原因是新内核的引导文件没正确写入ESP分区。用Boot-Repair修复后正常。后来我养成了习惯每次内核升级后都检查一下/boot/efi/EFI/ubuntu/目录下的文件是否完整。6.4 双系统日常使用建议用了几年双系统我总结了几条经验不要在两个系统里同时挂载同一个NTFS分区并写入。虽然Linux的NTFS驱动已经比较成熟但并发写入仍然可能导致文件系统损坏。定期备份ESP分区。ESP分区很小但很重要坏了两个系统都进不去。用dd命令备份sudo dd if/dev/nvme0n1p1 ofesp_backup.img。Windows大版本更新前先确认GRUB能正常引导。Windows 10升级到Windows 11、或者年度大更新都有可能覆盖ESP分区里的引导文件。Ubuntu的/home分区单独分出来。这样重装系统时只需要格式化根分区个人数据和配置都保留。如果硬盘空间紧张可以用swap文件代替swap分区。Ubuntu 22.04之后默认就是用swap文件性能差别不大但调整大小更灵活。最后再分享一个小技巧如果你经常需要在两个系统之间传文件可以在Windows里创建一个NTFS格式的共享分区两个系统都能读写。但记得在Ubuntu里挂载时加上uid和gid参数否则文件权限会乱。挂载命令大概是这样的sudo mount -t ntfs-3g -o uid1000,gid1000,dmask022,fmask133 /dev/nvme0n1p5 /mnt/share其中uid1000是你的用户ID可以用id命令查看。dmask和fmask控制目录和文件的权限掩码。