news 2026/9/18 13:21:07

Ubuntu 双系统安装避坑:UEFI 分区、GRUB 引导与修复实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Ubuntu 双系统安装避坑:UEFI 分区、GRUB 引导与修复实战

我装双系统这事,前后折腾了不下三十台机器,从最早的 BIOS+MBR 时代一直装到现在的 UEFI+GPT。说实话,真正的"安装"环节——点几下、等进度条——大概只占整个过程的十分钟,剩下的时间全耗在装之前的准备和装之后的收尾上。很多人第一次装 Ubuntu 双系统,卡住的地方根本不是"不会装",而是装完之后 Windows 进不去了、时间差了八小时、硬盘分区表被搞乱、GRUB 菜单里找不到 Windows Boot Manager。

这篇内容我想按"一个老手实际会怎么做"的顺序来写,而不是按官方文档那种平铺直叙的流程。重点会放在几个真正会让人翻车的节点上:Windows 侧的隐藏开关、分区容量的取舍逻辑、安装向导里那几个容易点错的岔路口、首启之后必做的四件收尾事,以及引导丢了怎么救回来。适合手上有一台 Windows 机器、想腾出一块空间跑 Ubuntu 的人,也适合已经装完但被各种小问题折磨的人。

Ubuntu 双系统安装这件事,说到底就是把一份操作系统塞进硬盘里,然后让固件知道开机时该交给谁。听起来简单,但中间牵扯到 Windows 的快速启动、BitLocker 加密、UEFI 安全启动、磁盘控制器模式、ESP 分区复用、GRUB 引导链这一串东西,任何一个环节没处理好,结果要么是安装器看不到硬盘,要么是装完开机直接进了 Windows 再也回不来。下面我按实际操作的顺序,把每一步的"为什么"讲清楚。

1. Windows 这边必须先拆掉的几个隐藏开关

动手分区之前,如果你跳过这一步,后面大概率会遇到"装完 Ubuntu 之后,Windows 的分区在 Linux 里只能只读挂载"或者"开机弹出 BitLocker 恢复密钥界面"这类让人一脸懵的问题。这几个开关都藏在 Windows 里,默认状态不一定是你想要的。

1.1 快速启动:它不是省电,是让 NTFS 处于半睡眠状态

Windows 的"快速启动"(Fast Startup)在电源选项里默认是开着的。它的原理是把关机动作变成一次"用户会话结束 + 内核休眠",也就是把内核状态写进休眠文件。结果是 NTFS 分区在关机后并没有真正干净卸载,卷上会留一个"脏"标记。

Linux 的 ntfs3 或 ntfs-3g 驱动看到这个标记,会拒绝以读写方式挂载,直接给你挂成只读。你就没法往 Windows 分区里写文件,跨系统传数据的路直接断了。更麻烦的是,如果你在 Linux 里强行走ntfsfix,有概率把 Windows 的休眠状态弄坏。

关闭路径:控制面板 → 硬件和声音 → 电源选项 → 选择电源按钮的功能 → 点击"更改当前不可用的设置"→ 取消勾选"启用快速启动"。注意在 Win11 上,这个入口藏得比较深,如果控制面板里找不到,可以用管理员权限运行powercfg /h off直接关掉休眠并把快速启动一并关掉——代价是失去休眠功能,但双系统场景下这反而是好事。

1.2 BitLocker 与设备加密:先记录恢复密钥,再动手

Win11 的很多笔记本(尤其是预装家庭版的机器)会自动开启"设备加密",本质就是 BitLocker。问题在于:安装 Ubuntu 会向 ESP 分区写入新的引导项,同时修改固件启动顺序,这些动作会让 TPM 的度量值发生变化。下次进 Windows 时,系统会认为"环境被篡改",直接弹恢复密钥界面,不输密钥进不去。

所以动手前请务必做一件事:登录你的微软账户,在"设备"页面找到这台机器,把 48 位的恢复密钥抄下来,或者干脆先把 BitLocker 暂停/关闭。暂停(Suspend protection)比完全解密快得多,装完系统再恢复保护即可。这一步看起来啰嗦,但真出事的时候,没有恢复密钥意味着整块盘的数据都读不出来,代价太高。

1.3 安全启动:可以留着,但要知道它什么时候会咬你

