
简介这份PDF图文教程面向需要在Windows 10基础上加装Ubuntu 20.04 LTS的开发者、运维人员及计算机专业学生帮助零基础用户完成UEFIGPT环境下的双系统部署。内容覆盖镜像下载与Rufus启动盘制作、磁盘压缩分区、关闭快速启动、BIOS安全启动与启动模式设置、与Windows Boot Manager共存安装、GRUB引导美化以及双系统时间不同步的修复思路步骤配有截图便于对照操作。资源包共1个文件为PDF格式大小约7.96MB单文件结构适合离线阅读与打印。目前已有16474人学习下载说明该教程在双系统安装场景中具有较高参考价值。读者可据此独立完成从准备到后续配置的完整流程减少分区误操作与引导失败风险并掌握时间同步等常见问题的排查方法。1. Windows10 装 Ubuntu20.04 双系统先搞懂 UEFIGPT 这套底层逻辑很多人第一次装 Ubuntu20.04 双系统卡住的不是分区而是开机直接进 Windows连 GRUB 引导界面都看不到。我见过太多人反复重装三四遍最后发现是 UEFI 和 Legacy 模式搞混了。这篇内容就是围绕 Windows10 装 Ubuntu20.04 双系统这条主线把 UEFIGPT 环境下的完整流程、分区参数、引导修复和踩坑记录讲透。适合两类人一是手上只有一台主力机、想保留 Windows10 同时跑 Ubuntu20.04 做 ROS、CUDA 或深度学习开发的工程师二是装过一次但引导失败、想搞清楚 UEFI 启动链到底怎么回事的熟手。整篇按「底层逻辑 → 制作启动盘 → 分区规划 → 安装执行 → 避坑 → 引导修复」推进每一步都给可复现的命令和参数。2. UEFIGPT 启动链为什么你的双系统看不到 GRUB2.1 UEFI 和 Legacy BIOS 的启动路径差异要理解双系统为什么容易翻车得先看清 UEFI 和 Legacy 的启动路径完全不同。Legacy BIOS 时代引导程序写在磁盘第一个扇区的 MBR 里GRUB 直接接管整个启动流程。到了 UEFI 时代主板固件会去读 GPT 分区表里那个 FAT32 格式的 EFI 系统分区ESP从里面加载.efi可执行文件。Windows10 装完后会在 ESP 里放一个EFI/Microsoft/Boot/bootmgfw.efiUbuntu20.04 装完后会放一个EFI/ubuntu/grubx64.efi。两个系统各占一个目录互不覆盖这是 UEFI 双系统比 Legacy 干净的地方。问题出在 NVRAM 里的启动项顺序。主板固件维护一张启动项列表Windows 安装时会把自己写成第一项Ubuntu 安装时会把ubuntu加进去但未必排到最前。如果安装时 Ubuntu 的引导程序没写进 ESP或者写进去了但 NVRAM 没更新开机就会直接进 WindowsGRUB 根本不出现。这就是「装了 Ubuntu 但开机没得选」的根本原因。判断当前是 UEFI 还是 Legacy在 Windows10 里按 WinR 输入msinfo32看「BIOS 模式」这一行显示 UEFI 就是 UEFI 启动显示「传统」就是 Legacy。这一步必须在装之前确认因为两种模式下的分区方案完全不兼容。2.2 GPT 分区表下必须留出的三个分区GPT 分区表相比 MBR 支持超过 2TB 的磁盘和最多 128 个分区但双系统场景下有三个分区是硬性要求缺一个都可能装不上或引导失败。第一个是 ESPEFI System Partition格式必须是 FAT32建议 512MB。Windows10 安装时通常已经创建了一个 100MB 的 ESP这个分区不要删Ubuntu 的引导文件也要写进去。100MB 在只装 Windows 时够用但加上 Ubuntu 的 grub 和内核更新后容易吃紧如果重新分区建议给到 512MB。第二个是 Ubuntu 的根分区/格式 ext4建议不少于 50GB。如果要做深度学习CUDA 和 cuDNN 加上数据集动辄几十 GB建议 100GB 起步。第三个是交换分区 swapUbuntu20.04 默认用 swapfile 而不是独立分区但如果物理内存小于 16GB 或者要跑大模型训练建议单独划 8GB 到 16GB 的 swap 分区。还有一个容易被忽略的点Windows 的快速启动和休眠会锁住 NTFS 分区。如果 Ubuntu 要读写 Windows 的数据盘必须在 Windows 里关掉快速启动否则挂载时只能只读。这个后面避坑章节会细讲。2.3 用 diskpart 确认磁盘是 GPT 且 Windows 是 UEFI 引导在动手分区之前先用 Windows 自带的 diskpart 确认磁盘状态。以管理员身份打开 PowerShell 或 CMD执行下面的命令。diskpart list disk select disk 0 detail disk执行后看输出里的「分区样式」一栏显示GPT说明是 GPT 分区表显示MBR就是传统分区表。如果是 MBR 又想用 UEFI 启动需要先用mbr2gpt工具转换命令是mbr2gpt /convert /allowFullOS但这个操作有风险转换前务必备份数据。确认完分区表再确认 Windows 是不是 UEFI 引导。在 diskpart 里执行list partition看有没有一个类型为「系统」、大小约 100MB 到 500MB 的分区这个就是 ESP。如果有说明 Windows 是 UEFI 引导如果没有说明是 Legacy 引导那双系统的安装方式要换一套逻辑。提示mbr2gpt转换要求磁盘上最多三个分区且 Windows 分区后面要有足够空间创建 ESP。转换前用diskpart的list partition看清楚布局不确定就别转直接重装成 UEFI 更省事。3. 制作 Ubuntu20.04 启动盘Rufus 参数怎么设才不翻车3.1 下载镜像与校验哈希Ubuntu20.04 的镜像从官方渠道获取文件名形如ubuntu-20.04.x-desktop-amd64.iso。下载完成后一定要校验 SHA256避免镜像损坏导致安装中途报错。在 Windows10 的 PowerShell 里执行Get-FileHash .\ubuntu-20.04.6-desktop-amd64.iso -Algorithm SHA256把输出的哈希值和官方页面上公布的对比一致才继续。这一步很多人跳过结果装到一半提示「安装程序崩溃」或者「无法读取软件包」回头查半天才发现是镜像下载不完整。校验通过后再制作启动盘。3.2 Rufus 制作 UEFI 启动盘的分区类型选择Rufus 是 Windows 下制作启动盘最常用的工具但它的参数设置直接决定启动盘能不能在 UEFI 模式下被识别。插入一个至少 8GB 的 U 盘打开 Rufus按下面的参数配置。参数项推荐值说明设备你的 U 盘确认盘符别选错选错会清空移动硬盘引导类型选择ubuntu-20.04.x-desktop-amd64.iso点「选择」按钮加载镜像分区类型GPTUEFI 模式必须选 GPT目标系统类型UEFI (非 CSM)不要选「BIOS 或 UEFI」文件系统FAT32UEFI 固件只认 FAT32 的 ESP簇大小默认不用改点「开始」后如果提示需要下载额外的 GRUB 文件选「是」。Rufus 会自动从网络拉取 UEFI 引导所需的文件。写入完成后U 盘里会有一个EFI目录里面有boot和ubuntu两个子目录这是 UEFI 启动盘制作成功的标志。注意如果分区类型选了 MBR目标系统选了 BIOS做出来的盘在 UEFI 主板上根本不会出现在启动菜单里。这是新手最常踩的坑没有之一。3.3 主板 BIOS 里关闭 Secure Boot 和快速启动启动盘做好后重启电脑进 BIOS。不同品牌进 BIOS 的按键不同常见的是 Del、F2、F12、Esc。进去后找两个设置Secure Boot 和 Fast Boot。Secure Boot 建议先关闭虽然 Ubuntu20.04 支持 Secure Boot但第三方驱动比如 NVIDIA 显卡驱动在 Secure Boot 下需要签名装驱动时会多一层麻烦。Fast Boot 也关掉否则 U 盘可能来不及被识别。保存退出后按启动菜单键通常是 F12 或 F11选择 U 盘启动。如果 U 盘在菜单里显示为「UEFI: 你的U盘品牌」说明启动盘制作正确如果只显示不带 UEFI 前缀的项说明 Rufus 参数设错了回去重做。4. 分区规划与安装执行手动分区的四个关键参数4.1 在 Windows 磁盘管理里压缩出未分配空间进入 Ubuntu 安装之前先在 Windows10 里腾出空间。右键「此电脑」→「管理」→「磁盘管理」找到 Windows 所在的分区右键「压缩卷」。输入要压缩的大小比如 102400 表示压缩出 100GB。压缩完成后会出现一块「未分配」空间这块空间不要格式化成 NTFS留给 Ubuntu 安装程序用。如果磁盘管理里压缩不出足够空间通常是因为页面文件或系统保护占用了。可以先关闭系统保护、把页面文件移到别的盘再压缩。实在不行用第三方分区工具但操作前一定备份数据。4.2 Ubuntu 安装类型选「其他选项」手动分区从 U 盘启动进入 Ubuntu20.04 安装界面语言选中文或英文都行一路到「安装类型」这一步。这里不要选「清除整个磁盘并安装 Ubuntu」也不要选「与 Windows Boot Manager 共存」选「其他选项」手动分区。自动分区有时候会把 ESP 覆盖掉导致 Windows 引导丢失手动分区最可控。进入分区界面后找到那块「空闲」空间点「」号逐个创建分区。下面是我一般会用的分区方案。挂载点大小类型说明EFI 系统分区512MB逻辑分区如果已有 ESP 就选中它不要新建/80GB主分区ext4系统和软件都装这里/home剩余空间逻辑分区ext4个人数据和代码放这里swap16GB逻辑分区内存小于 16GB 时建议单独划如果 Windows 已经有一个 100MB 的 ESP直接选中它挂载点设为/boot/efi不要格式化。如果 ESP 太小想扩容得用 GParted 先调整但操作复杂建议一开始就规划好。4.3 引导程序安装位置必须选对 ESP分区界面最下方有一个「安装启动引导器的设备」下拉框这个选项决定 GRUB 写到哪里。必须选那个 EFI 系统分区对应的设备通常是/dev/sda或/dev/nvme0n1而不是某个具体分区。如果选错GRUB 会写到别的地方开机找不到。选好后点「现在安装」确认分区变更。安装过程中会提示是否下载更新和第三方软件建议先不勾选装完系统再单独装驱动和更新避免安装过程因为网络问题卡住。安装完成后重启如果一切正常会先看到 GRUB 菜单里面有 Ubuntu 和 Windows Boot Manager 两个选项。4.4 安装后验证 GRUB 和 efibootmgr 启动项重启进 Ubuntu 后打开终端验证引导配置。先看 GRUB 是否识别到 Windowssudo update-grub输出里如果出现Found Windows Boot Manager on /dev/sda1说明 GRUB 已经识别到 Windows。再看 UEFI 启动项顺序efibootmgr -v输出会列出所有启动项每项前面有Boot0001、Boot0002这样的编号。找到ubuntu和Windows Boot Manager两项确认ubuntu排在前面。如果 Windows 排在前面用下面的命令调整顺序把 ubuntu 的编号提到最前sudo efibootmgr -o 0001,0002,0003编号根据实际输出替换。调整完重启GRUB 菜单应该正常出现。5. 双系统安装避坑五条血泪经验5.1 开机直接进 WindowsGRUB 不出现现象装完 Ubuntu 重启屏幕一闪直接进 Windows没有任何选择菜单。原因UEFI 启动项里 Windows Boot Manager 排在 ubuntu 前面或者 Ubuntu 的引导文件根本没写进 ESP。常见于安装时「安装启动引导器的设备」选成了具体分区而不是磁盘。解决从 U 盘启动进 Ubuntu Live 环境挂载 ESP 后检查EFI/ubuntu/目录是否存在。如果不存在用grub-install重装引导sudo mount /dev/sda1 /mnt sudo grub-install --targetx86_64-efi --efi-directory/mnt --bootloader-idubuntu sudo update-grub如果目录存在但启动顺序不对用efibootmgr -o调整顺序。5.2 安装时提示「没有定义根文件系统」现象分区完成后点下一步弹出「没有定义根文件系统请修正分区菜单」。原因没有给任何分区设置挂载点/或者根分区格式选成了 FAT32/NTFS 而不是 ext4。解决回到分区界面选中准备做根分区的那块空间点「更改」挂载点选/类型选 ext4勾选格式化。确认后继续。5.3 Ubuntu 里读不了 Windows 的 NTFS 数据盘现象Ubuntu 文件管理器里能看到 Windows 分区但打开是只读无法写入。原因Windows10 的快速启动和休眠功能会让 NTFS 分区处于「未干净卸载」状态Linux 的 ntfs-3g 驱动检测到这种状态就强制只读挂载。解决进 Windows控制面板 → 电源选项 → 选择电源按钮的功能 → 更改当前不可用的设置 → 取消勾选「启用快速启动」。然后在管理员 CMD 里执行powercfg /h off关闭休眠。重启进 UbuntuNTFS 分区就能读写了。5.4 安装完 Ubuntu 后 Windows 时间不对现象切换系统后Windows 显示的时间比实际时间差 8 小时。原因Windows 把硬件时钟当本地时间Ubuntu 默认把硬件时钟当 UTC。两个系统对硬件时钟的理解不一致来回切换就会互相改时间。解决在 Ubuntu 里执行下面命令让 Ubuntu 也用本地时间timedatectl set-local-rtc 1 --adjust-system-clock或者在 Windows 里改注册表让 Windows 用 UTC但改 Ubuntu 更简单。5.5 NVIDIA 显卡装完驱动后进不了桌面现象装完 NVIDIA 驱动重启卡在登录界面或者黑屏只能进 tty。原因Secure Boot 开启时NVIDIA 驱动模块没有签名内核拒绝加载。或者驱动版本和内核版本不匹配。解决进 BIOS 关闭 Secure Boot。如果已经关了还黑屏在 GRUB 菜单按e编辑启动参数在linux那一行末尾加nomodeset进系统后用ubuntu-drivers devices查看推荐驱动版本用sudo apt install nvidia-driver-xxx安装对应版本。6. 引导修复与进阶用 Live USB 重建 GRUB 的完整流程引导出问题是双系统最常见的翻车场景掌握从 Live USB 重建 GRUB 的能力比装十次系统都有用。下面这套流程我在不同机器上复现过多次UEFIGPT 环境通用。先制作一个 Ubuntu20.04 的 Live USB从它启动选择「Try Ubuntu」进入试用桌面。打开终端先用lsblk看清楚磁盘布局lsblk -f输出里会列出所有磁盘和分区找到根分区ext4 格式挂载点为空和 ESPvfat 格式通常 100MB 到 512MB。假设根分区是/dev/nvme0n1p5ESP 是/dev/nvme0n1p1按下面的步骤挂载并 chrootsudo mount /dev/nvme0n1p5 /mnt sudo mount /dev/nvme0n1p1 /mnt/boot/efi sudo mount --bind /dev /mnt/dev sudo mount --bind /proc /mnt/proc sudo mount --bind /sys /mnt/sys sudo chroot /mnt进入 chroot 环境后重新安装 GRUB 并更新配置grub-install --targetx86_64-efi --efi-directory/boot/efi --bootloader-idubuntu update-grubgrub-install会把grubx64.efi写进 ESP 的EFI/ubuntu/目录update-grub会扫描所有分区生成grub.cfg把 Windows 也加进菜单。执行完退出 chroot卸载分区后重启exit sudo umount -R /mnt sudo reboot重启后如果 GRUB 菜单出现说明修复成功。如果还是没有进 BIOS 检查启动项里有没有ubuntu没有的话用efibootmgr手动添加sudo efibootmgr -c -d /dev/nvme0n1 -p 1 -L ubuntu -l \\EFI\\ubuntu\\grubx64.efi这条命令会在 NVRAM 里创建一个名为 ubuntu 的启动项指向 ESP 里的 grubx64.efi。参数-d指定磁盘-p指定分区号-l指定 EFI 文件路径。路径里的反斜杠要转义写成双反斜杠。还有一个进阶技巧如果不想每次开机都看 GRUB 菜单可以设置默认启动项和超时时间。编辑/etc/default/grub把GRUB_DEFAULT设为0默认 Ubuntu或2默认 Windows具体编号看菜单顺序GRUB_TIMEOUT设为5表示等 5 秒。改完执行sudo update-grub生效。我自己装双系统有个习惯每次动分区之前先用dd把 ESP 备份一份命令是sudo dd if/dev/nvme0n1p1 of~/esp_backup.img bs1M。ESP 只有几百 MB备份很快但引导炸了的时候这个备份能省下几个小时的重装时间。装系统这件事后悔药就是提前备份。希望帮到你。本文还有配套的精品资源点击获取