ARTICLE DETAIL

资讯详情

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

双硬盘Ubuntu与Windows双系统安装全流程:分区、GRUB引导与避坑指南

双硬盘Ubuntu与Windows双系统安装全流程:分区、GRUB引导与避坑指南 装机这事聊到双系统永远绕不开两个痛点一是怕把自己的数据搞没二是怕把引导搞坏开机进不了系统。我这些年帮人装过几十次双系统踩过的坑比很多人见过的教程都多所以这篇不说废话直接讲双硬盘下 Ubuntu 16.04 与 Win10 双系统安装的完整流程、底层逻辑和避坑细节。先说明一点虽然标题写的是 16.04但我必须说句实在话16.04 已经停止维护很久了如果今天你打算装新机器我建议直接用 22.04 或 24.04 LTS安装步骤几乎一模一样。这篇文章以 16.04 时代传承下来的经典流程为主线同时把所有新旧版本可能有差异的地方都标出来你照着操作完不管是哪个 LTS 版本都能顺利跑起来。这篇文章适合谁适合想在一台电脑上同时保留 Windows 和 Linux 开发环境的人尤其是手里正好有两块硬盘、打算把两个系统物理隔离的同学。如果你只有一块硬盘但想装双系统核心思路也通用只需要把分区那一步改成在一块盘上切分区即可。1. 双硬盘双系统的整体设计思路1.1 为什么选择双硬盘方案先聊聊双硬盘这个前提。很多人觉得双系统不就是装两个系统嘛一块硬盘分两个区不就行了说实话能装但我强烈不推荐单硬盘分区的方案。单硬盘双系统的最大问题是Windows 更新、Linux 内核升级、日志频繁写入这些都会让系统盘产生大量读写。两块系统挤在一块盘上引导分区、恢复分区、EFI 分区互相干扰一旦 Windows 更新把 EFI 引导分区搞坏了Linux 大概率也跟着起不来。我见过太多次这种一损俱损的局面最后只能拿 Live USB 进去手工修引导。双硬盘方案就清爽得多。一块硬盘装 Windows另一块硬盘装 Linux两个系统在物理层面就是隔离的。哪怕 Windows 整个瘫了重装Linux 硬盘上的数据和引导完全不受影响反过来也一样。这也是我为什么在帮人规划双系统时只要对方有第二块硬盘哪怕是块老的机械盘都会优先推荐这个方案。双硬盘还有一个隐藏优势可以避免两个系统的引导程序互相覆盖。Windows 的引导器非常霸道安装时会直接接管主引导记录Linux 的 GRUB 虽然能识别 Windows 引导但反过来 Windows 不懂 Linux 的文件系统。两块硬盘分开后你可以在 BIOS 里通过启动顺序自由切换系统也可以让 GRUB 统一管理两块盘的引导灵活度高出不少。1.2 安装方案选型与关键决策点双硬盘双系统的主流安装方式有两种各有适用场景我帮你拆开讲清楚。第一种是两块盘各自独立引导。Windows 装在第一块硬盘Ubuntu 装在第二块硬盘Ubuntu 的引导程序GRUB也装在自己的硬盘上。开机时按 BIOS 的启动菜单键通常是 F12 或 F11手动选择从哪块硬盘启动。这个方案最大的好处是引导隔离两个系统彻底互不干扰适合那些不想折腾引导、追求稳定的朋友。缺点是每次切换系统都要手动进 BIOS 选一次启动顺序稍微麻烦一点。第二种是GRUB 统一引导——这也是我会重点推荐的省心方案。Windows 装在硬盘 AUbuntu 装硬盘 B但把 GRUB 装在 Ubuntu 所在硬盘 B 上然后通过主板 BIOS 让硬盘 B 优先启动。这样开机后直接进入 GRUB 界面里面能看到 Ubuntu 和 Windows Boot Manager 两个选项用键盘上下选、回车进入体验和单硬盘双系统一模一样但稳定性是物理隔离级别的。我在实际帮人装机时90% 的情况都推荐第二种。原因很简单日常使用谁也不想每次开机都狂按 F12。GRUB 的统一引导菜单非常成熟只要配置好长期使用几乎不会出问题。另外还有一个版本选择的决策点我顺手一起说了。如果你有条件建议把 Ubuntu 直接装成 20.04 或 22.04 以上的版本尤其是 NVIDIA 显卡用户新版本的内核和驱动兼容性好太多。16.04 在老旧设备上装装还行新硬件上大概率会碰到网卡不识别、显卡驱动装不上这类问题没必要跟自己过不去。2. 安装前的软硬件准备2.1 硬件检查与 BIOS/UEFI 设置先检查硬件兼容性。市面上绝大多数近十年内的电脑都能顺利跑 Ubuntu但有几个点容易出问题提前确认能省不少事。第一是内存建议至少 8GB。不是 Ubuntu 本身要吃多少内存而是你装完系统后跑项目、开浏览器、挂 IDE8GB 是起步水平。第二是磁盘空间Ubuntu 所在硬盘建议至少 120GB如果你还要在 Ubuntu 里做深度学习模型训练或者大数据处理空间当然是多多益善。第三是显卡NVIDIA 用户要注意Ubuntu 安装时可以顺便勾选安装第三方软件这会把 NVIDIA 闭源驱动一并装好不用装完系统再费劲去命令行里配。BIOS 设置是重头戏我按重要性排个序关闭 Secure Boot。这个一定要关否则 Ubuntu 的第三方内核模块比如 NVIDIA 驱动加载时会直接被拒。虽然 16.04 之后的新版本开始逐步支持 Secure Boot但为了不给自己找麻烦装机阶段直接关掉最省心。把 SATA 模式设为 AHCI。如果你原来的 Windows 是装在 IDE 模式下的老机器常见改成 AHCI 后 Windows 可能直接蓝屏所以这个操作要在装 Windows 之前就设好。新机器默认就是 AHCI不需要动。确认启动模式用的是 UEFI。2012 年之后的电脑基本都是 UEFI 引导了但也有部分机型默认开了 CSM传统 BIOS 兼容模式。既然要从零开始装双系统我建议统一用 UEFI 模式 GPT 分区表这是现代操作系统的标准组合引导恢复起来也方便。2.2 系统镜像下载与启动盘制作镜像下载这块我直接给你最稳的渠道。Windows 10 的 ISO 从微软官网下载就行不用去第三方站点碰运气。打开官网的下载 Windows 10页面选择下载工具用 Media Creation Tool 直接生成 U 盘启动盘或者选下载 ISO 文件再自己用工具写盘都行。我个人习惯下载 ISO因为这样还能顺便保存一份镜像以后重装或者做虚拟机都用得上。Ubuntu 的镜像去官网下载中文官网和 ubuntu.com 都行。注意下载的是桌面版Desktop不是服务器版。16.04 时代的文件名是 ubuntu-16.04.7-desktop-amd64.iso 这种格式如果是 22.04 就是 ubuntu-22.04.x-desktop-amd64.iso认准 amd64 架构就没问题。写盘工具Windows 下我用 Rufus简单可靠。U 盘大小建议 8GB 以上因为新版 Ubuntu 的镜像本身就 4GB 多。在 Rufus 里分区类型选 GPT目标系统类型选 UEFI非 CSM文件系统保持默认的 FAT32 就行。还有一点容易被忽略Rufus 在写 Ubuntu 镜像时可能会弹出提示问你是以 ISO 模式还是 DD 模式写入选 DD 模式。ISO 模式在 Windows 镜像上是标准做法但 Ubuntu 镜像必须用 DD 模式否则 U 盘启动时会报 boot 设备找不到。如果你本来就在 Linux 环境里直接用 dd 命令写 U 盘更利索sudo dd ifubuntu-16.04.7-desktop-amd64.iso of/dev/sdX bs4M statusprogress注意of/dev/sdX 这里 X 是 U 盘对应的盘符千万别写错。用 lsblk 先确认一下哪个是你的 U 盘。2.3 磁盘规划与数据备份动手之前数据备份永远是第一优先级这不是例行公事是真的会撞上意外。先列个表格说清楚我的经典双硬盘规划方案硬盘系统分区方案数据存放硬盘 AWindows 10系统盘 C: 数据盘 D:日常办公、游戏、Windows 专属软件硬盘 BUbuntu/boot, /, /home, swap开发项目、服务端脚本、Docker 容器Windows 和 Ubuntu 完全独立各自拥有完整的系统和用户数据分区。这样做的核心好处是两个系统互不依赖任何一个系统坏了重装都不会影响另一个。我见过太多人把 /home 和 Windows 数据混放在一个 NTFS 分区最后 Linux 下误删了 Windows 里的文件欲哭无泪。如果你手头只有一块硬盘也可以退而求其次把这一个硬盘先切成两个主分区一半给 Windows 装系统一半留给 Ubuntu。Ubuntu 安装时的分区选择在其他选项里手动指定那个空分区需要注意不要在 Windows 的数据盘上装系统不然 Windows 会直接不认盘。备份方面Windows 用户建议做一个系统镜像备份控制面板 - 备份和还原 - 创建系统映像把整个 C 盘备份到外部硬盘。Ubuntu 用户如果原来已经跑过 Linux建议直接 rsync 关键目录到外部存储rsync -avz /home/用户名/ /media/用户名/移动硬盘路径/这个命令会把你的家目录完整镜像到移动硬盘包括隐藏文件。装机这种事多花十分钟备份能给你省一整天的后悔药。3. Windows 10 与 Ubuntu 双系统的安装流程3.1 Windows 10 安装实操要点双系统的安装顺序有一个铁律先装 Windows再装 Ubuntu。这个顺序几乎不可打破原因在于 Windows 的引导器安装时会覆盖掉主引导记录并不识别 Linux 的存在而 Ubuntu 的 GRUB 安装时却能自动探测到 Windows 的引导入口。你先装好 WindowsUbuntu 装完后 GRUB 能自动把 Windows 加进启动菜单。反过来先装 Ubuntu 再装 WindowsWindows 会把 Ubuntu 的引导抹掉你还得手动修复一次。装 Windows 的时候有几件事要顺手做掉后面能省不少麻烦。首先Windows 安装分区用手动。安装程序进入你想将 Windows 安装在哪里时选择硬盘 A如果上面有旧分区全部删掉然后直接新建一个主分区给系统。这时候安装程序会自动生成系统保留分区ESP/MSR不用管它让 Windows 自己管理。其次装完 Windows 后先进系统把网卡驱动、芯片组驱动、显卡驱动全部装好并完成一次完整的系统更新。这一步很关键因为如果你装完 Ubuntu 才发现 Windows 某个驱动有问题切回 Windows 时又是一轮折腾。最后在 Windows 的电源设置里把快速启动关掉。这个功能默认是开启的它的机制是关机时把内核会话写入休眠文件下次开机直接从休眠恢复。听起来很方便但它会导致 Ubuntu 挂载 Windows 的 NTFS 分区时出现文件锁死甚至数据损坏。控制面板 - 电源选项 - 选择电源按钮的功能取消勾选启用快速启动。3.2 Ubuntu 安装与分区实战Ubuntu 那块硬盘建议先把整块盘清空如果有旧数据先备份然后在安装时选择清除整个磁盘并安装 Ubuntu或者手动分区都行。如果你打算以后在 Ubuntu 下做大量数据读写我建议手动分区虽然多几个步骤但可以让分区边界更合理。进入 Ubuntu 安装器后语言选中文或者 English都行。安装类型选择其他选项这时候连你两块硬盘的分区表都会列出来。我的推荐手动分区方案如下分区目录大小类型用途说明/boot500MB ~ 1GBext4存放内核和引导文件/50GB ~ 80GBext4系统根目录软件都装这里swap和内存大小一致swap虚拟内存建议与内存等大/home剩余全部空间ext4用户数据、项目、缓存我对着这个表逐个讲下理由。/boot 独立分出来是为了防止系统根分区写满尤其是日志和包缓存膨胀时导致开机引导失效。500MB 完全够内核升级会同时保留几个旧版本这个空间足够放十来个内核镜像别贪多给根分区多留点更实在。/ 根分区 50GB 起步日常开发、装软件、跑 Docker 都够了。如果你计划在 Ubuntu 里安装大型数据集、深度学习的模型权重或者用 Android Studio 这类吃磁盘的工具建议直接给 100GB。swap 分区讨论的人比较多。旧观念是内存的两倍那是机械硬盘时代的经验。现代电脑内存普遍 16GB 起步swap 和内存等大已经非常宽裕如果你内存只有 8GBswap 可以给 8GB防止偶尔内存爆掉卡死。如果你打算启用休眠suspend-to-diskswap 需要大于等于内存大小。16.04 之后系统也能用 swap 文件代替 swap 分区但为了兼容性分区方案还是 swapon 更稳妥。/home 独立分区是很多人用 Linux 多年的良好习惯。以后重装系统时只需要重新挂载 /home 分区不勾选格式化你的文件和配置全部还在。这一点和 Windows 里 D 盘数据不随系统重装消失是同一个道理。有一个细节容易踩坑引导程序安装位置。在分区界面的底部会有一个本引导程序安装到哪个设备的选项默认可能是 /dev/sda。这里要仔细看必须选择 Ubuntu 所在的那块硬盘比如 /dev/sdb。如果你默认选了 /dev/sdaWindows 所在盘GRUB 装上去虽然也能用但一旦 Windows 更新或你重装 Windows整个引导又会变成一团乱麻。物理隔离从一开始就做好选中你自己的 Ubuntu 硬盘。分区完成后点现在安装。安装过程中会让你设置用户名、主机名和密码这里建议都用简单的纯英文避免某些软件或终端路径下出现中文乱码问题。安装完成后重启时按 F12或 F2 进 BIOS选择从 Ubuntu 所在硬盘启动。这时看到的 GRUB 界面应该有 Ubuntu 的启动项Windows 的启动项通常在后面几个版本里会自动探测到如果没有等进系统后执行一次 sudo update-grub 即可。4. 引导管理、默认系统切换与系统时间配置4.1 GRUB 引导修复与双系统识别绝大多数双硬盘装完 Ubuntu 后第一次开机就都能正常显示 GRUB 菜单。但有两个高概率场景需要你手动处理引导场景一GRUB 界面只显示 Ubuntu看不到 Windows。这个问题基本就是 GRUB 没有自动探测到 Windows 引导。进 Ubuntu 终端执行sudo update-grub这个命令会重新扫描所有磁盘上的可引导系统并把 Windows Boot Manager 加进启动菜单。执行完再重启GRUB 菜单上就会出现 Windows 的选项。如果执行后仍然看不到大概率是没有安装 os-prober 组件装一下再重新更新一次sudo apt install os-prober sudo update-grub场景二开机连 GRUB 都进不去直接黑屏或者卡在某个 boot 错误。这通常说明引导坏了也不要慌用 Ubuntu 的 Live USB 重启进入试用模式在终端里执行 boot-repair 工具sudo add-apt-repository ppa:yannubuntu/boot-repair sudo apt update sudo apt install boot-repair boot-repair打开后选Recommended repair它会自动修复 GRUB 并重建引导菜单。这个工具我实际用过很多次修复成功率非常高堪称装机救命稻草。4.2 修改默认启动顺序装好双系统后有一个非常常见的需求想把默认启动项改成 Windows或者改成 Ubuntu。默认启动项目前由 /etc/default/grub 文件里的 GRUB_DEFAULT 控制。先看一下当前的行sudo cat /etc/default/grub | grep GRUB_DEFAULT默认一般是 0表示 GRUB 菜单的第一个条目通常是 Ubuntu。如果你想默认启动 Windows先要知道 Windows 在菜单里的位置。执行sudo grep menuentry /boot/grub/grub.cfg把 Windows 那行的菜单标题抄出来。然后编辑 /etc/default/grubsudo nano /etc/default/grub把 GRUB_DEFAULT0 改成GRUB_DEFAULTWindows Boot Manager (on /dev/sda1)注意引号里的文字要和你 grub.cfg 里显示的一模一样或者也可以用菜单序号比如 GRUB_DEFAULT2 表示第三个菜单项。改完保存执行更新sudo update-grub重启生效。如果你只是临时想切一次系统直接在 GRUB 菜单里选中并按回车就行不修改配置文件。4.3 双系统时间错乱问题这是我被问得最多的问题为什么装完 Ubuntu 后回到 Windows 发现时间差了 8 小时原因很简单Windows 把硬件时钟RTC当作本地时间Linux 把硬件时钟当作 UTC 时间。你在中国UTC8Windows 开机时把硬件时间直接当成本地时间显示Ubuntu 开机时把硬件时间当成 UTC再换算成北京时间于是两块系统之间永远差 8 个小时。最省事的解决办法让 Ubuntu 也把硬件时钟当本地时间。执行sudo timedatectl set-local-rtc 1执行完重启一遍两个系统的时间就一致了。这个命令在 16.04 之后的版本中都有效属于双系统装机后的必配项。4.4 双系统间的数据共享与开发环境优化两个系统装归装好了日常使用时你肯定会遇到两个系统里的数据怎么互通的问题。最简单直接的方式是共享一个 NTFS 数据分区。Windows 原生的 NTFS 格式Ubuntu 下开箱即支持读写不需要额外软件。我的建议是在两块硬盘之外如果你还有第三块数据盘把它格式化成 NTFSWindows 里当 E 盘用Ubuntu 里挂载到 /mnt/data两边都能访问。如果没有第三块盘也可以把 Windows 的数据分区直接挂载到 Linuxsudo mount -t ntfs-3g /dev/sda3 /mnt/windata在 /etc/fstab 里加一行实现开机自动挂载省得每次重启手动敲。还要提醒一句访问 Windows 分区里的文件时不要去动系统文件C 盘的 Windows 目录、Users 下的配置文件只读取你自己的文档、下载、项目就好。跨系统修改系统文件最容易把 Windows 弄崩。开发环境的字体也顺手推荐一下。如果你用 Ubuntu 写代码默认的 Ubuntu Mono 字体虽然清晰但总感觉少了点味道。想接近 macOS 那种优雅的代码字体体验可以试试 JetBrains Mono 或者 Fira Codesudo apt install fonts-jetbrains-mono装完在编辑器VS Code、JetBrains 家的 IDE 都支持里把字体设置为 JetBrains Mono连字效果和圆润度几乎就是 macOS 观感。这是我在 Windows 和 Ubuntu 双系统间切换开发时最满意的细节之一。5. 常见问题与排查技巧实录5.1 引导相关故障速查表现象原因解决方案开机直接进 Windows没有 GRUBBIOS 启动顺序仍是 Windows 硬盘优先进 BIOS 将 Ubuntu 硬盘设为第一启动项GRUB 里没有 Windows 选项os-prober 未识别sudo update-grub 确认 os-prober 安装进 Ubuntu 后 Windows 的盘看不到NTFS 分区未挂载或处于休眠状态先正常重启进一次 Windows关闭快速启动再试装完 Ubuntu 后 Windows 引导丢失GRUB 安装位置或引导修复干扰用 boot-repair 修复或 Windows 安装盘启动修复引导开机黑屏卡在竖线显卡驱动问题或内核参数不对在 GRUB 里按 e 修改启动参数加 nomodeset 试试5.2 Ubuntu 安装时无法识别 Windows个别电脑装 Ubuntu 时安装器看不到 Windows 的引导分区或者 GRUB 无法探测到 Windows。这种情况常见于两块硬盘各自的 ESP 分区都处于激活状态Windows 的 EFI 分区和 Ubuntu 的 EFI 分区互相干扰。解决办法有两步。第一步进 BIOS把 CSM 模式关闭只用 UEFI 模式启动。很多主板在 CSM 开启时UEFI 的引导探测会有兼容性混乱。第二步如果 UEFI 模式下还是认不到 Windows直接在 Ubuntu 的 GRUB 菜单里手动增加一个链式引导条目。在 /etc/grub.d/40_custom 文件末尾追加menuentry Windows 10 { search --setroot --fs-uuid Windows_EFI分区的UUID chainloader /EFI/Microsoft/Boot/bootmgfw.efi }UUID 可以通过 sudo blkid 查到找到那个 vfat 类型、label 通常是 ESP 或 SYSTEM 的分区即可。追加后执行 sudo update-grub重启后 GRUB 菜单里就会出现 Windows 10 手动入口。5.3 Windows 更新后 Ubuntu 启动项消失这是单硬盘双系统最经典的惨剧双硬盘方案虽然概率低但也不是完全碰不到。Windows 大版本更新时会把所有其他系统的引导信息从主板 NVRAM 里清掉导致开机直接进 Windows看不到 GRUB。在双硬盘方案里修复思路很简单进 BIOS 把 Ubuntu 的硬盘启动优先级拉回第一如果 BIOS 里还能看到 Ubuntu 硬盘的引导项一切照旧。如果 BIOS 里直接连 Ubuntu 硬盘都识别不到用 Live USB 启动进系统后执行两次命令sudo mount /dev/sdb2 /mnt sudo grub-install --boot-directory/mnt/boot /dev/sdb sudo umount /mnt这里 /dev/sdb2 要替换成你 Ubuntu 根分区所在的实际分区号/dev/sdb 替换成 Ubuntu 所在的实际硬盘。执行完重启GRUB 就回来了。5.4 关于双系统日常使用的一些建议最后说几个我用过很久后总结出来的心得。Windows 里关闭快速启动这个事真的很重要我前面已经提过一次但值得再强调一遍。开快速启动时Windows 关机其实不是完整关机而是把系统内核会话写进休眠文件。此时 NTFS 分区处于锁定状态Ubuntu 挂载这个分区时会直接报错因为文件系统是脏状态。如果你不想关快速启动那就每次在 Windows 里点重启而不是关机再切到 Ubuntu也能绕开这个问题。Windows 推送大更新之前建议手动进 BIOS 临时把 Ubuntu 的硬盘设为第一启动有时候 Windows 更新过程会触发一次重启如果恰好从 GRUB 菜单进入了 Ubuntu你可能还觉得一切都好实际上系统更新并没有完成。这个情况我遇到过几次。Ubuntu 的内核更新也是双系统出问题的来源之一。每次更新内核后GRUB 会自动重新生成菜单正常情况下没问题。但如果你反反复复更新内核、又经常手工改 grub.cfg时间久了容易留下冗余的旧内核占用启动时间。可以用这个命令清理旧内核sudo apt autoremove它会自动移除不再使用的旧内核镜像保持 /boot 目录干净。对于打算用这台机器长期开发的用户我强烈建议把 Ubuntu 的 /home 独立分区这件事认真考虑进去。以后系统升级、重装、折腾坏了想恢复到出厂状态只要不动 /home你的代码、配置、SSH 密钥、Docker 数据全都完好在原地。这是双系统时代最值钱的一条经验。还有一个小细节第一次进 Ubuntu 后记得安装一下 ssh 服务方便你用终端从别的设备连过来操作sudo apt install openssh-server万一 Ubuntu 界面卡死或者你想远程处理问题SSH 是救命通道。装双系统这件事本质上是一次磁盘规划和引导理解的实战。只要你理解了 Windows 引导器和 GRUB 的差别、理解了磁盘分区和 EFI 分区的作用绝大多数问题都能靠逻辑推出来。我实际操作中最深的体会是不要图快跳过备份和分区规划真正让你崩溃的往往不是装系统本身而是装到一半发现该留的没留、该分的没分。你在这套双硬盘方案上多花半小时做规划后续用一年都不会出幺蛾子。
返回列表