ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Win10与Ubuntu20.04双系统安装指南:避坑分区与引导修复

Win10与Ubuntu20.04双系统安装指南:避坑分区与引导修复 装了不下十次Win10加Ubuntu20.04双系统踩过的坑比教程字数还多。今天不打算给你复制官网步骤而是把从U盘制作到引导修复、再到驱动适配的完整链路重新捋一遍尤其是那些教程里一笔带过、实际上能卡你两小时的地方全部摊开讲。先说结论双系统本身不难难的是装完之后的收尾。90%的人装完不是卡在显卡驱动黑屏就是Windows更新吃掉引导再或者重启直接进不了任何一个系统。这篇文章围绕Win10加Ubuntu20.04双系统安装的完整流程展开把分区方案、启动引导器位置、Secure Boot设置、驱动安装顺序这些关键决策讲明白适合第一次装双系统的大学生、准备跑ROS或深度学习环境的开发者以及被虚拟机性能折磨到想换真机的朋友。1. 装前别急着插U盘硬件确认、BitLocker与快速启动的坑1.1 确认BIOS模式与磁盘类型UEFIGPT 还是 LegacyMBR很多人装双系统失败死在第一步——没搞清楚自己的电脑是UEFI还是Legacy引导模式。Win10加Ubuntu20.04双系统安装教程里这一步通常被简化成进BIOS改启动模式。但实际上2018年以后出厂的主流品牌机联想、戴尔、惠普、华硕基本都是UEFIGPT组合只有老旧的组装机或2015年前的笔记本才会用LegacyMBR。这个组合决定了后面所有操作UEFIGPTUbuntu和Win10共用ESP分区EFI System Partition引导由固件统一管理修复相对简单。LegacyMBR引导写在磁盘主引导记录需要grub接管处理不当容易互相覆盖。**怎么判断自己的模式**Windows下按WinR输入msinfo32回车看BIOS模式一栏显示UEFI就是UEFI模式显示传统就是Legacy。同时记下安全启动状态——如果是开启装Ubuntu前必须去BIOS里关掉后面会细说。1.2 关闭BitLocker和快速启动这是很多人第一步就翻车的地方Win10的BitLocker加密是双系统的隐形杀手。很多品牌机尤其是戴尔、ThinkPad系列出厂默认开了BitLocker但用户根本不知道。装Ubuntu时分区工具会检测到受加密保护的分区不仅无法正常读写Windows分区手动分区时还容易误操作触发恢复流程。更麻烦的是之后每次切系统Windows都可能要求输入恢复密钥而密钥又存在微软账户里网络不好就锁死在登录界面。检查方法控制面板搜索BitLocker如果显示关闭或没有这个选项就没事如果是Win10家庭版搜索设备加密看看状态。有加密且有密钥的话建议先解密再装系统——这个解密过程耗时较长机械硬盘1-2小时固态一般几十分钟但省去后面无穷无尽的麻烦。然后是快速启动Fast Startup。这个功能让Win10关机变成休眠注销的混合状态好处是开机快坏处是Ubuntu无法正常挂载NTFS分区。如果你装完Ubuntu后访问Windows分区时提示文件系统损坏或只读挂载多半就是快速启动没关。关闭方法控制面板 → 电源选项 → 选择电源按钮的功能 → 更改当前不可用的设置 → 取消勾选启用快速启动。1.3 制作Ubuntu20.04启动盘Rufus的选择与分区模式启动盘制作工具推荐RufusWindows或balenaEtcherMac/Linux通用。这里重点讲Rufus因为它的选项对结果影响很大。在Rufus里插入U盘后有四个关键选项选项推荐值原因分区类型GPT匹配UEFI引导模式目标系统UEFI非CSM确保以纯UEFI方式启动文件系统FAT32Ubuntu ISO引导兼容性最好集群大小默认不需要改动有一点需要注意如果你在Rufus里选择了以ISO镜像模式写入而不是DD模式写入很多旧教程会推荐DD模式。实测下来UEFI机器用ISO模式没问题DD模式反而在某些主板上出现启动盘识别不了的情况。镜像下载建议从清华TUNA或阿里云镜像站拉取ubuntu-20.04.6-desktop-amd64.iso官网的下载速度在国内环境容易让人崩溃。版本锁定20.04.6因为这是20.04系列最后一个维护版本包含的安全补丁和硬件支持都比早期版更好。1.4 给Ubuntu预留磁盘空间压缩卷与空闲空间很多人问装双系统需要单独划分一个区吗答案是不需要提前建分区只需要预留未分配空间。在Windows磁盘管理里对最后一个分区右键→压缩卷输入想腾给Ubuntu的空间大小单位为MB。这里有几个建议值如果只是尝鲜、日常写代码给60-80GB如果要跑深度学习、存数据集或做自动驾驶仿真至少100GB起步机械硬盘用户建议多留swap空间固态无所谓压缩卷的坑如果你C盘和其他分区之间没有足够的可压缩空间比如文件碎片太多导致可用空间不连续压缩出来的大小可能远小于预期。这时候可以用Windows自带的分区工具先做磁盘整理或者直接选择用第三方分区工具比如傲梅分区助手从其他分区挪空间。提示任何涉及分区的操作前务必备份重要数据。虽然这套流程发生事故的概率不高但一旦碰上断电或误操作后悔都来不及。预留出未分配空间后Ubuntu安装器的安装类型界面里就能看到有一段灰色的空闲区域后面的手动分区就基于这块空间来做。2. 为什么用双系统而不是虚拟机或WSL场景决定方案2.1 三种方案的差异对比在选择装Way双系统之前先问自己一个问题你是不是真的需要双系统虚拟机VirtualBox或VMware可以同时在Windows里跑一个Ubuntu窗口WSL2更是把Linux内核整合进了Windows。很多场景下这两个方案完全够用没必要折腾双系统。但它们的硬伤也很明显方案GPU性能外设直通USB设备兼容性内核模块支持适合场景双系统完整完整完整完整深度学习、机器人、内核开发虚拟机受限除非GPU直通受限多数可用受限日常Linux操作、前后端开发WSL2好WSLgGPU支持受限基本可用受限无自定义内核Web开发、数据库、脚本WSL2对Web开发和Docker支持是真的好用但它跑不了需要内核模块的软件比如某些ROS功能包也无法直接控制USB设备做串口通信更别说NVIDIA显卡在CUDA层面的完整调优。虚拟机可以跑完整Linux环境但图形性能大打折扣——你在虚拟机里跑一个小型三维重建程序帧率可能只有真机的三分之一。2.2 什么情况下才值得装双系统结合我自己的实际使用经历下面这几类场景不建议用虚拟机将就机器人操作系统ROS开发ROS 1Noetic在Ubuntu 20.04上是官方支持环境。跑rViz、Gazebo仿真或者在真机上通过USB串口连接底盘和激光雷达虚拟机的USB转发延迟会让你怀疑人生。OrbSlam3这类视觉SLAM项目更是需要完整的GPU算力来做特征提取和位姿优化。深度学习训练虽然很多人在云服务器上跑训练但本地调试网络结构时双系统能让你完全使用本机GPU避免虚拟机的PCIe直通折腾。需要底层硬件访问的场景比如刷固件、调试驱动、运行依赖特定内核模块的软件WSL2直接出局虚拟机偶尔能用但也经常出奇怪的问题。2.3 我踩过的虚拟机性能坑选型经验之前为了图省事我在VMware里分配了8核CPU和8GB内存跑Ubuntu20.04装好各种环境后运行一个视觉里程计程序CPU占用率直接打到90%以上风扇狂转帧率只有个位数。同样的代码切到双系统里CPU占用率让人瞬间释然——开虚拟机做性能敏感型任务的体验就好比你住进了一个隔音很差的酒店别人敲键盘你都能听见根本不是自己的房间。如果你只是偶尔用Linux跑个Python脚本、搞搞Docker那虚拟机绝对够用且更方便。但如果你已经准备好在这条路上走深不管是SLAM、深度学习还是系统底层双系统是绕不开的一步。既然决定装咱就把它装明白。3. Ubuntu20.04安装全流程每个选择都给你解释清楚3.1 U盘启动与安装初始选项准备工作完毕后插入U盘重启电脑开机时按启动菜单快捷键华硕/微星一般是F8或F11联想F12戴尔F2进BIOS后在Boot Menu选U盘惠普F9选择带UEFI前缀的U盘启动项。注意不要选不带UEFI的那个那是Legacy兼容模式会导致安装器以错误的分区模式运行。启动后在GRUB引导菜单选择Install Ubuntu如果你没看到菜单而是直接进了Ubuntu桌面别慌桌面图标里也有Install Ubuntu入口。接着依次是语言、键盘布局建议在安装过程中连接网络这一步选择不连接Wi-Fi。理由是Ubuntu安装器在联网状态下会自动下载第三方驱动和更新包国内网络环境下这一步经常卡在正在检索新版本超过半小时。断网安装装完再配国内软件源速度更快、过程更可控。在更新和其他软件界面推荐勾选为图形或无线硬件安装第三方软件——这个选项会预装硬件相关驱动程序虽然安装完还是要装NVIDIA专有驱动但至少声卡、网卡这些基础硬件大概率能被识别。下载更新和未第三方软件这两个勾选断网安装时本来就用不上不用管。3.2 手动分区方案EFI、swap、根分区与/home的分配逻辑到了安装类型界面选择其他选项手动分区。这是双系统安装里最核心的一步分区逻辑直接决定你之后的磁盘使用体验。找到之前压缩出来的空闲区域点击开始创建分区。推荐的分区方案如下分区用途建议大小文件系统挂载点EFI系统分区500MB-1GBFAT32/boot/efiLinux swap等于或略大于内存容量swap无root根分区30-50GBext4/home分区剩余全部空间ext4/home**为什么分开建这两个分区**这里的核心思想是把系统文件和用户文件分开。根分区只放Ubuntu系统本身home分区放你的代码、模型、照片等个人数据。这样以后系统崩了或想重装Ubuntu只需要格掉根分区home分区的数据完好无损。swap分区的大小一句话——内存小于8GB时swap大小设为内存的2倍内存8GB及以上给等于内存大小的swap就足够了。如果你平时不怎么跑大型编译任务甚至可以直接不建swap分区Ubuntu会临时创建交换文件swapfile备用。但建独立swap分区在处理休眠suspend-to-disk时更可靠建议保留。EFI系统分区要注意如果电脑上已经有Windows的EFI分区通常是那个FAT32格式、挂载在/boot/efi、大小为几百MB的分区不要重复创建新的EFI分区。直接选择让安装器使用现有EFI分区即可安装器会把Ubuntu的引导文件追加到这个分区里。如果你强制新建一个EFI分区会出现两个EFI系统分区部分主板固件会只识别其中一个导致引导顺序混乱。注意分区方案因人而异但EFI分区单独建根分区/home分区分开是双系统安装中兼容性和安全性最好的结构新手照这个表操作基本不会出大问题。3.3 启动引导器装到哪决定你能不能双系统切换的关键这是安装流程里最容易被忽略、又最关键的一个选择——界面底部的安装启动引导器的设备。很多人直接保持默认安装器就会自己选目标结果装完重启直接进Win10好像Ubuntu根本不存在还有人装完直接进UbuntuWindows入口消失。这两种情况都指向同一个原因引导器装到了错误的设备上。正确的选择是下拉列表中选中那块硬盘比如/dev/nvme0n1即整块固态盘而不是某个分区/dev/nvme0n1p1之类。因为UEFI模式下grub是安装在ESPEFI系统分区里的但安装器界面上让你选的设备指的是磁盘头MBR或ESP所在磁盘的父设备。实际操作方式在分区列表里找到刚才设置的/boot/efi分区或已有EFI分区把启动引导器安装设备选为这个分区所在的那块硬盘通常是/dev/sda或/dev/nvme0n1这种没有数字结尾的路径。如果不确定具体是哪个盘可以看一下分区列表里ESP分区旁边的设备名照抄到下拉框里即可。这样装好的grub菜单就会同时显示Ubuntu和Windows Boot Manager两个入口。如果你装完只显示Ubuntu而没有Windows多半是以下原因Windows的EFI分区里有引导文件但grub没有检测到可以在Ubuntu里执行sudo update-grub重新扫描安装时把grub装到了U盘或错误的设备上3.4 安装完成后的第一次重启grub菜单与Windows入口安装过程结束后拔掉U盘重启你会看到GRUB引导菜单。第一次看到这个蓝黑色菜单时心里还是有点小激动的——两套系统的大门都打开了。不过很多人第一次看到的是这样的画面只有Ubuntu没有Windows Boot Manager。这时候不用慌进入Ubuntu后打开终端执行sudo update-grub系统会重新扫描所有磁盘上的引导项发现Windows后会把Windows Boot Manager加进grub菜单。如果执行完还是没有多半是Windows的EFI引导文件所在分区有问题需要检查ESP分区是否被正确挂载——这就是后面第4章引导修复的内容。安装期间建议把软件源改成国内镜像清华或阿里。在软件和更新的下载自里选其他站点填写mirrors.tuna.tsinghua.edu.cn或mirrors.aliyun.com对应的ubuntu路径不然之后apt下载都是几十KB/s装个软件等到怀疑人生。4. 装完最容易翻车的三件事驱动、引导、系统时间4.1 显卡驱动nvidia-driver-535与nouveau的爱恨情仇装完Ubuntu20.04之后如果你的电脑有NVIDIA独立显卡大概率会遇到第一次重启后的诡异情况分辨率在1366x768左右不能调、窗口动画掉帧、或者干脆黑屏死机在登录界面。这是因为Ubuntu默认加载的是开源的nouveau驱动。nouveau是通过逆向工程做出来的NVIDIA闭源驱动的替代品日常桌面使用还能凑合但一跑CUDA或游戏就原形毕露——性能大概只有闭源驱动的20%到30%还经常触发GPU hang。正确安装NVIDIA专有驱动的路径方式一推荐新手打开软件和更新→附加驱动选项卡系统会自动检测显卡型号并列出可用的专有驱动版本。选择最新的nvidia-driver-53520.04的HWE内核已经支持到5.15535系列驱动是目前稳定性较高的一个版本点应用更改重启即可。方式二终端命令sudo apt update sudo apt install nvidia-driver-535装完输入nvidia-smi验证如果显示了显卡信息和驱动版本就说明安装成功。装完驱动后可能会遇到的问题黑屏或循环登录界面这通常是nouveau没有正确禁用导致的。需要先禁用nouveau再装驱动操作是在/etc/modprobe.d/blacklist-nouveau.conf中添加一行blacklist nouveau然后更新initramfssudo update-initramfs -u重启后再装驱动。安全启动Secure Boot导致驱动加载失败如果BIOS没关Secure BootNVIDIA驱动即使装了也会在加载时被拒之门外症状是nvidia-smi报Failed to initialize the NVIDIA driver。解决方法是在BIOS里临时关闭Secure Boot或者在Ubuntu里按下面的流程导入密钥MOKsudo mokutil --enable-validation重启后按提示设置密码并注册密钥稍繁琐但不用频繁进出BIOS。Ubuntu升级内核后驱动失效apt方式安装的NVIDIA驱动会跟着DKMS重新编译适配新内核一般不需要手动干预。但如果你手动下载.run文件安装的驱动每次内核升级后都得重新装一遍。这也是我推荐用apt或附加驱动安装的原因。4.2 引导修复grub被覆盖或丢失后怎么救如果说显卡驱动是双系统的慢性病那引导丢失就是急性病——发生得突然且无操作经验的人真容易当场崩溃。最常见的场景你装了双系统用了一段时间某天Windows更新了一个大版本重启后直接进入WindowsGRUB菜单消失了。或者你在折腾分区时不小心删了ESP分区内容开机黑屏只显示一行grub rescue。问题本质Windows更新时会把UEFI固件里的引导项排在最前面而且某些Windows更新会重写EFI引导管理器的启动顺序。GRUB并没有被删除只是被挤到了后面或不生效了。修复引导的完整排查链路第一步用Ubuntu启动盘进入试用模式U盘启动选试用Ubuntu打开终端。第二步安装并运行Boot-Repairsudo add-apt-repository ppa:yannubuntu/boot-repair sudo apt update sudo apt install boot-repair boot-repair第三步选择Recommended repair等待它自动扫描和重新安装GRUB。修复完成后会输出一个网址可忽略重启前把启动盘拔掉。Boot-Repair的原理是检测到Windows的EFI分区把这些信息写进grub配置然后把grub重新安装到ESP分区里并调整UEFI引导项顺序。大部分情况下这一步就能解决问题。但如果Boot-Repair也救不回来就要检查是不是ESP分区本身损坏或缺失了。这时需要手动修复# 查看当前磁盘和分区结构 lsblk -f # 找到EFI分区通常是vfat格式挂载点为/boot/efi的分区 sudo mount /dev/nvme0n1p1 /mnt sudo mkdir -p /mnt/EFI/ubuntu sudo grub-install --boot-directory/mnt --efi-directory/mnt --bootloader-idubuntu sudo update-grub注意执行grub-install时--efi-directory要指向ESP分区的挂载点--boot-directory指向你的引导目录。如果你连这个都执行不了还有一种兜底方案——用Windows PE启动盘或Win10安装盘进命令行运行bcdboot C:\Windows来重建Windows引导先保证能进Windows再进Windows后用EasyUEFI这类工具手动添加Ubuntu引导项。防止引导再次被Windows吃掉的技巧在BIOS/UEFI设置里把Ubuntugrub设为首选启动项而不是Windows Boot Manager。这样即使Windows更新后重启固件也会优先加载grub再从grub进入Windows。4.3 双系统时间错乱RTC与UTC的恩怨这个坑不是每个人都会遇到但遇到的都感觉很玄学刚进Windows时间是准的重启进Ubuntu后时间差了8小时在Ubuntu里改回来再进Windows又差了8小时。两边来回改恶习循环。原因很简单Windows默认把主板硬件时钟RTC当做本地时间来读而Linux以及macOS默认把它当做UTC时间。中国在东八区UTC8所以两边差了8小时。解决方案不唯一但最简单的是一行命令告诉Ubuntu你直接读本地时间timedatectl set-local-rtc 1 --adjust-system-clock执行完重启两边时间就统一了。如果你更愿意把Windows改成UTC模式则需要在Windows注册表里加一个RealTimeIsUniversal的DWORD值并设为1操作相对麻烦。个人建议改Linux侧因为Linux改起来一条命令搞定且对系统没有副作用。5. 万一以后想卸载Ubuntu安全还原Win10引导的完整路径5.1 在Windows下删除Linux分区前先修引导双系统用了一段时间后有人可能觉得用不上了或者想把磁盘腾出来干别的。这时候如果直接在Windows磁盘管理里删除Linux分区十有八九会遇到开机直接卡在GRUB rescue黑屏。原因是GRUB安装在ESP分区里但它的配置文件和有依赖的文件在/boot分区或根分区里。直接删除Linux分区等于抽掉了GRUB正常运行所需的文件GRUB启动器加载到一半找不到配置文件就只能停在救命令行。正确的卸载顺序先用Windows PE或Win10安装盘启动进命令行ShiftF10。重建Windows引导diskpart list disk select disk 0 list volume找到ESP分区一般是FAT32格式容量在几百MB的那个可能是系统保留分区给它分配一个临时盘符比如assign letterS:然后退出diskpart。bcdboot C:\Windows /s S: /f UEFI这条命令会把Windows的引导文件写入ESP分区确保移除grub之后Windows能独立启动。重启进Windows用磁盘管理把Linux分区逐个删除并把未分配空间并入相邻分区大功告成。5.2 清理EFI启动项删掉Linux分区后EFI里可能还残留一个指向Ubuntu的引导项。它在UEFI固件里表现为一个多余的启动项启动菜单选的时候会提示找不到EFI\ubuntu\shimx64.efi。清理方式有两种图形化工具用EasyUEFIWindows工具选中Ubuntu的引导项直接删除。命令行方式管理员权限运行命令提示符执行bcdedit /enum firmware查看所有固件启动项找到Ubuntu对应的description值再执行bcdedit /delete {identifier}删除。另外不要忘了把ESP分区里残留的\EFI\ubuntu文件夹删掉在磁盘管理里给ESP分区分配盘符后资源管理器里可以看到并删除不然虽然不影响启动但强迫症看着很难受。5.3 一些个人体会和实用建议写到最后还是想把自己这两年的经验做个提醒。第一装双系统是不是电脑吃配置而是耐心吃技巧。每一步操作慢一点、多查一下比我这种踩过坑再来总结的人少走很多弯路。尤其是分区和引导这块动手前把每一步在脑子里过一遍确认了再操作。第二对于打算长期跑Linux的朋友建议多关注Windows更新惹祸的邪门情况。我遇到过两次Windows自动更新把UEFI启动顺序改掉第一次还傻乎乎重装了Ubuntu第二次明白了原因直接用EasyUEFI改回grub优先一分钟解决。第三如果你已经用了很久的双系统但一直没关掉Windows的快速启动建议现在就关。之前有一次Ubuntu挂载Windows分区时发现文件系统只读排查了半天最后才想起快速启动还开着。这种小问题不致命但很消磨人的耐心。说了这么多核心就一句话Win10加Ubuntu20.04双系统并不是什么高不可攀的操作只要你在分区和引导这两个关键节点上有清晰的认知和备选预案整个过程完全可以做到有条不紊。希望这篇东西能让你少走点弯路装完即用不用像我当初那样折腾三个晚上。
返回列表