很多人一上来就把 Secure Boot 关掉,其实没必要。Ubuntu 官方镜像里带了微软签名的 shim,在 Secure Boot 开启状态下是可以正常启动和安装的,保持开启对系统安全性更好。

真正需要留意的是第三方内核模块。Ubuntu 安装向导里有个"安装第三方软件"的选项,勾上它会装 NVIDIA 显卡驱动、Wi-Fi 驱动、多媒体编解码器这些东西。这些模块没有微软签名,安装器会要求你设置一个 MOK(Machine Owner Key)密码。设置完之后,第一次重启会出现一个蓝底的 MOK 管理界面,你必须选 "Enroll MOK" → Continue → Yes,然后输入刚才那个密码,把密钥注册进固件。如果你手快直接跳过这个界面,NVIDIA 驱动就加载不了,表现出来就是分辨率很低、或者干脆卡在黑屏。

我的习惯是:如果这台机器要装 NVIDIA 独显驱动,就在安装向导里勾选第三方软件并设好 MOK 密码;如果只是集显或者不在乎驱动,就不用勾,装完系统再单独装驱动也行。

1.4 磁盘控制器模式:新笔记本最容易踩的隐形坑

近几年的 Intel 平台笔记本,BIOS 里默认的存储模式往往是 Intel RST 或 VMD(Volume Management Device),而不是传统的 AHCI。这个模式是为 Windows 的软 RAID 和硬盘加速服务的,问题是部分 Linux 内核版本在安装阶段识别不出这种模式下的 NVMe 硬盘,安装器的分区界面会空空如也,一块盘都看不到。

正确的处理顺序不能乱,否则 Windows 会因为找不到启动盘而蓝屏(报 INACCESSIBLE_BOOT_DEVICE):

  1. 进入 Windows,用管理员权限打开命令提示符,执行bcdedit /set safeboot minimal,让系统下次以安全模式启动。
  2. 重启进入 BIOS/UEFI 设置界面,把存储模式从 RST/VMD 改成 AHCI。
  3. 保存退出,Windows 会进入安全模式,此时它会加载 AHCI 驱动。
  4. 在安全模式下再次用管理员命令行执行bcdedit /deletevalue safeboot,取消安全模式标记。
  5. 正常重启,Windows 应该能正常进入,此时硬盘模式已经是 AHCI,Linux 安装器就能看到盘了。

如果先改 BIOS 再处理 Windows,那就是蓝屏循环,还得找安装盘修复,非常折腾。

1.5 腾出空间:磁盘管理压缩卷为什么压不出多少容量

在 Windows 磁盘管理里对 C 盘右键"压缩卷",很多人会发现可压缩空间远远小于预期——比如一块 512G 的盘,C 盘用了 200G,却只能压出 20G。原因是页面文件、休眠文件、系统还原点这些"不可移动文件"卡在分区中间,压缩算法只能利用它们后面的连续空间。

可以参考这几个操作来释放可压缩空间:关闭休眠(powercfg /h off)会删掉几个 G 的 hiberfil.sys;在"系统属性 → 系统保护"里删掉旧的还原点;对 C 盘做一次"优化/碎片整理";如果还不行,临时把页面文件挪到别的盘或者设为无。做完这些,压缩卷通常能压出你想要的大小。

我的建议是:Ubuntu 至少留 80G,如果打算长期用,给到 150G 以上更舒服。压缩出来的空间在 Windows 里显示为"未分配",不要在那里新建分区,就让它空着,留给 Ubuntu 安装器。

2. 分区方案怎么定:ESP、swap、根分区、home 的取舍逻辑

分区这一步是双系统里最容易做错、也最不该照抄网上教程的地方。因为每台机器的 ESP 大小、内存容量、用途都不一样,通用方案和实际需求常常对不上。下面把每个分区的作用和容量逻辑讲清楚,你自己就能算。

2.1 ESP 分区:复用它,千万别格式化

UEFI 机器上,Windows 安装时已经建了一个 EFI 系统分区(ESP),通常是 FAT32 格式,大小在 100MB 到 260MB 之间,挂载点是/boot/efi。这个分区里放着 Windows Boot Manager 的引导文件,路径大概是EFI/Microsoft/Boot/bootmgfw.efi

