ARTICLE DETAIL

资讯详情

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

Windows10 装 Ubuntu20.04 双系统:UEFI+GPT 下最容易翻车的三个环节

Windows10 装 Ubuntu20.04 双系统:UEFI+GPT 下最容易翻车的三个环节 简介这份PDF图文教程面向需要在Windows 10基础上加装Ubuntu 20.04 LTS的开发者、运维人员及计算机专业学生帮助零基础用户完成UEFIGPT环境下的双系统部署。内容覆盖镜像下载与Rufus启动盘制作、磁盘压缩分区、关闭快速启动、BIOS安全启动与启动模式设置、与Windows Boot Manager共存的安装方式以及引导界面美化和双系统时间不同步的修复思路步骤配有截图便于对照操作。资源包共1个文件为PDF格式大小约7.96MB单文件结构适合离线阅读与打印。目前已有16474人学习下载说明该教程在双系统安装场景中具有较高的参考价值。读者可据此独立完成从准备到后续配置的完整流程减少因分区、引导或时间设置不当导致的反复尝试适合作为装机与系统学习的实操参考。1. Windows10 装 Ubuntu20.04 双系统UEFIGPT 下最容易翻车的三个环节很多人第一次在 Windows10 上装 Ubuntu20.04 双系统卡住的地方往往不是分区本身而是 UEFI 与 GPT 这套组合带来的启动项管理问题。你可能已经看过不少 ubuntu20.04安装教程照着分区、写入、重启结果开机直接进 Windows连 GRUB 菜单都没见过或者装完 Ubuntu 后 Windows 的引导被覆盖两边都进不去。这类问题在传统 LegacyMBR 时代很少见但在 UEFIGPT 环境下几乎是新手必经的坑。这篇内容面向的是手里有一台预装 Windows10 的机器、想再装一个 Ubuntu20.04 做开发或学习、但不想重装整个硬盘的人。我会按真实操作顺序把 UEFI 启动项、GPT 分区表、EFI 系统分区这三个核心点讲清楚再给出可复现的步骤和参数。读完你应该能独立完成一次双系统安装并且在出问题时知道该看哪里而不是盲目重装。2. 装之前先把 UEFI、GPT 和 EFI 分区这三件事理清2.1 UEFI 启动模式和 Legacy 到底差在哪UEFI 和 Legacy 最直接的区别在启动流程。Legacy 靠 MBR 分区表里的引导代码找操作系统硬盘第一个扇区就是引导记录UEFI 则是固件直接读取硬盘上某个 FAT32 分区里的 .efi 文件来启动。这个 FAT32 分区就是 EFI 系统分区通常 100MB 到 500MBWindows10 安装时会自动创建。为什么这件事重要因为 Ubuntu20.04 的安装镜像在 UEFI 模式下启动时安装器会把 GRUB 引导程序写进 EFI 分区而不是写进硬盘 MBR。如果你用 Legacy 方式启动 U 盘安装器就会按 MBR 逻辑走结果和 Windows 的 UEFI 启动方式冲突轻则开机没有 Ubuntu 选项重则 Windows 也进不去。判断当前 Windows10 是不是 UEFI 启动最稳的方法是打开「磁盘管理」看系统盘有没有一个叫「EFI 系统分区」的 FAT32 小分区。有就是 UEFIGPT没有基本就是 LegacyMBR。另一个方法是运行msinfo32在「系统摘要」里看「BIOS 模式」这一行显示 UEFI 就是 UEFI 启动。提示如果 BIOS 模式显示「传统」而你想装 Ubuntu20.04 双系统建议先确认主板是否支持 UEFI。近十年的机器基本都支持但有些品牌机默认开了 CSM 兼容模式需要进 BIOS 关掉 CSM 才能以纯 UEFI 启动。2.2 GPT 分区表下给 Ubuntu 留空间的实际操作GPT 分区表相比 MBR 最大的好处是支持超过 2TB 的硬盘和更多主分区。Windows10 在 UEFI 模式下默认就用 GPT所以你要做的是从现有 Windows 分区里压缩出一块未分配空间给 Ubuntu而不是去动分区表类型。具体操作右键「此电脑」→「管理」→「磁盘管理」找到 Windows 所在的 C 盘或数据盘右键「压缩卷」。系统会先查询可压缩空间然后你输入要压缩的量。给 Ubuntu20.04 的建议是至少 50GB如果打算装 ROS、CUDA 或者深度学习环境直接给 100GB 以上。压缩完成后会出现一块黑色的「未分配」空间这就是 Ubuntu 安装器要用的区域。这里有个血泪经验Windows 的压缩卷功能受页面文件和系统保护文件影响有时候明明有 200GB 空闲却只能压缩出 20GB。遇到这种情况先关掉系统保护里的还原点再把页面文件临时设到别的盘或者禁用重启后再压缩通常能释放出更多空间。2.3 EFI 系统分区为什么不能删也不能随便格式化EFI 系统分区是 UEFI 启动的核心。Windows10 的引导文件、Ubuntu 的 GRUB 引导文件都放在这个分区里路径分别是EFI/Microsoft/Boot/bootmgfw.efi和EFI/ubuntu/grubx64.efi。安装 Ubuntu 时安装器会自动识别已有的 EFI 分区并把 GRUB 写进去你不需要手动创建更不能格式化它。有些教程会教你单独给 Ubuntu 分一个 EFI 分区这在双系统场景下反而容易出问题。因为主板 NVRAM 里的启动项可能指向不同的 EFI 分区导致开机菜单混乱。常见做法是双系统共用 Windows 已经创建的那个 EFI 分区安装器里把「安装启动引导器的设备」选成这个 EFI 分区对应的硬盘通常是/dev/sda或/dev/nvme0n1而不是某个具体分区。注意如果你在安装器里看到多个 EFI 分区一定要选 Windows 正在用的那个。判断方法是看分区大小和挂载点Windows 创建的通常是 100MB 或 260MB挂载点显示为/boot/efi。3. 制作启动盘到分区安装的完整命令与参数3.1 用 Rufus 制作 UEFI 启动盘的关键选项Ubuntu20.04 的 ISO 镜像可以从官方渠道获取下载后校验 SHA256 再写入 U 盘。制作工具在 Windows 上常用 Rufus免费且对 UEFI 支持明确。打开 Rufus 后设备选你的 U 盘引导类型选择下载好的 Ubuntu20.04 ISO。分区类型选 GPT目标系统选 UEFI非 CSM。文件系统保持 FAT32簇大小默认。其他选项不用动点击开始后会提示会清除 U 盘数据确认即可。# 在 Ubuntu 或 WSL 里校验 ISO 完整性 sha256sum ubuntu-20.04.6-desktop-amd64.iso # 对比官方公布的 SHA256 值一致才继续这段命令的作用是确认下载的 ISO 没有损坏。参数说明sha256sum是计算文件哈希的工具后面跟 ISO 文件路径。如果输出值和官方页面一致说明文件完整不一致就重新下载不要用损坏的镜像做启动盘否则安装中途会报错。写入完成后U 盘里会有EFI文件夹和casper文件夹等。如果用的是 Ventoy 这类多镜像工具把 ISO 直接复制进 U 盘即可Ventoy 会自动处理 UEFI 启动。3.2 BIOS 设置里必须确认的四项重启机器在品牌 Logo 出现时按对应按键进 BIOS。不同品牌按键不同常见的是 F2、F12、Del、Esc。进 BIOS 后重点看四项第一Secure Boot 建议先关闭。Ubuntu20.04 虽然支持 Secure Boot但部分显卡驱动和第三方内核模块在开启时会加载失败。装完系统后再按需开启。第二SATA 模式确认是 AHCI 而不是 RAID。有些笔记本默认 RAIDUbuntu 安装器会看不到硬盘。第三启动顺序把 U 盘调到第一位或者用启动菜单临时选 U 盘。第四确认 CSM 已关闭保证纯 UEFI 启动。保存退出后机器会从 U 盘启动进入 GRUB 菜单选「Try Ubuntu」或「Install Ubuntu」都可以。建议先选 Try Ubuntu 进桌面用sudo fdisk -l或 GParted 确认硬盘识别正常再点桌面上的安装图标。3.3 安装类型选「其他选项」后的分区参数安装器走到「安装类型」这一步时不要选「清除整个磁盘」或「与 Windows 一起安装」。前者会毁掉 Windows后者虽然方便但分区布局不可控。选「其他选项」手动分区。在分区界面找到之前压缩出来的「空闲」空间选中它点「」号创建分区。推荐的分区方案如下挂载点大小类型说明/boot/efi已有不新建EFI 系统分区共用 Windows 的 EFI 分区/30GB 以上ext4系统根目录/home剩余大部分ext4用户数据重装系统可保留swap内存大小或 8GBswap休眠和内存不足时用如果内存 16GB 以上且不打算用休眠swap 可以给 4GB 到 8GB。分区时注意「安装启动引导器的设备」要选成硬盘本身比如/dev/nvme0n1不是/dev/nvme0n1p1。# 安装完成后在 Ubuntu 里检查 EFI 分区挂载情况 lsblk -f # 输出里应该能看到 /boot/efi 挂载在某个 FAT32 分区上lsblk -f会列出所有块设备及其文件系统、挂载点。参数-f表示显示文件系统信息。确认 EFI 分区挂载正确是双系统能正常引导的前提。3.4 安装完成后第一次重启要看什么安装结束提示重启时拔掉 U 盘再按回车。如果一切正常你会看到 GRUB 菜单里面有 Ubuntu、Windows Boot Manager 和高级选项。选 Ubuntu 能进系统选 Windows 能进 Windows说明双系统引导成功。如果直接进了 Windows没有 GRUB 菜单说明主板 NVRAM 里的启动顺序把 Windows 排在了前面。重启进 BIOS把「ubuntu」这个启动项调到第一位。如果 BIOS 里根本没有 ubuntu 选项说明 GRUB 没写进 EFI 分区需要回 Ubuntu Live 环境用efibootmgr手动添加或者用boot-repair修复。4. 双系统引导出问题时的排查顺序4.1 开机没有 GRUB 菜单直接进 Windows现象装完 Ubuntu 重启屏幕没有任何选择菜单直接进 Windows。原因主板 UEFI 启动顺序里 Windows Boot Manager 优先级高于 ubuntu或者 GRUB 没有正确写入 EFI 分区。解决先进 BIOS 看启动项列表把 ubuntu 调到第一位。如果列表里没有 ubuntu用 Ubuntu 安装 U 盘启动进 Live 环境联网后安装并运行 boot-repairsudo add-apt-repository ppa:yannubuntu/boot-repair sudo apt update sudo apt install boot-repair boot-repair运行后选「推荐修复」它会自动检测 EFI 分区并重写 GRUB。参数说明add-apt-repository添加第三方软件源apt install安装 boot-repair。修复完成后重启GRUB 菜单应该会出现。4.2 GRUB 菜单里有 Ubuntu 但进不去系统现象能看到 GRUB选 Ubuntu 后卡在黑屏、光标闪烁或者报error: unknown filesystem。原因根分区 UUID 变了或者/etc/fstab里的挂载项和实际分区对不上。常见于安装时分区顺序调整过或者后来动过分区表。解决在 GRUB 菜单按e编辑启动项找到rootUUIDxxxx这一行记下 UUID。进 Live 环境用blkid查看实际分区 UUID对比是否一致。不一致就修改/etc/fstab和 GRUB 配置# 在 Live 环境挂载原系统根分区 sudo mount /dev/nvme0n1p5 /mnt sudo mount /dev/nvme0n1p1 /mnt/boot/efi # 查看实际 UUID blkid # 编辑 fstab sudo nano /mnt/etc/fstab把 fstab 里的 UUID 改成blkid输出的实际值保存后重启。如果 GRUB 配置里的 UUID 也不对需要 chroot 进去更新sudo mount --bind /dev /mnt/dev sudo mount --bind /proc /mnt/proc sudo mount --bind /sys /mnt/sys sudo chroot /mnt update-grub grub-install /dev/nvme0n1 exitchroot把当前环境切换到原系统update-grub重新生成 GRUB 配置grub-install把 GRUB 写回 EFI 分区。注意/dev/nvme0n1要换成你的实际硬盘名。4.3 Windows 快速启动和休眠导致的分区只读现象Ubuntu 里能挂载 Windows 分区但只能读不能写或者挂载时报错。原因Windows10 默认开启了快速启动关机时其实把系统状态写进了休眠文件NTFS 分区处于未完全卸载状态。Ubuntu 的 ntfs-3g 驱动检测到这种情况会以只读方式挂载避免损坏文件系统。解决进 Windows在「控制面板」→「电源选项」→「选择电源按钮的功能」里点「更改当前不可用的设置」取消勾选「启用快速启动」。然后在管理员命令提示符里执行powercfg /h off关闭休眠。彻底关机一次再进 Ubuntu 就能正常读写 NTFS 分区了。提示如果只是临时需要写入可以在 Ubuntu 里用sudo mount -t ntfs-3g -o remove_hiberfile /dev/nvme0n1p3 /mnt强制挂载但remove_hiberfile会删掉 Windows 的休眠文件下次 Windows 启动会变慢。不建议频繁用。4.4 时间不同步Windows 和 Ubuntu 差 8 小时现象从 Ubuntu 重启进 Windows系统时间慢了或快了 8 小时。原因Windows 把硬件时钟当本地时间Ubuntu 默认当 UTC。两者对 RTC 的理解不一致。解决在 Ubuntu 里执行一条命令让 Ubuntu 也把硬件时钟当本地时间timedatectl set-local-rtc 1 --adjust-system-clock参数说明set-local-rtc 1表示使用本地时间写入 RTC--adjust-system-clock立即调整系统时钟。执行后重启两边时间就一致了。另一种做法是改 Windows 注册表让它用 UTC但改 Ubuntu 更简单副作用也小。4.5 安装时看不到硬盘或分区现象Ubuntu 安装器走到分区那一步列表里只有 U 盘没有内置硬盘。原因BIOS 里 SATA 模式设成了 RAID或者 Intel RST 快速存储技术开着Linux 内核默认不识别。解决进 BIOS 把 SATA 模式从 RAID 改成 AHCI。注意如果 Windows 是在 RAID 模式下装的直接改 AHCI 会导致 Windows 蓝屏。正确做法是先在 Windows 里用安全模式切换或者用bcdedit设置safeboot后再改。具体步骤是管理员命令提示符执行bcdedit /set safeboot minimal重启进 BIOS 改 AHCI再进安全模式执行bcdedit /deletevalue safeboot正常重启。5. 装完之后值得做的三件收尾事5.1 用 efibootmgr 管理启动顺序而不是反复进 BIOS装好双系统后如果经常需要在 Windows 和 Ubuntu 之间切换每次进 BIOS 改顺序很麻烦。Ubuntu 里可以用efibootmgr直接调整 NVRAM 启动项顺序# 查看当前启动项 sudo efibootmgr -v # 假设输出里 ubuntu 是 Boot0001Windows 是 Boot0000 # 把 ubuntu 调到第一位 sudo efibootmgr -o 0001,0000-v显示详细信息包括每个启动项对应的 .efi 文件路径。-o后面跟启动项编号按顺序排列。这样不用重启进 BIOS 就能改默认启动系统。如果哪天 GRUB 出问题也可以用efibootmgr -b 0001 -B删除某个启动项再重新添加。5.2 给 Ubuntu 根分区留快照后悔药双系统最怕的是 Ubuntu 这边折腾坏了重装又得重新分区、重新配环境。如果根分区用的是 ext4可以用 Timeshift 做系统快照。Timeshift 支持 RSYNC 和 BTRFS 两种模式RSYNC 模式对 ext4 友好快照存在另一个分区或外置硬盘上。安装和配置sudo apt install timeshift sudo timeshift --create --comments clean install --tags D--create创建快照--comments加备注--tags D标记为按需快照。第一次快照建议在刚装完系统、更新完驱动之后做这样恢复出来就是一个干净可用的环境。之后每次大改之前手动跑一次出问题进 Live 环境用 Timeshift 恢复比重新安装省几个小时。5.3 关闭 Ubuntu20.04 休眠功能避免 swap 分区被反复折腾Ubuntu20.04 默认可能启用休眠休眠时会把内存内容写入 swap 分区。如果 swap 给得不够大休眠会失败如果 swap 够大每次休眠又会在硬盘上写入大量数据。对于双系统用户更常见的做法是直接关掉休眠用关机代替。# 查看当前休眠状态 systemctl status sleep.target # 关闭休眠 sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.targetmask会把这些 target 链接到/dev/null彻底禁用。参数说明sleep.target是休眠相关 target 的入口suspend.target是挂起hibernate.target是休眠hybrid-sleep.target是混合睡眠。全部 mask 掉之后系统菜单里的休眠选项会消失合盖默认也不挂起。如果之后想恢复把mask换成unmask即可。我自己的习惯是装完双系统先做一次 Timeshift 快照再关休眠最后用efibootmgr把 Ubuntu 设为默认启动。这样日常开发在 Ubuntu需要 Windows 时重启选一下就行两边互不干扰。希望帮到你。本文还有配套的精品资源点击获取
返回列表