ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

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

Ubuntu与Windows双系统安装全指南:从分区到引导修复 装Ubuntu与Windows双系统这件事我在不同机器上折腾过不下二十次从最早的Legacy BIOS MBR时代到现在全线UEFI GPT踩过的坑比教程里写过的字都多。U盘启动起不来、分区选错导致数据差点没了、装完后引导坏了只能进Windows、双系统时间总差8小时、NVIDIA显卡黑屏……这些名场面我都见过。这篇教程我打算换个讲法不按安装向导的界面顺序一章章念说明书而是把整个Ubuntu与Windows双系统安装拆成事前准备、分区方案、安装实操、引导管理、故障修复五个层面把我这些年验证过的、真正靠谱的操作和判断逻辑一次说清楚。如果你是第一次接触Linux或者之前装过但没成功这篇文章适合你。我会尽量把每个步骤背后的原因也讲明白而不是让你照着截图机械操作。因为双系统安装这件事真正难的不是下一步点哪里而是出问题时你不知道为什么、也不知道怎么救。1. 装双系统前先想清楚这三件事1.1 双系统是什么和虚拟机、WSL有什么区别先说清楚双系统的本质在一台物理机上同时安装Windows和Ubuntu两个操作系统开机时通过引导菜单选择进入哪一个。两个系统共用一套硬件但各自拥有独立的分区、独立的文件系统、独立的配置环境互不干扰。很多人会纠结一个前置问题既然有虚拟机VirtualBox、VMware和WSLWindows Subsystem for Linux为什么还要装双系统我换个方式解释。虚拟机就像你在Windows客厅里搭了一间玻璃房Linux住在玻璃房里透过窗户和外面的Windows交流房间的地基依然是WindowsWSL更像一个特制的运行环境它把Linux内核嵌进了Windows内部Linux程序可以原生地跑在Windows上但你还是住在Windows这颗星球里双系统则是两个完全独立的操作系统合租一台机器两户人家各有卧室、各有电表水表只共享一个门厅引导菜单。三类方案各有适用场景虚拟机适合只想偶尔用一下Linux、跑个小脚本或测试环境的人。开机关机成本低随时快照回滚。缺点是对GPU直通、IO性能支持一般跑大型仿真、深度学习训练或者需要大量磁盘读写的任务会明显吃力。WSL日常写代码、跑Python、用Docker、做Web开发WSL2的体验已经非常接近原生Linux而且和Windows文件系统互通方便。但它对硬件底层的控制受限比如串口调试、USB设备透传、带图形界面的重负载仿真比如Gazebo的GUI模式就非常折腾。双系统需要完全使用Linux的硬件调用能力不接受虚拟化性能损耗或者要做机器人开发、深度学习训练、Linux内核调试这类硬核工作双系统是最稳的选择。一句话总结如果只是写写代码WSL够了如果是想认真用Linux开发、学习或者要跑机器人和深度学习直接上双系统别绕远路。1.2 你的硬件环境决定安装难度在动手之前先搞清楚两个决定性因素电脑是UEFI启动还是Legacy BIOS启动磁盘是GPT分区还是MBR分区。近五六年买的品牌台式机、笔记本基本都是UEFI GPT的组合这种方案下双系统安装非常简单因为Windows和Ubuntu共用EFI分区来管理引导GRUB会自动识别两个系统的入口互不干扰。老一些的机器如果还是Legacy BIOS MBR安装时需要格外注意GRUB的写入位置否则很容易出现装完Ubuntu后Windows启动项消失的问题。怎么查看自己的启动模式两个方法。Windows下按 WinR 输入msinfo32回车在系统信息里找到BIOS模式显示UEFI就是现代启动方式显示Legacy就是老式BIOS。也可以用管理员身份打开PowerShell执行bcdedit /enum firmware如果能看到类似{fwbootmgr}的固件启动条目说明系统跑在UEFI模式下。磁盘分区表类型也有一个简单的判断方法WinR 输入diskmgmt.msc打开磁盘管理右键点击你的系统磁盘通常是磁盘0如果菜单里有转换为GPT磁盘选项说明当前是MBR如果有转换为MBR磁盘选项说明当前是GPT。这两点确认之后后面的分区方案和引导处理心里就有底了。2. 安装前的准备这些坑我提前帮你踩了2.1 备份与磁盘空间规划规划磁盘空间是双系统安装里最重要的一步没有之一。我的建议是最少给Ubuntu留60GB到80GB空间。如果计划装ROS、PyTorch、CUDA这些开发环境100GB到120GB会更从容。我自己常用的机器就是Windows 500GB Ubuntu 200GB的分配方式。准备工作分两步走。第一步备份数据。装系统过程中最怕的就是分区删错。桌面、文档、照片这些资料统统备份到移动硬盘或网盘。另外把Windows里一些重要软件的配置也导出一下比如浏览器书签、SSH密钥这些东西丢了真的会让人抓狂。第二步在Windows里做好磁盘整理。打开磁盘管理找一个空闲空间比较大的分区比如D盘右键选择压缩卷输入想要压缩出来的大小单位是MB100GB就是102400MB点击压缩压缩完成后磁盘后面会出现一块未分配区域这就是给Ubuntu留的地盘这里有一个非常重要的提醒不要在Windows里用第三方分区工具去调整系统盘C盘我见过有人用DiskGenius把C盘扩容结果在扩展分区的过程中把整块盘的引导搞坏了连Windows都进不去。Windows自带的压缩卷功能虽然慢但足够稳对新手来说这就是最安全的选择。另外一个常用技巧如果你的电脑有第二块物理硬盘比如笔记本有SATA位加M.2位那是双系统的绝佳方案。把Ubuntu装到第二块硬盘上两个系统物理隔离互不干扰引导出问题时也更容易定位和修复。我自己主力机就是这么配的一块盘一个系统省心。2.2 Ubuntu镜像下载与U盘制作下载Ubuntu镜像去官网ubuntu.com下载LTS版本。LTS是长期支持版比如22.04 LTS、24.04 LTS支持周期长达5年软件源稳定社区资料多兼容性也最好。不要一上来就追最新的非LTS版本除非你明确要尝鲜新内核特性否则没必要给自己增加变量的概率。下载时注意架构普通PC选amd64版本不要选arm64那是给树莓派、Apple Silicon这些设备用的。U盘制作工具Windows下最推荐Rufus免费、开源、速度快。操作流程准备一个8GB以上的U盘注意U盘数据会被清空打开Rufus设备选择你的U盘引导类型选择磁盘或ISO映像点击选择按钮选中Ubuntu ISO文件分区类型确认电脑是UEFI就选GPTLegacy就选MBR文件系统保持默认Rufus会自动判断点击开始等待写入完成有个细节如果Rufus提示需要额外下载文件直接点是就好说明你的ISO或主板需要额外的引导支持。写完后可以用Rufus的校验功能检查U盘完整性。我自己就遇到过ISO下载不完整的情况装到一半提示找不到文件排查了半天才发现是镜像本身就缺了内容。校验这个动作虽然多花一分钟但能省掉后面一整晚的排查时间。2.3 BIOS/UEFI设置插上U盘后重启电脑进入BIOS设置。进入方式一般是开机时按Del、F2、F10、F12中的一个具体看品牌联想、ThinkPadF2 或 F12戴尔F2 或 F12华硕Del 或 F2惠普F10 或 Esc宏碁F2 或 Del更稳妥的方式是在Windows里操作设置 - 系统 - 恢复 - 高级启动 - 立即重新启动然后选择使用设备 - 从U盘启动。这种方式不用开机时狂按快捷键成功率更高。进BIOS后重点检查三个选项。第一关闭Secure Boot安全启动。在BIOS中找到 Security - Secure Boot设为Disabled。Secure Boot的设计初衷是防止恶意软件篡改引导程序但Ubuntu的UEFI引导和Windows的签名链在部分主板上兼容性不好为了减少变量直接关掉。第二确认SATA模式。如果硬盘是NVMe SSD这项不用管如果是SATA接口的SSD或机械硬盘在BIOS里看SATA Mode是否为AHCI。有些厂商默认是RAID模式尤其Intel平台Ubuntu安装器可能识别不到硬盘。如果需要改成AHCI有一个前置步骤先在Windows里以管理员身份运行msconfig在引导选项卡里勾选安全引导然后重启进BIOS改成AHCI保存退出后Windows会进入安全模式在安全模式下再重启一次并取消安全引导勾选之后Windows才能正常以AHCI模式启动。如果不做这一步直接改AHCI会导致Windows蓝屏。不过现代笔记本NVMe硬盘基本默认就是AHCI兼容不用折腾只有老平台SATA SSD才有这个坑。第三如果是双硬盘方案在BIOS里确认启动顺序确保U盘在第一位。有些主板有Boot Override启动覆盖或者F12启动菜单功能可以临时指定启动设备不用改顺序。检查完这三项保存并退出BIOS电脑会从U盘启动Ubuntu的Live环境。3. Ubuntu安装全流程实操3.1 启动U盘与安装类型选择U盘引导后你会进入GRUB界面选择Try or Install Ubuntu先用试用模式进入桌面。这里有一个强烈建议不要直接点Install先进入Live桌面确认硬件识别情况。打开终端执行sudo fdisk -l确认能看到Windows系统盘以及之前压缩出来的未分配空间。如果能正常显示说明硬盘识别没问题。顺便看看WiFi能不能连上因为安装阶段就需要联网下载部分软件包和驱动。确认无误后双击桌面的Install Ubuntu图标开始安装。语言和键盘布局按你的习惯选但在安装类型这一步一定要选择Something else其他选项也就是手动分区。不要选默认的Install Ubuntu alongside Windows Boot Manager与Windows共存虽然它号称自动检测Windows分区但实际用下来它的默认分区方案不一定符合预期swap大小、挂载点分配都不受控制出问题的概率反而更大。3.2 手动分区方案最稳的三件套布局进入手动分区界面后最关键的操作是选中之前压缩出来的未分配空间千万不要碰Windows的NTFS分区。我推荐的分区方案就是三件套分区大小类型挂载点文件系统说明EFI系统分区512MB - 1GB主分区/boot/efiFAT32存放引导文件swap等于或略大于内存大小逻辑分区不指定swap areaswap交换空间/剩余全部空间主分区/ext4根分区有几个细节展开讲一下。第一EFI分区。如果你的电脑是UEFI启动安装器可能会自动识别到Windows已有的EFI分区。这时有两种选择复用Windows的EFI分区或者新建一个独立的EFI分区。我的建议是如果在设备下拉列表里能看到Windows的EFI分区通常是一个FAT32格式、约100MB到500MB的小分区直接把它设为EFI系统分区、挂载点设为/boot/efi。这样GRUB会往同一个EFI分区里写入引导文件Windows启动项自然保留。如果你担心弄坏Windows引导也可以新建独立EFI分区这在技术上完全合法但部分主板在启动菜单里新增EFI分区后会把项目显示得很乱管理起来反而麻烦。所以我更推荐复用前提是你操作时能准确认出哪个是Windows的EFI分区。第二swap分区。swap是Linux的交换空间相当于Windows的虚拟内存。内存不够时系统把不常用的内存页换到swap里。内存8GB建议分8GB内存16GB以上分8GB左右就够更多是当保险如果经常休眠或跑大量编译任务建议swap和内存一样大因为休眠时需要把内存镜像写入swap。第三根分区/。根分区存放系统文件、软件、配置数据给它剩余全部空间。如果你有大量数据需要和Windows共享可以把/home单独分出来或者另建一个/data分区格式化成ext4作为个人数据区。我个人不太建议Linux频繁读写NTFS分区性能和稳定性都有损耗数据交流通过共享目录或者网络搞定更舒服。手动分区界面的操作顺序选中空闲的未分配空间确认大小和之前压缩出来的一致点击创建EFI分区大小512MB类型选EFI System Partition如果复用Windows EFI就跳过这一步再次选中空闲空间创建swap分区大小和内存相当类型选swap area再选中剩余空间创建根分区大小填剩余全部文件系统选ext4挂载点选 /点击现在安装这里我要再次强调创建分区时只操作空闲区域绝不改Windows的NTFS分区。选错一步Windows里的资料就全没了这是双系统安装里最严重的事故。3.3 时区、用户与安装过程分区设置完点击现在安装安装器会问时区选上海Shanghai。用户名、计算机名、密码按你的习惯设置。如果电脑主要用于学习开发且不涉及敏感数据可以勾选自动登录省去每次开机输密码的步骤如果电脑有重要文件建议保留密码登录别为了一点方便牺牲安全。之后就是等待。Ubuntu安装一般10到20分钟取决于U盘速度和硬盘速度。这个过程有个常见现象进度条走到某一步会停顿好几分钟比如在正在安装系统或者正在配置软件源阶段看起来像卡住了其实是在后台解压和配置软件包这时候千万不要强制断电或重启。我见过有人在安装界面等得不耐烦直接按电源键强制重启结果分区表写了一半系统直接变成砖只能从头再来。耐心等它走完是对一台刚装好的机器起码的尊重。安装完成会提示现在重启点击后注意观察屏幕提示会提示你拔掉U盘再按回车。如果时间没跟上重启后又进了U盘的Live环境不用慌拔掉U盘再重启一次就正常了。4. 引导管理双系统启动的核心4.1 理解GRUB引导装完Ubuntu重启后正常情况下你会看到一个紫色或深色的GRUB菜单里面至少有几个启动项Ubuntu默认、Advanced options for Ubuntu、Windows Boot Manager或者类似名字。这个GRUB菜单就是双系统的门厅它列出所有可进入的操作系统。GRUB全称是Grand Unified Bootloader它在计算机启动时接管控制权加载Linux内核或者链式引导Windows的EFI程序。为什么装完Ubuntu后Windows启动项会出现在菜单里因为GRUB会扫描所有磁盘和EFI分区检测到Windows的EFI引导文件路径一般是/EFI/Microsoft/Boot/bootmgfw.efi就自动生成一个菜单项。所以正常情况下装完Ubuntu后Windows的启动入口会被自动识别不需要手动配置。4.2 修改默认启动系统三种方法很多用户装完双系统后的第一个诉求是不想让Ubuntu当默认启动项或者反过来希望某个系统优先。我给出三种方法从简单到进阶。方法一开机时手动选择。GRUB菜单出现时方向键上下移动回车选择要进的系统。GRUB默认会等待几秒通常是10秒如果超时没操作就自动进入默认项。方法二修改GRUB配置文件。进入Ubuntu后打开终端执行sudo nano /etc/default/grub找到GRUB_DEFAULT0这一行0表示默认启动第一个菜单项。GRUB菜单项的编号从0开始如果你的Windows是第3个条目就把GRUB_DEFAULT2改成2。但菜单顺序会随内核更新变化比如内核升级后第一项可能从5.15.0-xxx变成6.2.0-xxx更稳妥的方式是用菜单条目的名字来指定GRUB_DEFAULTWindows Boot Manager注意这个名字必须和GRUB菜单里显示的完全一致大小写和空格都要精确。改完后保存退出执行sudo update-grub重新生成引导配置即可生效。以后开机就会默认进入Windows。方法三安装GRUB Customizer图形工具。如果觉得改配置文件不够直观可以安装sudo add-apt-repository ppa:danielrichter2007/grub-customizer sudo apt update sudo apt install grub-customizer打开后可以图形化调整启动顺序、修改菜单项名称、设置超时秒数对新手非常友好。不过建议使用前先备份/etc/default/grub文件因为这个工具偶尔会把配置整理得比较个性化。4.3 双系统时间相差8小时的问题装完双系统后几乎每个人都会碰到一个经典问题Windows和Ubuntu时间总差8小时。你在Ubuntu里看时间是对的切到Windows一看差了8小时而且怎么同步都没用。原因是两个系统对硬件时钟RTCReal-Time Clock的解读方式不同。Windows把BIOS里存的硬件时间当作本地时间直接显示而Linux默认把硬件时间当作UTC时间再根据你的时区换算成本地时间。因为中国在东八区UTC8两边看到的正好差8小时。解决办法二选一我推荐方案A。方案A让Linux使用本地时间。在Ubuntu终端执行sudo timedatectl set-local-rtc 1这条命令告诉系统硬件时钟存的就是本地时间不再做UTC换算。可以执行timedatectl查看效果输出里RTC in local TZ: yes就说明生效了。方案B让Windows使用UTC时间需要改注册表操作繁琐而且Windows更新有时会把它改回去不建议。推荐方案A执行完就一劳永逸再也不会出现时间错乱。4.4 引导修复双系统最常见的救急操作双系统用户的宿命是迟早有一天会碰到引导问题。最常见的几个场景重装Windows导致GRUB丢失、Windows更新覆盖了EFI引导、磁盘分区调整导致GRUB配置失效。在动手重装整个系统之前先试试Boot Repair这个工具在关键时刻救过无数台机器。准备一个Ubuntu启动U盘从U盘进入Live环境联网后在终端执行sudo add-apt-repository ppa:yannubuntu/boot-repair sudo apt update sudo apt install boot-repair sudo boot-repair启动后选择Recommended repair推荐修复它会自动扫描磁盘、检测Windows和Ubuntu的引导项然后修复GRUB。绝大多数情况跑完重启就正常了。如果推荐修复不奏效可以点Advanced options手动配置一般就是指定EFI分区路径、指定GRUB安装位置。补充一点原理Boot Repair的核心操作是把GRUB重新安装到EFI分区同时调用os-prober检测Windows并重新生成启动菜单。所以它解决的不只是GRUB本身损坏也包括启动菜单丢失。另一个救急场景Boot Repair跑完GRUB里依然没有Windows菜单项。这种情况通常是os-prober没检测到Windows可以在终端手动检测sudo os-prober如果没有输出或者输出里有ntfs相关报错先尝试挂载Windows的EFI分区再运行一次os-prober。多数情况下问题出在EFI分区的/EFI/Microsoft/Boot目录缺失或损坏这时需要在Windows安装U盘的高级启动 - 命令提示符里执行bootrec /fixmbr bootrec /fixboot bootrec /scanos bootrec /rebuildbcd执行完再回到Ubuntu侧重新安装一次GRUB双系统引导就能恢复。5. 常见问题与排查实录5.1 安装过程中卡死、黑屏怎么办现象一从U盘启动后在GRUB界面选择Try or Install Ubuntu随后屏幕直接黑屏或者卡在logo画面不动。这个大概率是显卡驱动兼容性问题。安装阶段系统还没装官方显卡驱动只能靠内核自带的通用驱动遇到NVIDIA RTX 30系/40系显卡或者较新的AMD显卡时容易黑屏。解决方法是启动时加内核参数。在GRUB界面选择Try or Install Ubuntu按 E 键编辑启动项找到以linux开头的那一行在末尾加上nomodeset加完后按 CtrlX 或者 F10 启动。如果成功进入安装界面装完系统后同样需要在GRUB里加nomodeset启动一次然后安装官方显卡驱动之后再移除这个参数。现象二U盘启动后无法引导黑屏或者提示boot device not found。检查U盘启动模式是否和BIOS设置匹配UEFI对应GPTLegacy对应MBR。Rufus制作U盘时的分区类型选择要和BIOS的启动模式一致。另外确认Secure Boot已关闭。5.2 装完Ubuntu后Windows启动项不见了这个现象在之前引导管理部分讲过主要修复方法。这里补充一个在Ubuntu 22.04之后的常见原因新版GRUB默认禁用os-prober导致安装完双系统后GRUB菜单里没有Windows入口。处理办法是编辑GRUB配置sudo nano /etc/default/grub添加或取消注释这一行GRUB_DISABLE_OS_PROBERfalse保存后执行sudo update-grub然后GRUB会自动扫描并加入Windows启动项。我在多台机器上排查过确认这是22.04及之后Ubuntu双系统用户最容易忽略的配置项。5.3 WiFi无法连接或网卡驱动异常安装完成后WiFi列表为空或者能搜到信号但一直提示连接失败这类问题多半是网卡驱动没装好。尤其是Intel AX200/AX210无线网卡在部分Ubuntu版本上偶发驱动加载异常。先检查网卡是否被正确识别lspci -nnk | grep -i net能看到网卡型号说明硬件被识别到了。此时可以尝试重启网络服务sudo systemctl restart NetworkManager如果无效用有线网络或者手机USB共享网络然后安装固件sudo apt update sudo apt install linux-firmwareIntel网卡的驱动大部分都在linux-firmware包里安装并重启后一般就能识别。对于Realtek USB网卡有时需要去官网下载驱动源码手动编译过程比较折腾新手遇到这种情况建议先换一块免驱的Intel USB网卡过渡。5.4 重装Windows或者换硬盘后如何恢复Ubuntu场景描述重装了WindowsGRUB没了开机直接进WindowsUbuntu分区数据还在但不知道如何进入Ubuntu。这时用Ubuntu Live U盘启动到试用模式运行Boot Repair推荐修复即可。它会自动检测到磁盘上原有的Ubuntu系统并重新安装GRUB。如果Boot Repair修复失败再考虑手动chroot修复。步骤如下# 先确认分区假设根分区是 /dev/sda7EFI分区是 /dev/sda1 sudo fdisk -l # 挂载根分区 sudo mount /dev/sda7 /mnt # 挂载EFI分区 sudo mount /dev/sda1 /mnt/boot/efi # 绑定系统目录 sudo mount --bind /dev /mnt/dev sudo mount --bind /proc /mnt/proc sudo mount --bind /sys /mnt/sys # chroot进入系统 sudo chroot /mnt # 重新安装GRUB到磁盘的MBR/EFI位置 grub-install /dev/sda update-grub exit sudo umount -R /mnt重启后GRUB就回来了。注意设备名sdX在不同机器上不一样执行前务必用fdisk -l确认清楚。5.5 NVIDIA显卡驱动安装双系统用户只要装了NVIDIA独立显卡Ubuntu默认用的nouveau开源驱动性能都很差而且容易闪屏。安装官方驱动推荐用系统自带的附加驱动工具打开软件与更新 - 附加驱动系统会列出可选的NVIDIA驱动版本选择最新稳定版点击应用更改等待完成即可。如果这个界面刷新不出驱动列表先更新软件源并安装驱动管理工具sudo apt update sudo apt install ubuntu-drivers-common ubuntu-drivers devices这个命令会列出推荐的驱动版本然后手动安装。装完后重启终端验证nvidia-smi能看到GPU列表和驱动版本说明安装成功。这里有一个双系统特有的提醒NVIDIA驱动在某些笔记本上会导致黑屏、花屏或者外接显示器异常。遇到这种情况可以在/etc/default/grub的GRUB_CMDLINE_LINUX_DEFAULT里加上nvidia-drm.modeset1有时能缓解但具体效果因机型而异。建议先正常装完系统跑一段时间确认稳定后再动显卡驱动不要一上来就折腾。6. 双系统之外的方案WSL与虚拟机讲了这么多双系统内容最后聊聊替代方案。如果你还在犹豫要不要折腾双系统或者你的Linux需求其实没那么重WSL和虚拟机可能是更合适的选择。WSL2目前是很多Windows开发者的主力方案。它通过轻量级虚拟机技术运行一个完整的原生Linux内核启动速度快内存占用小和Windows文件系统互通方便Linux侧挂载Windows盘在/mnt/c并且支持图形界面应用WSLg。日常写代码、跑Docker、用Git、做Web开发体验接近原生Linux。WSL2的主要限制是对硬件底层的控制比如串口、USB设备直通、图形加速等操作不如双系统顺手。虚拟机VirtualBox、VMware Workstation Player适合这些场景需要同时使用两个系统、想测试多个Linux发行版、或者想折腾一些不安全的软件。虚拟机的快照功能特别好用系统随便折腾坏了直接回滚。缺点是IO性能和图形性能比物理机差不少跑大编译或者渲染任务效率低。我的个人建议是从没接触过Linux的人先用WSL或虚拟机试水成本最低确定未来半年到一年要和Linux深入打交道并且需要GUI、GPU、串口、硬件调试这些能力别犹豫直接上双系统。最后分享一个小经验系统装好后我个人会先花20分钟做四件事——用Timeshift做一次系统快照、把软件源换成国内镜像站、装好显卡驱动、设置好GRUB默认启动项。这四件事做完后面使用会很顺尤其是系统快照万一之后折腾坏了一条命令就能回滚到干净状态。装双系统这件事一次装成不算本事能稳定用上几个月不出问题才算真的成功。
返回列表