装 Ubuntu 时,正确做法是把这个已有的 ESP 直接挂载为/boot/efi不要勾选格式化。Ubuntu 会在这个分区里新建一个EFI/ubuntu目录,把 shim 和 grub 放进去。如果你手一抖勾了格式化,Windows 的引导文件就被清空了,重启直接进不去系统。

有人会问,能不能给 Ubuntu 单独建一个 ESP?技术上可以,但没必要,而且容易让固件里出现两个"EFI System Partition"造成启动项混乱。复用现有的那一个最省事。

关于容量:Ubuntu 写进 ESP 的只有 shim、grub 和几个配置文件,加起来大概十几到二十几兆,100MB 的 ESP 通常够用。但如果你之前装过别的 Linux 发行版、或者 ESP 已经被多个引导程序占满,建议先在 Live 环境里挂上 ESP 用df -h看一眼剩余空间,太紧张的话可以先用 Windows 工具扩容,或者清理掉不用的引导目录。

2.2 swap 分区:要不要,给多大

先纠正一个常见误解:swap 不是"物理内存的固定倍数",而是根据你打算怎么用机器来定。

如果你从不用休眠功能,swap 的主要作用是内存回收时的溢出缓冲。日常办公机,16G 内存给 4G 到 8G swap 足够了;32G 内存其实给 2G 到 4G 都行,甚至完全不建 swap 分区、只用 swapfile 也可以。如果你想用休眠(suspend to disk),那 swap 必须大于等于物理内存容量,因为休眠就是把内存内容整个写进 swap。

Ubuntu 从 17.04 开始默认使用 swapfile 而不是 swap 分区。所以你完全可以不建 swap 分区,让安装器自己创建一个 swapfile。但如果你打算频繁休眠、或者需要精细控制,手动建一个 swap 分区更直观。

2.3 根分区和 home:分开还是一起

根分区/用 ext4 格式。容量上,Ubuntu 24.04 最小安装大概占 10G 左右,加上常用软件、Docker 镜像、缓存,给 40G 勉强够,给 60G 到 100G 比较从容。

/home单独分区是老派做法,好处是重装系统时能保留个人数据。但要提醒一句:现在的应用配置大量放在~/.config~/.local里,跨版本重装有时反而会因为配置不兼容引入奇怪问题。如果只是自己用、数据有备份习惯,其实根分区和 home 放在一起,简单省心;如果你打算频繁折腾、又懒得每次备份,那单独分一个/home值得。

下面这张表是我常用的几种容量组合,按硬盘总容量来选:

场景内存ESPswap//home
轻量尝鲜,256G 盘16G复用现有4G(或不建)60G剩余全部
长期主力,512G 盘16G复用现有8G80G剩余全部
开发机,1T 盘32G复用现有8G150G剩余全部
需要休眠32G复用现有≥32G100G剩余全部

2.4 分区表类型:先确认是 GPT 还是 MBR

UEFI 固件配 GPT 分区表是当前的主流组合,Windows 10/11 正常安装的机器基本都是这个状态。但也存在例外:老机器升级上来的可能是 BIOS+MBR;有些人在 BIOS 里开了 CSM(兼容性支持模块),引导模式会退回 Legacy。

确认方法很简单:在 Windows 磁盘管理里对目标磁盘右键 → 属性 → 卷,看"分区样式"是 GPT 还是 MBR;再看 BIOS 里是 UEFI 模式还是 Legacy/CSM。原则是两边保持一致:GPT 配 UEFI,MBR 配 Legacy。启动盘制作时也要选对应的模式,否则会出现"U 盘启动后直接被跳过"或者"安装器提示这台机器不支持 UEFI 启动"的问题。

3. 启动盘制作:工具选对,能省掉一半玄学问题

启动盘制作这件事,被低估了。用错工具或者选错写入模式,会制造出一堆莫名其妙的引导故障,让你误以为是分区或者固件的问题。

3.1 为什么我不推荐用 UltraISO 写 Linux 镜像

UltraISO 是传统 ISO 挂载/写入工具,它处理 Windows 安装镜像没问题,但写 Linux 镜像经常出岔子。原因是 Ubuntu 的 ISO 是"混合 ISO",同时支持以光盘方式和以原始磁盘镜像方式引导。UltraISO 倾向于按前者处理,会把引导记录弄得不对,结果可能是 U 盘能启动但进不了安装界面,或者安装到一半报错。

