Windows与Ubuntu双系统安装完全指南:从分区到引导修复

发布时间:2026/9/14 15:39:02
Windows与Ubuntu双系统安装完全指南:从分区到引导修复 你有没有过这种经历电脑上Windows用得好好的但为了跑Linux环境又不想舍弃日常使用的系统最后在某个深夜一边查教程一边瑟瑟发抖地给硬盘分区我帮朋友装过不下十次Ubuntu和Windows的双系统从最早的BIOSMBR时代一路装到现在UEFIGPT时代踩过的坑估计够写一本书了。这篇文章就是把那些坑全部摊开来讲。我会从最基础的准备工作开始一直讲到装完系统后的日常维护包括启动顺序修改、引导修复、时间同步这类装了以后大概率会遇到的问题。不管你是程序员需要在Ubuntu下写代码还是学生党做实验要用Linux或者纯粹想体验一下开源系统这篇教程都能让你少走弯路。先说清楚一个原则双系统安装最怕的不是操作复杂而是不懂每一步背后的原理。你只要理解了UEFI引导是怎么回事、EFI分区里到底存了什么后面遇到任何问题都能自己推演出来而不是只会照着教程点下一步。1. 装之前先想清楚双系统真的是最优解吗1.1 双系统、虚拟机、WSL的取舍很多人在装双系统之前没有认真想过一个问题我到底为什么需要Linux环境不同的需求对应完全不同的方案选错了只会浪费时间。方案优势劣势适合场景双系统硬件性能完全释放图形界面流畅切换系统需要重启两个系统占磁盘空间深度学习训练、机器人开发、日常主力系统切换虚拟机VMware/VirtualBox随时切换不用重启快照回滚方便性能损耗明显USB设备透传偶尔出问题轻度使用、测试环境、学习Linux命令WSL2启动快、与Windows文件系统互通不支持部分硬件直通GUI支持有限Web开发、命令行操作、Docker实验我个人经验是如果你只是跑跑Python脚本、用Git提交代码、或者玩一下DockerWSL2就够了没必要折腾双系统。但如果你要搞ROS机器人开发、要用CUDA跑深度学习、或者需要Linux下的实时内核那老老实实装双系统——虚拟机的性能损耗和硬件兼容问题会让你崩溃的。1.2 硬件检查与固件确认装双系统前务必确认三件事任何一件不满足都可能装到一半翻车。第一你的Windows系统是UEFI启动还是Legacy BIOS启动。怎么查WinR输入msinfo32打开系统信息看BIOS模式这一项。现在主流电脑都是UEFI如果你还在用Legacy模式老电脑后面分区方案要有所不同。这篇教程以UEFIGPT为准——这是目前99%新电脑的配置。第二Secure Boot安全启动的状态。Windows 8之后出厂电脑默认开启Secure Boot而Ubuntu 22.04及之后的版本对Secure Boot的兼容性已经做得很好可以不用关闭直接安装。但如果你遇到启动介质无法引导的情况第一时间就去BIOS里把它关掉。具体路径因主板而异一般在Security或Boot菜单下。第三磁盘空间情况。SSD至少留出50GB空余空间给Ubuntu128GB及以上比较从容。机械硬盘的话建议100GB起步因为Ubuntu根分区和home分区分开的话空间太小后期会非常痛苦。1.3 数据备份这次不是例行公事每次看到有人装双系统把Windows搞崩了再来后悔我都想说活该——因为备份这一步是最不该省的。你要操作的是磁盘分区这意味着正在触碰Windows所在硬盘的结构。虽然UEFI时代误删分区不至于让系统彻底废掉但数据丢失的风险一直都在。我建议至少做两件事重要的个人文件备份到移动硬盘或网盘以及用Windows自带的创建恢复驱动器功能做一份系统恢复U盘。制作方法很简单控制面板搜索恢复打开创建恢复驱动器插上U盘跟着向导走。这个U盘在你把引导搞坏之后能救命的后面我会提到怎么用。另外建议在Windows里用diskmgmt.msc磁盘管理截图记录一下当前分区布局。万一后面分区表出问题你能知道自己原来的分区长什么样。2. 制作启动盘与BIOS设置多数人卡在的第一步2.1 镜像下载千万不要选错版本Ubuntu官网的下载页面会推荐最新的LTS版本长期支持版比如24.04 LTS。对于双系统用户我只推荐LTS版本它们每两年发布一次支持周期5年软件源稳定网上遇到的教程和解决方案基本都是针对LTS写的。中间版本如24.10虽然功能新但问题也多不适合当主力系统。下载镜像时注意区分桌面版Desktop和服务器版Server。我们这里选的是桌面版文件后缀是.iso大概5-6GB。如果官网下载慢可以使用国内镜像源中科大、清华、阿里云都有Ubuntu镜像下载后务必校验SHA256哈希值确保文件完整没有损坏。这个步骤很多人跳过但镜像文件损坏会导致启动盘无法引导排查起来非常浪费时间。2.2 U盘启动盘制作Rufus的两个关键选项启动盘制作工具我推荐RufusWindows下使用免费开源且稳定。用balenaEtcher也完全可以但Rufus在细节设置上更适合双系统场景。打开Rufus后先选择你的U盘和下载好的Ubuntu镜像然后注意这两个选项分区类型一定要选GPT如果你确认电脑是UEFI启动。如果你选了MBR可能装完系统后无法引导。目标系统类型选UEFI非 CSM。这里如果选错后面BIOS可能识别不到U盘。其他选项保持默认就行点开始后Rufus会提示写镜像模式选以ISO镜像模式写入即可。制作过程会格式化U盘注意提前转移U盘上的文件。2.3 BIOS设置该关的关掉该开的打开插入启动盘后重启电脑开机时不停按Del/F2/F10/F12具体按键看主板品牌一般开机画面底部会有提示进入BIOS。需要处理的项目有Secure Boot如果Ubuntu安装器启动不了或者报错就关闭它。在Security菜单里找到Secure Boot选项设为Disabled。Fast Boot / Quick Boot建议关闭。这个功能会跳过部分硬件初始化有时导致U盘无法正确识别。CSM / Compatibility Support Module如果你之前是UEFI模式保持关闭。如果打开CSM反而会导致GRUB识别不了启动项。启动顺序把U盘启动调到第一位。有些主板支持开机按F12之类的快捷键直接选择一次性启动设备比改BIOS设置更省事。设置完成后按F10保存并退出电脑会重启进入Ubuntu的Live环境——也就是你可以在U盘里直接体验Ubuntu桌面而不安装到硬盘。到这一步安装程序的前半段已经成功了。3. 磁盘分区第一次装最容易懵的环节3.1 Windows里压缩卷还是用Ubuntu安装器的Alongside进入到Ubuntu Live环境后桌面上有Install Ubuntu图标。双击开始安装前面几步语言、键盘布局都好说到了Installation type这一步会出现几个选项Install Ubuntu alongside Windows Boot Manager与Windows共存Erase disk and install Ubuntu清空并安装Something else手动分区如果你是第一次装看到alongside可能会图省事直接选它。但我极其不建议这么干除非你的硬盘完全是一个空余空间很大的分区。原因是Ubuntu安装器自动分区时经常把swap分区设置得过大或者把 / 和 /home 放在同一个分区后期想调整很麻烦。更稳妥的做法是先在Windows的磁盘管理里压缩卷把空间腾出来然后在Ubuntu安装器里选Something else手动指定分区位置。我来演示一下这个完整过程。3.2 在Windows中预留空间的具体操作进入Windows右键此电脑选管理打开磁盘管理。找到你想压缩的分区通常是C盘右键选压缩卷。这里输入你要腾出的空间大小单位是MB。比如你打算给Ubuntu 100GB就填102400MB。压缩出来的空间会是未分配状态先不用管它。注意不要在这里新建分区或格式化——Ubuntu安装器能直接识别未分配空间的。这里有个细节如果C盘文件碎片较多Windows能压缩出的最大空间会小于实际可用空间。建议先做一次磁盘碎片整理HDD或优化驱动器SSD再执行压缩操作。压缩过程不要断电不要开大程序跑满磁盘IO否则可能损坏文件系统。3.3 手动分区EFI、Swap、根分区和home分区的推荐方案回到Ubuntu安装器选Something else后会看到磁盘分区列表。找到你压缩出来的空闲空间一般是free space选中它点新建分区。以下是我的推荐方案分区大小类型挂载点作用EFI系统分区500MB主分区/boot/efi存储引导文件两系统共用Swap交换分区内存大小或8-16GB主分区swap内存溢出时的备用区域根分区30-50GB主分区/系统文件和软件安装位置home分区剩余全部主分区/home用户数据、配置文件这里有几个需要解释的关键点为什么单独分EFI分区UEFI规范要求系统引导文件放在一个FAT32格式的EFI分区中。Windows安装时已经自动创建了一个EFI分区通常200-500MB。在手动分区时你要么把Ubuntu的引导文件也放进这个已有的EFI分区选择use as EFI System Partition要么新建一个。我倾向于建议新建一个独立的EFI分区并把Windows那个EFI分区留着不动。理由是两个系统各管各的EFI分区将来删除Ubuntu或修复Windows引导时互不干扰风险更低。但这里有个坑部分主板固件对多个EFI分区的支持不太好可能出现只能识别第一个EFI分区的情况。遇到这种情况你需要把Ubuntu的引导文件写到Windows的那个EFI分区里。判断方法很简单如果安装完重启后直接进了Windows没有出现GRUB菜单多半就是这个原因。解决方法是先用Boot-Repair工具把GRUB装到Windows的EFI分区里后面我会详细说。为什么swap分区要单独分新版本的Ubuntu默认用swap文件而不是swap分区但双系统场景下我仍然建议单独分一个swap分区。因为swap分区的性能比swap文件稳定而且如果你之后想用休眠功能suspend-to-diskswap分区是必要条件。根分区和home分区为什么分开根分区存放系统文件home分区存放用户数据。分两个分区的好处是将来系统坏了需要重装Ubuntu只要在安装时把home分区挂载回去你的个人文件和配置都能保留不需要提前备份。如果你把所有东西放在一个分区里重装系统就意味着所有数据清零。3.4 引导程序安装位置最后一道选择题手动分区的最后一步Device for bootloader installation选项要选择你刚才新建的EFI分区或者Windows的EFI分区而不是/dev/sda整个磁盘。有些教程会让你选磁盘这在Legacy模式下是对的但在UEFI模式下必须选EFI分区。选错的话最典型的症状就是装完后开机完全没有GRUB菜单直接进Windows。确认分区方案无误后点Install Now开始安装。后面的操作就是设置用户名、密码、时区、键盘布局没什么好说的。等进度条跑完安装器提示你重启拔出U盘按Enter重启。4. 第一次重启的各种翻车现场引导修复完整排查链路4.1 场景一重启后直接进了Windows没有GRUB菜单这是最常见的情况原因通常是以下几种原因一引导程序装错位置了。如果安装时bootloader装到了整个磁盘(/dev/sda)而不是EFI分区或者安装到U盘上了就会出现这种情况。解决手段不是重装系统而是进入Live环境用Boot-Repair修复。原因二BIOS启动顺序问题。有些主板装了Ubuntu后会把Windows Boot Manager设为第一启动项。进入BIOS看启动顺序里有没有ubuntu这一项有的话把它移到第一位。有时EFI分区里的引导文件名是grubx64.efi需要你在BIOS里手动添加引导项。原因三多个EFI分区导致固件只认第一个。这个前面提过就是主板认了Windows的EFI分区没认你新建的EFI分区。解决方案是用efibootmgr命令手动创建引导项或者在Boot-Repair里选择把GRUB装进Windows的EFI分区。排查顺序建议是先进BIOS看启动项列表再决定用哪种方案。4.2 场景二GRUB提示no such partition或直接黑屏这种情况一般和分区被改动过有关通常发生在Windows系统更新重置了EFI启动项之后。也有可能是你之前装过其他Linux发行版留下了残留的引导项。处理方案也很直接用Boot-Repair修复。方法是重新用Ubuntu安装U盘进入Live环境打开终端执行以下命令sudo add-apt-repository ppa:yannubuntu/boot-repair sudo apt update sudo apt install boot-repair boot-repairBoot-Repair打开后选择Recommended repair推荐修复它会自动检测EFI分区、修复GRUB、重建引导链。整个过程大概几分钟。修复完成后会生成一个报告网址如果问题没解决把网址发给别人帮忙排查也方便。需要说明的是Boot-Repair把这个叫做推荐修复是有原因的它会自动把新安装的系统的引导文件正确写入EFI分区并且生成正确的NVRAM引导项。在绝大多数情况下这一步能解决所有GRUB相关的问题。4.3 场景三Ubuntu进不去Windows也进不去开机直接黑屏这是最让人恐慌的场景——但好消息是90%的情况下你的数据和Windows系统都是好的只是引导配置乱了而已。先不要重装系统。用Windows安装U盘就是之前让你做恢复驱动器的那只引导进入Windows恢复环境选择疑难解答→高级选项→命令提示符输入以下命令重建Windows引导bootrec /fixmbr bootrec /fixboot bootrec /rebuildbcd执行完重启如果Windows回来了再用Boot-Repair修复GRUB。如果bootrec /fixboot提示拒绝访问说明你的Windows引导分区EFI分区被设置了访问权限需要先执行diskpart清理权限这里不展开细说网上的资料很多。另一个常被忽略的情况BIOS从Legacy模式被改成了UEFI模式或者反过来。如果Windows是Legacy方式安装的而你为了装Ubuntu把BIOS切到了UEFI模式Windows就会引导失败。解决办法是在BIOS里把启动模式改回跟Windows原来一致的状态。4.4 双系统下用Windows工具修复Linux引导反过来也有一种情况GRUB菜单还在但Windows启动项不见了。这是因为Linux更新GRUB时覆盖了Windows的引导链。修复方法先确认Window EFI分区里是否还有Microsoft/Boot/bootmgfw.efi这个文件。如果有在Ubuntu终端中执行sudo update-grub它会重新扫描所有磁盘上的系统把Windows Boot Manager添加回GRUB菜单。如果EFI分区里这个文件丢失了比如被误删就需要用Windows恢复环境里的bcdboot命令重建bcdboot C:\Windows /s S: /f UEFI其中S:是挂载的EFI分区盘符。这种从一个系统修复另一个系统引导的操作我在不同机器上试过多次核心逻辑就是每个系统都自带一套重建自己引导的工具Windows是bootrec/bcdbootLinux是grub-install/update-grub两边配合使用就没有解决不了的问题。5. 双系统日常维护启动顺序、时间同步、文件互访5.1 修改GRUB默认启动项把双向选择变成默认偏爱Ubuntu安装完成后GRUB菜单默认会让你倒数十秒再进入默认系统通常是Ubuntu。如果你想默认进Windows或者缩短/延长等待时间可以改GRUB配置文件。最直接的方式是编辑/etc/default/grub文件sudo nano /etc/default/grub找到这两行GRUB_DEFAULT0 GRUB_TIMEOUT10GRUB_DEFAULT0表示默认启动第一个菜单项。怎么知道Windows是第几个执行grep menuentry /boot/grub/grub.cfg查看菜单项列表从0开始数。如果你的列表里第一个是Ubuntu第二个是Windows Boot Manager那就把GRUB_DEFAULT改为1。GRUB_TIMEOUT10是等待秒数改小可以加速启动改为0则直接不显示菜单不建议万一想进另一个系统还得狂按Shift。修改保存后执行sudo update-grub让配置生效。这里有个小技巧GRUB_DEFAULT不仅接受数字也可以用它支持的高级语法比如saved配合grub-set-default命令动态设置默认项适合经常在两个系统间切换的用户。进阶玩家可以试试Grub Customizer这个图形工具直观调整启动顺序和主题。不过说实话我用了几年最后还是回到改配置文件的方式——更透明不容易把GRUB搞乱。5.2 时间漂移问题Ubuntu一直比Windows快8小时双系统用户必踩的坑装完Ubuntu后切回Windows发现系统时间不对了差了8个小时。原因很简单Windows把硬件时钟RTC当作本地时间Ubuntu默认把硬件时钟当作UTC时间然后根据时区换算显示本地时间。两个系统对同一个硬件时钟的解读不一致时间自然就漂了。解决办法二选一方案一推荐让Ubuntu也把硬件时钟当作本地时间。在Ubuntu终端执行sudo timedatectl set-local-rtc 1然后同步一下时间sudo apt install ntpdate sudo ntpdate time.windows.com方案二让Windows使用UTC时钟。需要修改注册表操作略微繁琐不推荐新手使用。方案一改完后两个系统的时间就一致了。timedatectl命令会提示RTC in local TZ警告忽略即可不影响使用。5.3 文件互访Windows看Linux分区Linux看Windows分区双系统之间传文件最基础的方式是共用一个数据分区NTFS格式。但如果想直接读取对方的系统分区文件也存在一些限制Linux访问Windows分区Ubuntu默认支持NTFS读写文件管理器侧边栏直接能看到Windows分区点击挂载就能访问。这是很多人选择双系统的便利之处。要注意的是不要用Linux往Windows系统盘里随便写文件尤其是C盘根目录下的系统文件格式差异可能导致某些Windows工具无法识别。Windows访问Linux分区Windows原生不认识ext4格式。如果你在Ubuntu里下载了一个文件切回Windows后想直接读取可以装一个第三方驱动。这里推荐两个免费开源的是Ext2Fsd支持老版本更现代的是Linux File Systems for WindowsParagon出品有试用版。装上驱动后Windows资源管理器就能看到Linux分区像普通硬盘一样浏览复制文件。注意尽量设置为只读避免Windows写入ext4分区导致元数据损坏。这个需求如果很频繁更优雅的解决方案是在Windows和Ubuntu之外单独分一个NTFS的共享分区两边都挂载它作为下载目录或工作目录。这样既避免了直接读取系统分区的风险又在两个系统间创造了一个公共中转站。我自己的习惯就是分了一个200GB的D盘做这件事两边系统的桌面文件夹都指向这个共享分区。6. 装完Ubuntu后的第一天输入法、换源、驱动和常用开发环境6.1 中文输入法搜狗还是fcitx5Ubuntu默认的IBus框架在中文输入体验上一直不尽如人意所以我装完系统的第一件事就是换输入法框架。现在的推荐方案是Fcitx 5配合中州韵Rime或自带的拼音输入法集成度和流畅度都比IBus好很多。安装Fcitx 5很简单Ubuntu 22.04之后可以直接sudo apt install fcitx5 fcitx5-chinese-addons然后重启登入会话在设置→区域与语言里输入源添加中文智能拼音并把Fcitx 5设为默认输入法框架。这一步如果遇到桌面环境不显示输入法图标的情况可以执行im-config命令选择fcitx5后重新登录。如果你对搜狗输入法有执念也可以从官网下载Linux版安装包但安装后不建议同时保留IBus容易输入法冲突。我实测下来Fcitx 5配智能拼音的候选词准确度已经接近搜狗日常打字完全够了。6.2 换源让apt不再龟速刚装好的Ubuntu默认软件源是官方源在中国大陆环境下下载速度感人。第一步就是换成国内镜像源。以清华源为例打开软件和更新Software Updates在Download from里选择Other...然后在列表里选mirrors.tuna.tsinghua.edu.cn点Choose Server。或者直接用命令行操作sudo sed -i s/archive.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g /etc/apt/sources.list然后sudo apt update刷新索引。换源后安装软件的速度会有质的飞跃。注意Ubuntu 24.04开始软件源配置文件改在/etc/apt/sources.list.d/ubuntu.sources不过用系统自带工具修改最省心。6.3 NVIDIA驱动和Docker开发环境的两座大山如果电脑有独立NVIDIA显卡装完系统后第一件事是安装显卡驱动。在软件和更新的Additional Drivers选项卡里直接选NVIDIA推荐的专有驱动点应用重启即可。不建议从NVIDIA官网下载run文件手动安装容易和系统自带驱动冲突。开发环境方面Ubuntu上装Docker比Windows上简单得多不需要Docker Desktop原生的更稳定sudo apt install docker.io docker-compose-plugin sudo systemctl enable --now docker sudo usermod -aG docker $USER重新登录后docker ps就不会提示权限问题了。注意装完Docker再装NVIDIA Container Toolkit就能在容器里用GPU了这是搞深度学习的人最常用的一套组合。6.4 SSH连接异常装完系统先测这一步热搜词里有ubuntu ssh无法连接这确实是新手常见问题。开启SSH服务三步sudo apt install openssh-server sudo systemctl enable --now ssh sudo ufw allow 22/tcp装完后检查服务状态sudo systemctl status ssh再用ip addr查看IP地址在Windows上用ssh 用户名IP测试连接。连不上的原因九成是防火墙或没有安装openssh-server。7. 进阶把双系统用得跟原生一样爽的几个技巧7.1 共享一些常用的系统级配置装多了双系统你会发现真正的效率提升不是来自某个单一技巧而是来自在合适的系统里做合适的事。比如把基本开发工具链在两个系统里都配置一遍遇到突发情况比如Windows更新把引导搞挂了还能用另一个系统继续干活。一个很实用的方案是把Git配置、SSH密钥、浏览器书签这类可以跨平台的东西放到共享分区。具体做法是在Windows下设置环境变量HOME指向共享分区的某个文件夹Linux下修改/etc/passwd里的用户主目录。这样两个系统拿到的是同一份配置不用两边同步。不过这需要一定的Linux基础新手可以先用网盘/同步工具过渡。7.2 重装Ubuntu时保留home分区系统用久了总会莫名其妙变慢或者配置乱掉想重装Ubuntu。如果你当初按我推荐的分区方案分了独立home分区重装就变得非常简单安装时在Something else里把根分区格式化为ext4并挂载到/home分区不格式化原样挂载到/home即可。这样你之前的桌面壁纸、浏览器配置、项目代码全部保留只换掉系统核心部分。这个无损重装的技巧让我在帮人处理系统问题时省了无数备份时间。但有一点要记住重装时不要勾选Formathome分区千万要看清楚分区列表再操作。7.3 从Windows系统里无法启动Ubuntu时怎么办除了引导修复工具还有一个野路子在Windows下直接用工具编辑EFI引导项。命令是bcdedit /set {fwbootmgr} displayorder {你的Ubuntu引导项} /addfirst其实Windows下安装一个叫EasyBCD的免费软件也能管理GRUB引导项不过它生成GRUB条目有时不准确对UEFI引导支持一般。真遇到引导问题我还是建议按第4章节的链路走一遍别依赖这些第三方工具。8. 写在最后关于双系统的一些真心话装了这么多年双系统我的态度已经从一个逢人便推荐双系统的布道者变成了一个能装尽量装但一定要先想清楚需求的实用主义者。双系统最大的价值不是让你在朋友面前显得很极客而是给你一个随时可以切换到另一个工作环境的自由度。如果你只是为了跑几个Linux命令WSL可能更合适。但如果你要长期在Linux下做开发、跑实验那么一套配置得当的双系统配合共享数据分区、独立home分区和熟练的引导修复技能会让你未来两年内都过得非常舒服。最后再分享一个小技巧装完系统后在U盘里保留一个Ubuntu Live装机盘别格式化掉。那个几百兆的U盘会在无数个启动项消失的深夜救你于水火之中。