尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

双硬盘安装Ubuntu与Win10双系统:Grub引导与分区避坑指南

双硬盘安装Ubuntu与Win10双系统:Grub引导与分区避坑指南 1. 装双系统之前先把这些事想清楚先说结论双硬盘装 Ubuntu 16.04 和 Win10 双系统是这几年里最省心的装机方案之一。只要两块硬盘是独立的物理盘系统引导互不干扰坑比单硬盘分区装双系统少一半以上。为什么这么说因为单硬盘双系统最大的痛点在于引导和分区——Grub 和 Windows Boot Manager 抢引导/boot 分区和 Windows 保留分区挤在一起一不小心就把其中一个系统搞到进不去。而双硬盘天然隔离了两套系统的启动文件和系统文件哪怕 Grub 挂了BIOS 里手动选一下启动项也能轻松进 Windows。这个容错率单硬盘完全比不了。在开始之前先确认三件事两块硬盘都是正常的 SATA 或 NVMe 盘BIOS 里都能识别到。你确定好哪块盘装 Windows、哪块盘装 Ubuntu并且清楚 BIOS 的启动顺序怎么进。你需要至少一个 8GB 以上的 U 盘用来做安装盘。另外Ubuntu 16.04 是 2016 年发布的 LTS 版本官方标准支持早在 2021 年就结束。如果你只是学习、跑 ROS 老版本或者公司项目锁定环境那没问题如果是个人新装系统建议 Linux 部分换成 Ubuntu 18.04 或 20.04安装步骤完全一样。这篇文章仍以 16.04 为主线因为很多工控、机器人、科研环境还在用而且它的安装流程在后续版本中基本通用。适合看这篇文章的人第一次折腾 Linux 双系统的小白、实验室里要配深度学习或 ROS 环境的同学、以及想把手头旧机器变成开发机的朋友。整个过程我尽量把每个步骤背后的逻辑讲清楚而不是甩一堆命令让你直接敲。2. 准备工作下载镜像、做启动盘、设置 BIOS2.1 镜像下载与校验先下载 Ubuntu 16.04 的 ISO 镜像注意选择64-bit PC (AMD64) desktop image。服务器版不带图形界面不适合当日常开发机。下载完建议做一下 md5 或 sha256 校验防止下载过程文件损坏导致安装到一半报错。校验命令在 Windows 下用 PowerShell 的 Get-FileHashLinux 下用 md5sum 就行。Win10 的镜像如果现有系统能正常用可以不用重装直接沿用已有 Win10 系统就行。如果 Win10 已经坏了或想全新装建议从官网下载 Media Creation Tool用它做启动 U 盘或者直接在官网下载 ISO 后用 Rufus 写入 U 盘。2.2 制作 Ubuntu 启动 U 盘制作 Ubuntu 启动盘推荐用 RufusWindows 下最稳的工具没有之一。插上 U 盘打开 Rufus设备选对 U 盘引导类型选择刚下载的 Ubuntu ISO分区类型选 GPT目标系统类型选 UEFI非 CSM文件系统保持默认 FAT32点击开始等它写完就行。需要说明的是把 Ubuntu 安装盘做成 GPT UEFI 启动是为了和后面 BIOS 设置里的 UEFI 模式对应。如果 BIOS 设置里用的是 Legacy 模式那 Rufus 里要选 MBR 分区方案。两种方案都能装但混了就会导致 U 盘无法引导。我的建议是全部走 UEFI因为 Win10 默认就是 UEFI 安装Ubuntu 16.04 也完全支持统一模式后续省心。2.3 进 BIOS如何设置启动顺序、关闭 Secure Boot重启电脑开机时猛按对应键进 BIOS台式机常见 Del笔记本常见 F2联想 ThinkPad 是 F1具体看品牌型号。进 BIOS 后主要设置三个地方启动模式确认 UEFI 模式开启关闭 Legacy/CSM。如果主板支持纯 UEFI 就最好Win10 和 Ubuntu 都按 UEFI 装后续引导最干净。Secure Boot建议先关闭。Ubuntu 16.04 对 Secure Boot 的支持没有新版本完善关掉可以避免很多奇怪的引导问题。Win10 在 Secure Boot 关闭状态下也能正常启动不影响日常使用。启动优先级暂时把 U 盘设为第一启动项。装完 Ubuntu 后再把硬盘优先级调回来或者直接在启动界面按 F12/F11 选择临时启动项。这里有个细节如果同时插着两块硬盘BIOS 里会显示每个硬盘的型号。建议装 Windows 时只接 Windows 目标盘装 Ubuntu 时只接 Ubuntu 目标盘。虽然双硬盘互相干扰概率低但安装器偶尔会犯迷糊把引导装到另一块盘上。最稳的流程是先只接 Win10 盘装好 Windows再只接 Ubuntu 盘装 Linux最后两块盘一起接上在 BIOS 里设置默认启动顺序。我后面修复引导时发现99% 的引导错乱问题都是因为安装时两块盘一起插着造成的。3. 分步安装 Win10只留给它一块盘如果你已经有一块装好 Win10 的硬盘直接跳过这一节进入下一步 Ubuntu 安装即可。如果要全新装建议先只接目标盘装 Win10。3.1 用 U 盘启动进入 Win10 安装界面插入 Win10 安装 U 盘开机后按 F12 之类的快捷键调出启动菜单选择 U 盘启动。看到 Windows 安装界面后语言选中文点击“现在安装”。进入后选择“自定义仅安装 Windows高级”。到这里要注意安装路径选择时务必选对目标硬盘。一个小技巧在安装界面的磁盘列表里看容量和硬盘型号确认无误再点下一步别顺手装错盘后面哭都来不及。3.2 分区的注意点不用按 100MB 系统分区手动分Win10 安装器会自动生成 EFI 系统分区、MSR 保留分区和主分区这些都不用人为干预。如果你想自己控制 C 盘大小可以在安装界面里选中整块未分配空间点击“新建”输入大小然后剩下的空间留作未分配或者以后再新建 D 盘。安装过程会重启一两次最后进入 Windows 桌面。然后把网卡驱动、芯片组驱动装好确认 Windows 一切正常。再把 U 盘拔掉关机拔掉 Win10 这块盘准备装 Ubuntu。有些朋友喜欢在 Windows 里把磁盘管理里的硬盘全部初始化其实不必要。只要 BIOS 能识别到安装器能识别到就能直接装。Windows 磁盘管理界面看不到 GPT 分区反而会误导你不用管它。3.3 给 Win10 盘留出后续空间不需要双硬盘方案最香的点就在这里Windows 独占一块盘Ubuntu 独占一块盘不需要在 Windows 盘上腾出未分配空间给 Linux。Windows 盘一整块都是 C 盘或 D 盘怎么开心怎么用Ubuntu 完全不会占用它的空间。这在单硬盘双系统里是做不到的谁用谁知道。4. 安装 Ubuntu 16.04手动分区才是精髓4.1 只接 Ubuntu 目标盘U 盘启动关掉 Win10 硬盘后插入 Ubuntu 启动 U 盘开机进启动菜单选择 U 盘启动。你会看到 Ubuntu 的 GRUB 菜单选“Install Ubuntu”进入安装程序。语言选择中文简体键盘布局默认即可。到“安装类型”这一步时务必选择“其他选项”Something else进入手动分区界面。这一步很多人翻车原因就是选了“清除整个磁盘并安装 Ubuntu”结果装到了不是目标盘的那块盘上。手动分区虽然看着麻烦其实逻辑非常清晰。4.2 分区方案EFI 引导分区、交换分区、根分区双硬盘 UEFI 模式下Ubuntu 必须有一个 EFI 系统分区ESP来存放引导文件。如果整块盘是空白未分区状态安装器会提示没有 EFI 分区那就手动建。推荐分区方案如下分区类型大小挂载点文件系统作用EFI 系统分区512 MB/boot/efiFAT32存放 Ubuntu 引导文件swap内存大小或 2 倍内存swapswap交换空间/剩余全部空间/ext4系统文件和数据注意表里 EFI 分区大小给 512 MB原因有两个Ubuntu 16.04 的引导文件不大512 MB 够用同时留给未来升级内核多出来的 initrd 文件一些冗余。如果你还想在这块盘上装别的 Linux 发行版甚至可以给 1 GB避免以后不够用。具体操作选中未分配空间点击“”新建分区。大小填 512 MB类型选“主分区”位置选“起始”用于“EFI 系统分区”。再选中剩余未分配空间新建 swap 分区大小建议和内存一样大。最后把剩下的空间都划给 / 挂载点文件系统选 ext4。这块盘够大的话也可以单独分 /home 出来但在双硬盘方案里/ 和 /home 分不分都行不分更省心。分区弄好后下方“安装启动引导器的设备”选择 Ubuntu 所在的那块硬盘比如 /dev/sdb千万别选成 Win10 那块盘/dev/sda。这一步是双硬盘装系统的核心一步引导器装在 Ubuntu 盘上就不会碰 Windows 引导。4.3 分区背后的原理为什么要单独分 EFI 分区因为 UEFI 模式下主板会去硬盘的 EFI 分区里寻找 .efi 引导文件。Ubuntu 装完后会在 EFI 分区里生成 grubx64.efiWindows 则有自己的 bootmgfw.efi。两个系统的引导文件分别在各自的硬盘上互不干扰开机时 BIOS 选择从哪块硬盘启动就走哪套引导这就是双硬盘方案流畅的底层逻辑。swap 分区则是在物理内存不够时把数据临时换到磁盘。16.04 对 swap 的依赖还挺强内存如果只有 8 GBswap 建议至少给 8 GB内存 16 GB 及以上给个 8 GB 也够了不必严格按两倍内存来。4.4 安装过程中的常见小问题安装 Ubuntu 16.04 时可能会遇到网络连接慢导致下载更新步骤卡住的情况。这一步网速一般的话直接选“不联网安装”系统装完再手动换源更新安装过程能快不少。另外如果选择“安装第三方软件”显卡驱动和 MP3 解码器可能会在装完后惹出兼容性问题为了稳定这一步也可以不勾后续有需要再加。点击“现在安装”后确认分区改动然后设置用户名、密码、计算机名。这里注意用户名设成简单的英文比如 ubuntu 或你的名字拼音别带空格和特殊字符否则很多编译类工具会出问题。等安装进度走完拔掉 U 盘重启。重启时如果 BIOS 启动顺序里 Ubuntu 盘排在前面会直接进入 Grub 菜单里面能看到 Ubuntu 的启动项和一系列高级选项但此时大概率看不到 Windows。别慌这是正常的双硬盘双系统引导互不感知。你需要在 BIOS 里手动切换启动项或者后期配置 Grub让开机时能选择进哪个系统。下一节就说这个。5. 双系统引导设置Grub 识别 Win10 与启动顺序调整5.1 进入 Ubuntu 后先更新系统并安装 os-prober第一次进 Ubuntu先执行系统更新顺便把 os-prober 装上。os-prober 是 Grub 用来探测其他操作系统的工具装完它再更新 GrubUbuntu 就能自动找到 Windows 的 EFI 引导文件。打开终端执行sudo apt update sudo apt upgrade sudo apt install os-prober然后更新 Grub 配置sudo os-prober sudo update-grub此时终端会扫描所有硬盘找到 Windows Boot Manager 后会提示 Found Windows Boot Manager on /dev/sda1 之类的信息。然后再执行 update-grub把 Windows 启动项写进 Grub 菜单。如果 os-prober 没有找到 Windows千万先别手动改配置文件。原因很可能是两块盘同时插着的时候Ubuntu 的 EFI 分区里没有检测到 Windows 的 .efi 文件。先去 BIOS 确认 Win10 盘是否被识别再检查 Win10 盘上有没有 EFI 分区和 bootmgfw.efi 文件。如果 Win10 盘是 MBR 分区表且 BIOS 用的是 Legacy 模式安装那和 UEFI 的 Ubuntu 引导根本不在一个频道上os-prober 也找不到。这种情况建议统一成 UEFI 模式重装 Win10或者统一成 Legacy 模式重装 Ubuntu别混。5.2 修改 Grub 默认启动项让 Windows 或 Ubuntu 优先Grub 刚装好时默认启动项通常是 Ubuntu且等待时间为 10 秒。想改默认启动项和等待时间要编辑 /etc/default/grub 文件sudo gedit /etc/default/grub里面核心就两个参数GRUB_DEFAULT默认启动项。0 表示第一个菜单项1 表示第二个依此类推。也可以写成菜单项名称比如 Windows Boot Manager (on /dev/sda1)。我通常用数字更省事。GRUB_TIMEOUT菜单等待秒数设成 5 或 3 都行看你手速。改完保存再执行sudo update-grub修改才会生效。这里有个细节GRUB_DEFAULT 如果填的是菜单项的显示名称必须完全一致大小写和空格都不能错建议直接从 Grub 菜单里截图或用 grub.cfg 里的 menuentry 名称复制过来。实际操作中我用数字反而更稳因为菜单项顺序一目了然。5.3 用 Grub Customizer 图形化调整启动顺序实测最省心对新手来说编辑 grub 文件还是不够直观。推荐安装 Grub Customizersudo add-apt-repository ppa:danielrichter2007/grub-customizer sudo apt update sudo apt install grub-customizerUbuntu 16.04 需要先执行 add-apt-repository 添加 PPA如果 PPA 拉取较慢可以等一会儿重试。装好后打开 Grub Customizer界面里能直接看到所有启动项列表选中 Windows 或 Ubuntu点“上移”“下移”就能调整顺序还能改等待时间。改完点击“保存”它内部会帮你执行 update-grub非常方便。使用感受Grub Customizer 像是图形化封装了 Grub 配置流程省去手打命令的麻烦而且能看到各个菜单项的具体名称不用担心打错字。不过要注意Grub Customizer 在菜单项特别多的时候偶尔显示不全这时候还是回终端用 update-grub 更靠谱。6. 双系统下的系统维护技巧与故障修复6.1 Windows 更新后 Ubuntu 引导不见了先别急着重装很多人反映Windows 更新大版本后开机直接进 WindowsGrub 菜单消失。这种情况通常不是 Ubuntu 被删了而是 Windows 更新重置了 EFI 启动项把 Ubuntu 的引导项从 NVRAM 里踢掉了。解决办法不需要重装 Ubuntu只需要从 Ubuntu 启动 U 盘进去重新安装 Grub 引导到 Ubuntu 所在盘的 EFI 分区。具体步骤用 Ubuntu 启动盘启动选择“试用 Ubuntu”进入桌面后打开终端挂载 Ubuntu 根分区和 EFI 分区sudo mount /dev/sdb2 /mnt sudo mount /dev/sdb1 /mnt/boot/efi这里 /dev/sdb2 是根分区/dev/sdb1 是 EFI 分区具体设备名要根据自己的分区情况调整。然后 chroot 进去重新安装并更新 Grubfor i in /dev /dev/pts /proc /sys; do sudo mount --bind $i /mnt$i; done sudo chroot /mnt grub-install /dev/sdb update-grub exit执行完后重启Grub 菜单就回来了。这个流程我实测过好几次比网上很多“重建引导”的命令简洁有效。关键点是挂载顺序别搞反先挂根分区再挂 EFI 分区到 /boot/efi缺一步都会导致 chroot 后 Grub 安装失败。6.2 双系统时间不对Windows 和 Ubuntu 相差 8 小时装好双系统后Windows 和 Ubuntu 切换后时间会差 8 小时。原因是 Windows 把 BIOS 时间当本地时间Ubuntu 把 BIOS 时间当 UTC 时间。解决方法有两条挑一条执行即可。在 Ubuntu 里让系统把硬件时间当作本地时间sudo timedatectl set-local-rtc 1或者让 Windows 使用 UTC 时间需要管理员权限命令行reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation /v RealTimeIsUniversal /t REG_DWORD /d 1我个人推荐在 Ubuntu 里执行第一条一步到位不需要去改注册表。执行后重启两边时间就一致了。6.3 如何彻底卸载 Ubuntu 并恢复 Windows 独占启动如果哪天不想用 Ubuntu 了想着卸载它千万别直接在 Windows 磁盘管理里删掉 Linux 分区就完事那会导致 Grub 残留开机可能直接黑屏卡死。正确步骤是在 Windows 下用磁盘管理删除 Ubuntu 所在硬盘的所有分区。下载并打开 EasyUEFI或类似工具在“管理 EFI 启动项”中删除 Ubuntu 对应的引导项。删除 Ubuntu 盘上的 ESP 分区里的 Ubuntu 文件夹如果还残留。以上步骤完成后重启进入 BIOS把启动项里残留的 Ubuntu 项删掉Windows 就能正常引导。如果是双硬盘更简单直接把 Ubuntu 盘拔了Windows 盘照样开机。这也是双硬盘方案在维护上最爽的地方——系统级隔离想拆就拆。6.4 硬件驱动与双系统切换的几条小建议显卡驱动Ubuntu 16.04 默认的 nouveau 驱动对 N 卡支持一般装 N 卡官方驱动前建议先禁用 nouveau否则会出现开机花屏或循环登录。具体方法是在 /etc/modprobe.d/blacklist.conf 里加入 blacklist nouveau再用 update-initramfs 更新。无线网卡如果 Ubuntu 里 Wi-Fi 不可用很可能是受限驱动未加载。先在 Windows 下确认网卡型号再在 Ubuntu 软件与更新里“附加驱动”标签页启用专有驱动比手动编译模块省事。数据备份双系统切换频繁容易让自己忽略备份。Ubuntu 里建议定期用 Deja Dup 备份 /homeWin10 里用文件历史记录或镜像备份宁可多备份不要在系统崩溃后才后悔。7. 实操心得与避坑汇总跑完一整套双硬盘双系统流程我挑几个真正影响体验的点单独说说。第一两块盘同时插着安装是最大隐患。无论装 Windows 还是装 Ubuntu都建议只接目标盘装完再插上另一块。虽然多花两次插拔的时间但能规避至少一半的引导问题。身边好几个朋友图省事装完发现 Grub 跑到了 Windows 盘、或者 Windows 引导被 Ubuntu 覆盖最后花得时间比插拔硬盘久得多。第二EFI 分区和启动引导器设备的对应关系一定要看准。手动分区完成后界面底部的“安装启动引导器的设备”默认可能是 /dev/sda如果 Ubuntu 装在 /dev/sdb 上一定改成 /dev/sdb。这个选项很多人忽略装完发现开机直接进 Windows、Grub 根本起不来。第三16.04 的软件源镜像要换成国内源。装完系统后 /etc/apt/sources.list 里的源是官方源在中国大陆下载更新速度太慢。换成 aliyun 或 tsinghua 的镜像源再 apt update体验完全是两个世界。注意 16.04 的源用 xenial 版本别照抄 18.04、20.04 的源会报错。第四Ubuntu 16.04 官方源里有些包版本太老比如 Python 3.5、GCC 5.4如果跑一些现代深度学习框架会非常痛苦。需要用 pyenv 或 Docker 装新版本或者干脆升级到 Ubuntu 20.04。我自己在 16.04 上跑 ROS Kinetic 时真是又爱又恨Kinetic 官方只支持 16.04但 Python 环境要小心翼翼配置一不注意就崩。如果项目不锁 ROS Kinetic真心建议直接 Ubuntu 20.04 ROS Noetic省事不少。第五切换系统时强烈建议 BIOS 里把默认启动项设为 Ubuntu 盘然后开机进 Grub 再选 Windows。这样一旦 Linux 出了小问题从 Grub 高级选项里还能进恢复模式修复如果把 Windows 设为默认启动进 Ubuntu 反倒要跑到 BIOS 里切启动项麻烦不少。最后再分享一个小技巧装好双系统后可以在 Ubuntu 里挂载 Windows 盘访问文件默认 16.04 对 NTFS 支持已经不错安装 ntfs-3g 后读写都没问题。这样从 Linux 里直接取用 Windows 桌面的文件省去来回拷贝。反向操作就麻烦一些Windows 读 ext4 分区需要额外装软件尽量别去折腾要交换文件时用 U 盘或者局域网传比什么都稳。这套流程我前后给实验室两三台机器装过照着步骤走基本一遍过。双硬盘双系统的安全感用过的人都知道系统坏了不用担心另一个系统受牵连重装一侧也不影响另一侧引导。这就是它比单硬盘方案更值得推荐的核心原因。
返回列表