靠谱的选择有三个:Rufus、balenaEtcher、Ventoy。Rufus 只支持 Windows,功能最细;balenaEtcher 三平台通用,操作最简单;Ventoy 的思路完全不同——它不是"写入镜像",而是把 U 盘做成一个多镜像引导器,你只需要把 ISO 文件复制进去,启动时它会列出所有 ISO 让你选。如果你手头有多个系统的 ISO、或者经常折腾不同发行版,Ventoy 一次做好之后就不用反复写了。

3.2 Rufus 的关键选项怎么选

用 Rufus 写 Ubuntu 镜像时,界面会自动识别 ISO 类型,然后让你选分区方案和目标系统:GPT + UEFI 对应现代 UEFI 机器;MBR + BIOS 对应老机器。这两个选择必须和你目标机器的固件模式一致。

写入模式上,Rufus 会弹一个"ISOHybrid 镜像"的提示,让你选 ISO 模式还是 DD 模式。对 Ubuntu 来说,ISO 模式更友好,因为它会把 ISO 里的文件解包写入,U 盘上还能看到文件结构,后续想往里加东西也方便;DD 模式是逐字节复制,做完之后 U 盘会被识别成一个只读的光盘设备,想换内容得重新格式化。除非 ISO 模式写完之后引导有问题,否则优先 ISO 模式。

3.3 校验这一步别跳过

下载完 ISO 之后,用certutil -hashfile ubuntu-24.04-desktop-amd64.iso SHA256(Windows)或者sha256sum(Linux)算一下哈希,和官网公布的对照。听起来多余,但我确实遇到过下载不完整导致安装到 80% 报错的案例。这一步只花一分钟,能排除掉一整类"怎么也装不上"的问题。

3.4 引导模式确认:别让 U 盘和固件"说不到一块去"

U 盘做好之后,开机按启动菜单键(不同品牌不一样,常见的是 F12、F11、Esc、F9),在启动设备列表里你会看到同一个 U 盘可能出现两个条目,比如一个带 "UEFI:" 前缀,一个不带。带前缀的是 UEFI 模式启动,不带的是 Legacy 模式。

如果你要装 UEFI 双系统,就选带 "UEFI:" 后缀的那一项。选错了会出现什么情况?安装器会以 Legacy 模式运行,分区时你发现没法创建 ESP,或者装完之后固件启动列表里多出一个 Legacy 条目,而 Windows 还是 UEFI 启动,两个系统引导方式不一致,GRUB 探测 Windows 会失败。

还有一个隐藏设置:BIOS 里的 CSM(Compatibility Support Module)。开着 CSM 时,固件会同时支持 Legacy 和 UEFI,容易造成启动模式判断混乱。建议在确定要装 UEFI 双系统时把 CSM 关掉,让启动模式变得干净。

4. 安装向导里的四个岔路口,点错一个就重来

启动到 Live 桌面(也就是"试用 Ubuntu"那个界面)之后,先别急着点安装。我的习惯是先花五分钟做两件事:一是打开"磁盘"工具或者用 GParted 看一下分区布局,确认那块未分配空间确实在、且大小正确;二是连上网络,让安装器能下载更新和语言包。

然后正式进入安装向导。下面这四个地方是真正的分歧点。

4.1 安装类型:必须选"手动分区"

向导问到"安装类型"的时候,会有几个选项:擦除磁盘并安装 Ubuntu、与 Windows 共存安装、手动分区(在 22.04 里叫 "Something else",24.04 新安装器里叫 "Manual installation")。

  • 擦除磁盘并安装:直接抹掉整块盘,双系统绝对不能选。
  • 与 Windows 共存:它会自动从 Windows 分区里压缩空间并创建分区,看起来很省事,但它分配的大小是拍脑袋定的(通常只有几十 G),而且它调整 Windows 分区时偶尔会出问题。我不推荐。
  • 手动分区:唯一推荐选项,所有分区你自己定,可控。

在 24.04 的新安装器里,手动分区界面会列出所有磁盘和现有分区,你需要选中那块"空闲空间"(free space),点加号创建分区。

4.2 分区挂载点:ESP 不格式化,其余全格式化

创建分区时的几个关键点:

  • /boot/efi:选中已有的 EFI 系统分区,把挂载点设为/boot/efi格式化的勾一定要取消。这一步是双系统中最要命的操作,勾错就等于删掉 Windows 引导。
  • swap:如果建 swap 分区,类型选 "swap area",不需要挂载点。
  • /:类型 ext4,挂载点/,勾选格式化。
  • /home:类型 ext4,挂载点/home,勾选格式化。

创建顺序上,其实无所谓,安装器最后会统一写盘。但有一点要注意:如果你勾选了格式化某个已有分区,安装器会弹一个确认框列出所有将被格式化的分区,这个框一定要逐条看清楚,确认里面没有 Windows 的 C 盘、也没有 ESP。

4.3 引导器安装位置:选整块磁盘,不选分区

如果你用的是 Ubuntu 22.04 或者更早版本,安装向导底部会有一个下拉框叫"安装启动引导器的设备"(Device for boot loader installation)。这里必须选整块磁盘,比如/dev/nvme0n1/dev/sda,而不是某个分区,比如/dev/nvme0n1p5

为什么?因为 UEFI 引导是往 ESP 里写文件,GRUB 的grub-install需要知道目标磁盘。选成分区的话,在某些固件上会导致引导项注册失败,装完之后开机直接进 Windows,GRUB 影子都看不到。

Ubuntu 24.04 换了新的安装器,界面里没有这个下拉框了,它会自动把引导写到检测到的 ESP。这也意味着,在 24.04 上更要确保 ESP 的挂载设置是对的——如果 ESP 没被正确挂载为/boot/efi,引导就可能写到别的地方去。

4.4 用户名、主机名和密码:顺手把主机名改短

这几项看起来无所谓,但主机名(hostname)值得提一句。默认主机名会根据你填的名字生成,比如填了 "zhangsan",主机名可能是 "zhangsan-Lenovo-Legion-5"。这个长主机名会出现在终端提示符里,也会被 SSH 连接、Docker 容器、局域网主机发现用到,太长很烦。

建议设一个短而清晰的主机名,比如dev-boxubuntu-work。设置密码时,Ubuntu 允许弱密码但会提示,日常自己用的话,简单好记 + 开启磁盘加密的取舍自己权衡。

5. 第一次开机之后必做的四件收尾事

安装完成、点重启、拔掉 U 盘,进入 GRUB 菜单,看到 Ubuntu 和 Windows Boot Manager 都在——恭喜,最难的关过了。但别急着开始用,下面这四件事如果不在第一天做掉,后面会一直膈应你。

5.1 时间差八小时:根源在 UTC 和本地时间的定义分歧

Windows 把硬件时钟(RTC)当作本地时间来处理,Ubuntu 默认把 RTC 当作 UTC 来处理。两个系统对同一块硬件时钟的理解不一致,来回切换就会出现时间差。中国大陆时区是 UTC+8,所以现象就是:从 Windows 重启到 Ubuntu,时间快 8 小时;从 Ubuntu 重启回 Windows,时间慢 8 小时。

两种修法,我推荐改 Windows:

让 Windows 按 UTC 解释硬件时钟,用管理员权限运行:

reg add "HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation" /v RealTimeIsUniversal /t REG_DWORD /d 1 /f

执行完重启一次 Windows,之后两个系统时间就一致了。这个方案的好处是不污染 Linux 的配置,重装 Linux 也不用重新设置。

另一种是让 Ubuntu 用本地时间:

timedatectl set-local-rtc 1 --adjust-system-clock

这条命令 Ubuntu 官方本身不推荐,因为会让夏令时切换和网络时间同步出现奇怪行为,所以只作为备选。

5.2 显卡驱动:先确认卡在哪一步

如果是 NVIDIA 独显机器,重启之后可能出现这几种情况:分辨率被锁在 1024x768、外接显示器不亮、风扇狂转但屏幕黑。这些都指向驱动没正确加载。

先在终端看一眼硬件和推荐驱动:

ubuntu-drivers devices

它会列出可用的驱动版本和推荐项(标着 recommended)。然后:

sudo apt update sudo apt install nvidia-driver-550

版本号按上一条命令的输出填。装完重启。如果你在安装向导里勾了第三方软件并设了 MOK 密码,但重启时跳过了 MOK 注册界面,驱动是装上了却加载不了,这时候需要重新触发一次:sudo mokutil --import /var/lib/shim-signed/mok/MOK.der,设个临时密码,重启时在蓝色界面完成注册。

如果是 AMD 核显或 Intel 核显,通常开箱可用,不用额外操作。遇到黑屏但系统其实在跑的情况,可以在 GRUB 菜单按e编辑启动项,在linux那一行末尾加nomodeset,先进去把驱动装好再删掉这个参数。

5.3 中文输入法:24.04 的默认方案够用

Ubuntu 24.04 默认装了 IBus 输入法框架,中文输入可以用"智能拼音"(Intelligent Pinyin)。如果装完发现切不出中文,进"设置 → 键盘 → 输入源",添加"汉语(中国)"下的"智能拼音"即可。切换快捷键默认是 Super+Space,可以在设置里改。

很多人想装搜狗输入法,这需要额外装 fcitx 或 fcitx5 框架再装搜狗,配置步骤比较多,而且和 IBus 有冲突风险。我的建议是先用自带的智能拼音,它对日常中文输入完全够用,还支持云拼音(可选)。除非你有特殊词库需求,否则没必要折腾第三方输入法。

5.4 SSH 连不上:24.04 默认没装服务端

被这个问题坑过的人不少。Ubuntu 桌面版 24.04 默认不安装 openssh-server,所以你从别的机器ssh user@ip会直接被拒绝。解决办法:

sudo apt install openssh-server sudo systemctl enable --now ssh sudo systemctl status ssh

如果服务起来了还是连不上,检查两件事:一是 UFW 防火墙(sudo ufw status),需要放行 22 端口(sudo ufw allow ssh);二是确认客户端和服务端在同一个网段,用ip a看一下本机地址。

顺便提一句环境变量配置错误这个高频问题。新手常犯的错是把export PATH=...写进/etc/environment,而这个文件不支持export语法,也不支持变量展开,写进去会导致登录时环境变量解析失败,严重的话进不了图形界面。PATH 类的修改应该放在~/.bashrc~/.profile;系统级的环境变量在/etc/environment里只写KEY=value形式,不带export,不引用其他变量。

6. 引导丢了怎么办:两条修复路径和一个排查顺序

引导问题分两种情况:Ubuntu 的 GRUB 没了(比如重装了 Windows),或者 Windows 的引导没了(比如手动分区时误格了 ESP)。这两种的修复手法完全不同,先判断属于哪一种。

6.1 判断当前状态:先看固件启动列表

从 Live U 盘启动,进试用桌面,打开终端:

efibootmgr -v

输出里会列出固件里所有的启动项。正常情况下应该有Windows Boot Managerubuntu两项。如果 ubuntu 项不见了,说明 GRUB 的启动项被清掉了(常见于重装 Windows 之后,Windows 安装程序会重置启动顺序,并且有时会清掉 EFI 分区里它不认识的目录)。如果 Windows Boot Manager 不见了,反过来就是 Windows 引导被破坏了。

同时用lsblk -f确认分区布局还在,特别是根分区和 ESP 挂载点。

6.2 路径 A:GRUB 没了,从 Live 环境重装引导

这是最常见的场景——重装 Windows 之后,GRUB 被覆盖,开机直接进 Windows。修复思路是挂载 Ubuntu 的根分区和 ESP,chroot 进去重新执行 grub-install。

先确认分区号:

lsblk -f

假设 Ubuntu 根分区是/dev/nvme0n1p5,ESP 是/dev/nvme0n1p1,然后:

sudo mount /dev/nvme0n1p5 /mnt sudo mount /dev/nvme0n1p1 /mnt/boot/efi for i in /dev /dev/pts /proc /sys /run; do sudo mount --bind $i /mnt$i; done sudo chroot /mnt

进入 chroot 之后:

grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ubuntu update-grub exit

退出 chroot 后卸载所有挂载点再重启:

sudo umount -R /mnt sudo reboot

重启时进固件启动菜单,应该能看到 ubuntu 项了。update-grub这一步会自动探测 Windows Boot Manager 并写进 GRUB 菜单,所以不用手动加。

如果嫌命令行麻烦,Ubuntu 社区有个图形工具叫 Boot-Repair,在 Live 环境里装一下(需要联网),点"Recommended repair"它会自动做上面这些事。但它有时会做多余的操作(比如重写整个 GRUB 配置),我倾向于手动来,可控。

6.3 路径 B:Windows 引导丢了,用 Windows 安装盘修

这种情况相对少见,多发生在手动分区时误格式化了 ESP。修复需要 Windows 安装介质(U 盘),进入修复模式 → 疑难解答 → 命令提示符,然后:

diskpart list disk select disk 0 list partition select partition 1 :: 选中那个 EFI 分区,通常 100-300MB assign letter=S exit bcdboot C:\Windows /s S: /f UEFI

bcdboot会从 C 盘的系统目录里提取引导文件,写入 S 盘(也就是 ESP)的EFI/Microsoft目录,并重建 BCD 配置。执行完重启,Windows 应该能起来了。起来之后再按 6.2 的方法修复 GRUB。

6.4 一个通用排查顺序

遇到任何"开机进不去系统"的情况,我一般按这个顺序排:

现象首先怀疑验证方法
开机直接进 Windows,没有 GRUBGRUB 启动项丢失Live 环境efibootmgr -v
开机黑屏,只有光标显卡驱动或内核参数GRUB 加nomodeset
卡在主板 logo固件启动项顺序错乱BIOS 里看启动顺序
进 GRUB 但菜单里没 Windowsos-prober 没探测到chroot 后update-grub
提示没有可启动设备ESP 被破坏或固件模式不匹配检查 BIOS 的 UEFI/Legacy 设置
安装器看不到硬盘RST/VMD 模式未改BIOS 存储设置改为 AHCI

顺带说一句,GRUB 菜单里 Windows 选项消失,最常见的原因是 Ubuntu 里os-prober在 22.04 之后默认被禁用了(出于安全考虑)。修改/etc/default/grub,把GRUB_DISABLE_OS_PROBER=false加上,然后sudo update-grub就能重新探测到。

6.5 设置默认启动项:让常用的系统排第一

GRUB 菜单默认等待 5 秒,倒计时结束进第一个选项。如果 Ubuntu 排在第一位但你平时主要用 Windows,每次都手动选很烦。修改/etc/default/grub

GRUB_DEFAULT=0 # 0 表示菜单第一项 GRUB_TIMEOUT=10 # 倒计时秒数,设短一点跳过更快 GRUB_SAVEDEFAULT=true # 记住上次选择

如果你想让 GRUB 记住上次选的那个系统,配合GRUB_DEFAULT=savedGRUB_SAVEDEFAULT=true使用。改完执行sudo update-grub生效。注意 GRUB 菜单项的顺序会随内核更新变化,用saved模式比硬编码数字更稳。

7. 卸载 Ubuntu:顺序错了会直接开不了机

不是所有人都能一次装到位,装完之后发现不合适、想彻底清掉双系统的也大有人在。卸载这件事有个严格的顺序,搞反了就会出现"删完分区开机直接黑屏,因为引导还在但根分区没了"的尴尬。

7.1 第一步:先把固件默认启动项切回 Windows

不要一上来就去删分区。先在 Ubuntu 里把默认启动项改成 Windows:

sudo efibootmgr

它会列出所有启动项和编号,比如Boot0001* Windows Boot ManagerBoot0002* ubuntu。用-o参数设置启动顺序:

sudo efibootmgr -o 0001,0002

把 Windows 排到前面。也可以直接进 BIOS 设置界面的启动顺序里调整,更直观。这一步做完,即使后面 Linux 分区被删了,开机也会走 Windows Boot Manager。

7.2 第二步:清掉 ESP 里的 ubuntu 目录

Ubuntu 的引导文件放在 ESP 的EFI/ubuntu目录下。挂载 ESP 后删掉这个目录:

sudo mkdir -p /mnt/esp sudo mount /dev/nvme0n1p1 /mnt/esp ls /mnt/esp/EFI # 应该能看到 Microsoft 和 ubuntu sudo rm -rf /mnt/esp/EFI/ubuntu sudo umount /mnt/esp

顺带用efibootmgr -b 0002 -B把那个 ubuntu 启动项从固件里删掉。

也可以在 Windows 侧操作:用 Diskpart 给 ESP 分配一个盘符,然后用资源管理器进去删EFI/ubuntu目录,再用 EasyUEFI 之类的工具清理启动项。这一步很多人省掉,结果就是固件启动列表里一直有个点不动的 ubuntu 项。

7.3 第三步:删除 Linux 分区并回收空间

前两步做完,重启确认能正常进 Windows。然后进 Windows 磁盘管理,你会看到那几个"未知分区"(ext4 和 swap 在 Windows 里都显示为未知)。逐个右键删除卷,删完之后那块空间变成"未分配",再对 C 盘右键"扩展卷",把空间还回去。

注意 swap 分区在新版 Ubuntu 里可能是个文件而不是分区(swapfile),那种情况下只用删根分区和/home分区。

另外提醒一句:扩展卷只能向右侧相邻的未分配空间扩展。如果你的 Ubuntu 分区分成了好几块、中间夹着别的分区,可能没法一次性扩回 C 盘。这种情况下用第三方分区工具(比如 DiskGenius)调整更灵活,但操作前一定做好重要数据备份。

7.4 如果只是想试试,其实不用装双系统

最后提两个替代方案,能帮你避免"装了删、删了装"的循环。

虚拟机:用 VMware Workstation Player 或 VirtualBox 装 Ubuntu 虚拟机,隔离性好、随删随建、不影响宿主系统。缺点是性能有损耗,显卡直通和 3D 加速支持有限,跑不了需要真机硬件的东西。适合学习 Linux 命令、测试软件、跑开发环境。

WSL:Win10/11 上一条wsl --install就能装好 Ubuntu 子系统,启动秒开,和 Windows 文件系统互通,终端和 VS Code 集成也做得很好。最近的开发场景里,我用 WSL 跑编译、跑 Python、跑 Docker 的频率比双系统还高,因为它不用重启就能用。字体渲染上,配合等宽字体和合适的配置,写代码的观感已经很接近原生终端了。

双系统的价值在于它能独占硬件资源——完整的 GPU、完整的 I/O、不受虚拟化层影响。如果你需要跑训练任务、需要精确的性能测试、或者就是想体验完整的桌面环境,那还是得真机装。但如果只是日常开发,先试试 WSL 或者虚拟机,可能根本用不上双系统这一套。

我个人的经验是,双系统的真正难点从来不在"安装"这两个字上,而在装之前对 Windows 侧开关的处理,以及装之后对引导链的维护。把快速启动、BitLocker、磁盘模式这三件事提前处理好,分区时确保 ESP 不格式化、引导器选整盘,装完立刻解决时间和显卡驱动,这套流程走下来,双系统其实是一个很稳的方案。真出了问题,记住两点:开机进不去先看固件启动列表,GRUB 丢了就用 Live 环境 chroot 重装,绝大多数引导故障都能在这两步里定位清楚。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/18 13:20:39

Fact 类记忆抽取,TaoToken 管住 WeKnora Agent 消耗

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/18 13:15:09

合同问题记录

文章目录 一、变更问题 hcbm_contract_relationship表 如何拿到框架协议变更后最新的合同内容? 如何根据1003231100021-1的合同id拿到这个合同关联的最后一个变更单? 变更后合同页面展示的问题 如何根据变更编号拿到变更后最新合同行信息? 关于relate_contract_number 关于s…

作者头像 李华
网站建设 2026/9/18 13:13:36

Python实现BP神经网络:彻底搞懂误差反向传播与梯度下降

简介:BP神经网络是机器学习中经典的多层前馈模型,其核心在于通过反向传播不断调整权重以降低预测误差。针对想从代码层面理解这一过程的Python开发者与入门学习者,这份PDF资源以“原理实现”的方式,系统讲解了三层网络的结构设计、…

作者头像 李华
网站建设 2026/9/18 13:12:43

像切换 Cursor 显示语言那样,这次用 TaoToken 走通模型接入

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/18 13:11:49

【Stable Diffusion】优秀提示词生成艺术作品图像

Stable Diffusion 作为一项深度学习驱动的图像生成技术,通过分析海量图像和文本语料,实现了从文本描述生成图像的能力。该技术以深度学习为核心,通过像素级别的预测,能够根据简单的文字提示生成丰富多样、符合预期的图像。其应用涵盖了从日常物品到复杂艺术风格的生成,让用…

作者头像 李华