ARTICLE DETAIL

资讯详情

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

双系统删除与引导修复:安全卸载Ubuntu保留Windows

双系统删除与引导修复:安全卸载Ubuntu保留Windows 1. 动手前先摸清家底双系统的分区与引导到底长什么样删双系统这件事最难的部分从来不是删而是删哪几个。我见过太多人一进磁盘管理看到几个不认识的分区就手一抖把 Windows 的恢复分区或者 EFI 分区给删了结果两个系统一起躺在开机黑屏里。所以这一节不聊操作只聊摸底——你得先知道自己的机器上到底有什么。1.1 双系统的三种常见形态市面上的双系统其实差别很大处理方式完全不同。第一种是Windows Linux比如 Win11 配 Ubuntu 24.04这是绝大多数人遇到的场景也是坑最多的一种因为两套系统用的是同一套引导链路上的不同环节。第二种是Windows Windows典型是 Win10 上再装一个 Win7或者给老机器留一个纯净系统做备用这种的引导项都在 Windows Boot Manager 里拆起来相对干净。第三种是双硬盘各装一个系统物理上互相独立但引导项可能互相登记在对方的 EFI 分区里删的时候要两头都看一眼。先确认自己属于哪一种比后面任何操作都重要。判断方法很简单开机进 BIOS 看启动项列表如果列里同时有Windows Boot Manager和ubuntu那就是典型的第一种如果只有一条Windows Boot Manager但里面能看到两个系统的启动菜单那是第二种。1.2 UEFI 和 Legacy 决定了工作量的一半同样是删 UbuntuUEFI 引导和 Legacy BIOS 引导干活的量差一倍不止。UEFI 模式下每个系统在硬盘的 EFI 系统分区里都有自己的目录Windows 是EFI\MicrosoftUbuntu 是EFI\ubuntu同时固件里还存着若干条启动项NVRAM 里删完分区还得清理这两处否则开机会看到一条指向空气的启动项甚至直接掉进 GRUB 命令行。Legacy 模式下引导信息写在磁盘开头的 MBR 里只有一个活动分区能接管启动。删掉 Linux 之后MBR 里残留的 GRUB 代码会让机器找不到系统必须用 Windows 安装盘或 PE 执行一次bootrec /fixmbr之类的修复。怎么判断自己是哪种Windows 下按Win R输入msinfo32看BIOS 模式那一行——写UEFI就是 UEFI写传统就是 Legacy。这一步花十秒钟能省掉后面半小时的瞎折腾。1.3 备份清单删之前必须落袋的东西删系统本质上是删分区分区一删里面的数据基本没有常规手段能救回来。所以动手之前我列了一份必做清单你可以直接照抄另一个系统的个人文件桌面、文档、下载、浏览器书签Chrome/Edge 登录账号可同步但本地配置文件不会跟着走、微信和 QQ 的聊天记录目录。开发环境相关SSH 私钥、Git 未推送的本地仓库、数据库数据目录、虚拟环境的配置文件、各类.env、本地的 Docker 镜像和 volume。授权与凭证某些软件的机器码授权、离线激活文件换系统或重装后可能需要重新申请。BitLocker 恢复密钥如果 Windows 盘开了 BitLocker动手前务必导出恢复密钥主板或引导链路的任何变动都可能触发重新验证。注意如果被删的那个系统盘启用了 BitLocker 或设备加密先解密再操作。加密状态下删分区数据彻底没救而且有时候会连带影响引导修复的流程。2. 分区表和引导加载器删错一个两个系统一起挂摸清了形态下一步是看懂分区表。我习惯把双系统硬盘比作一栋合租房EFI 分区是大门的钥匙柜两个系统各放了一把钥匙根分区是各自的房间恢复分区是物业预留的储物间不能动。你把钥匙柜砸了谁的钥匙都没了。2.1 一块装了双系统的硬盘分区是怎么排的以一块 512G 硬盘、UEFI 模式、Win11 Ubuntu 为例用 DiskGenius 或diskpart看到的分区大概长这样序号名称典型大小作用能不能删1EFI 系统分区100-300MB存放所有系统的引导文件绝对不能删2MSR 保留分区16MBWindows 保留不要动3Windows C 盘100G保留的那个系统保留4Windows 恢复分区500MB-1GWinRE 恢复环境尽量保留5Ubuntu 根分区50Gext4被删对象可删6Ubuntu swap4-16G交换分区可删7共享数据分区视情况NTFS 或 exFAT看归属值得注意的是Ubuntu 在 UEFI 下通常还会在 EFI 分区里放一个EFI\ubuntu\目录里面是grubx64.efi和shimx64.efi。这个目录只占几兆但它是让 GRUB 菜单出现的罪魁祸首删系统时必须一起清掉。2.2 Windows Boot Manager 和 GRUB 各管哪一摊理解这条链路后面的操作就都能自己推导了。开机顺序是这样的固件读取 NVRAM 里的启动项列表排在第一位的那条被加载。如果第一条是ubuntu加载的就是 EFI 分区里的grubx64.efiGRUB 再根据/boot/grub/grub.cfg生成菜单菜单里可能包含一个Windows Boot Manager的条目选中它才会去加载EFI\Microsoft\Boot\bootmgfw.efi。所以问题来了你把 Ubuntu 的分区全删了但 NVRAM 里那条ubuntu启动项还在固件照样会去加载EFI\ubuntu\grubx64.efi可这个文件已经被你删了于是开机直接掉进grub rescue提示符或者报no such device。反过来如果你保留 Linux 删 Windows那 GRUB 菜单里那条指向 Windows 的记录就变成了死链每次开机都要卡一两秒等它超时看着很别扭得手动清理。2.3 误删后果对照表误删对象症状补救难度EFI 系统分区整个删掉两个系统都进不去开机无引导高需要重建 ESP 并重装引导EFI 分区里的EFI\Microsoft只剩 Linux 可进Windows 彻底失联中用安装盘执行 bcdboot 可恢复EFI 分区里的EFI\ubuntu开机掉进 grub rescue低修复 Windows 引导即可MSR 或恢复分区一般无感但系统更新和恢复功能会异常低到中不建议动Windows C 盘数据没了极高只能靠备份这张表我贴在自己的运维笔记里每次动手前扫一眼手就稳了。3. 保留 Windows、删掉 Ubuntu分区回收 引导修复全流程这是最常见的需求也是我处理过最多次的场景。整个流程分五步识别分区、删除分区、修复引导、清理残留、回收空间。顺序不能乱尤其是修复引导必须在删分区之后立刻做否则你重启一次就可能进不去系统。3.1 第一步在 Windows 里认出 Linux 的那些分区打开磁盘管理或者 DiskGenius你会看到几个没有盘符、文件系统显示为空的分区。怎么确认它们是 Linux 的看三点文件系统标识ext4、swap 在 Windows 下不显示DiskGenius 会标成 Ext4 或 Linux Swap、位置通常紧跟在 Windows 分区之后、大小根分区几十 Gswap 一般等于或略大于内存。更稳妥的做法是用命令行交叉验证。以管理员身份打开 CMD执行diskpart list disk select disk 0 list partition输出的分区列表会显示每个分区的类型和大小Linux 分区在这里通常标为未知。如果拿不准可以用 Linux 启动 U 盘进 Live 环境跑一句lsblk -f输出里的FSTYPE和LABEL一目了然ext4、swap就是你要删的vfat且挂在/boot/efi的是 EFI 分区绝对别碰。注意如果硬盘之前装过 LVM 或开启了 LUKS 加密Linux 分区在 Live 环境下会显示为LVM2_member或crypto_LUKS。这种情况建议先在 Live 环境里用vgs、lvs确认卷组结构再决定删哪一层别看到未知分区就砍。3.2 删除分区图形工具和命令行两条路图形派的直接用 DiskGenius 右键删除分区操作直观还能顺手格式化。命令行派用diskpart更精确适合远程或者图形界面抽风的时候。命令行的完整流程是diskpart select disk 0 list partition select partition 5 delete partition override select partition 6 delete partition override exitdelete partition override里的override参数是关键普通删除命令对被保护或系统识别异常的分区会拒绝执行加上这个参数才能强删。每删一个分区前务必再确认一遍序号和大小diskpart没有后悔药。我的习惯是删之前把list partition的输出截图存一份万一后面发现删错了至少知道原来长什么样。3.3 修复 Windows 引导让开机不再掉进 grub 提示符分区删完EFI 分区里那个EFI\ubuntu目录还在NVRAM 里的启动项也还在。这时候重启大概率会看到grub rescue。修复方法有两个层次最省事的办法是重启进 BIOS把Windows Boot Manager调到启动顺序第一位。这样固件直接加载 Windows 引导GRUB 根本没机会出场。更彻底的办法是重新生成 Windows 引导文件顺便把启动项理顺。用 Windows 安装 U 盘启动进修复计算机 → 疑难解答 → 命令提示符然后diskpart list disk select disk 0 list partition select partition 1 assign letterS exit bcdboot C:\Windows /s S: /f UEFI /l zh-cnbcdboot这条命令做的事是把 Windows 的引导文件重新写入 EFI 分区并自动在 NVRAM 里创建一条Windows Boot Manager启动项。/s S:指定目标 ESP 分区/f UEFI指定固件类型/l zh-cn指定引导菜单语言。执行完会提示已成功创建启动文件这时候重启基本就能直接进 Windows 了。3.4 清理 EFI 分区残留和 UEFI 启动项bcdboot修好了 Windows 引导但EFI\ubuntu目录和 NVRAM 里的 ubuntu 启动项还在属于留了个尾巴。清理分两步。第一步挂载 EFI 分区删目录。在 Windows 管理员 CMD 里mountvol S: /s这条命令把 EFI 系统分区挂到 S 盘。然后进S:\EFI\你会看到Microsoft和ubuntu两个文件夹。删掉ubuntu整个目录注意不要动Microsoft和Boot。删完执行mountvol S: /d卸载。第二步清 NVRAM 启动项。先列出所有固件启动项bcdedit /enum firmware输出里每个条目都有一行identifier形如{xxxxxxxx-xxxx-...}。找到描述为ubuntu的那条复制它的 identifier执行bcdedit /delete {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} /f/f表示强制删除。删完再bcdedit /enum firmware确认一遍列表里应该只剩 Windows 相关的条目。如果你更习惯 Linux 环境也可以从 Live U 盘执行efibootmgr输出里每条启动项前面有个四位数编号efibootmgr -b 0003 -B就能删掉编号为 0003 的那条比记 GUID 方便。3.5 C 盘扩容为什么扩展卷是灰的删掉 Linux 分区后腾出来的空间是未分配很多人第一反应是右键 C 盘选扩展卷结果发现这个选项是灰的。原因很简单Windows 的扩展卷只能吃掉紧邻在右侧的未分配空间。如果你的分区顺序是EFI → C盘 → 恢复分区 → 未分配原 Ubuntu中间隔着一个恢复分区扩展卷就用不了。解法有三种。一是用 DiskGenius 的调整分区大小功能它可以把恢复分区往前挪或者直接把未分配空间合并进 C 盘操作前它会提示涉及数据移动别中途断电。二是用 PE 环境下的分区工具原理同上但更稳。三是干脆把未分配空间单独新建一个数据盘不折腾系统分区对不熟悉分区操作的人来说这是最不容易出事的选择。注意涉及分区移动和合并的操作风险等级比单纯删除高一个档次。我的经验是提前把重要数据拷到外置硬盘操作过程中别让笔记本断电台式机最好接个 UPS 或者至少别在雷雨天干这事。4. 保留 Linux、删掉 WindowsGRUB 瘦身与空间回收方向反过来情况就变了。Linux 下操作分区比 Windows 灵活得多但引导这块反而要更小心因为 GRUB 的配置文件是手写的删完不更新菜单里会一直挂着一个进不去的 Windows 条目。4.1 删 NTFS 分区之前的数据抢救Linux 挂载 NTFS 分区依赖ntfs-3g能读能写但默认挂载参数下写入大文件偶尔会出现权限或元数据问题。所以抢救数据的正确姿势是只读挂载把文件拷到 Linux 分区或者外置硬盘再从 Windows 侧确认一遍文件完整性。挂载命令sudo mkdir /mnt/win sudo mount -o ro /dev/nvme0n1p3 /mnt/win用完记得sudo umount /mnt/win。如果 Windows 开了快速启动Fast StartupNTFS 分区会处于休眠中的脏状态Linux 侧只能只读挂载写会直接报错。这种状态下删分区没问题但如果你想在删之前拷点东西出来先进 Windows 关掉快速启动再正常关机一次。还有一个容易被忽略的点Windows 的用户目录里有大量隐藏的系统文件比如pagefile.sys、hiberfil.sys、System Volume Information这些不用拷拷了也没用。4.2 更新 GRUB、清掉菜单里的 Windows 残留Windows 分区删掉之后GRUB 菜单里那条Windows Boot Manager就失效了。更新方式取决于你的发行版Ubuntu 系是sudo update-grubDebian 系、CentOS 系是sudo grub-mkconfig -o /boot/grub/grub.cfg但光执行这一句往往不够——GRUB 的os-prober机制会扫描硬盘上的所有系统如果它的缓存或者配置里还留着 Windows 的记录菜单里照样会有。彻底的做法是编辑/etc/default/grub加上GRUB_DISABLE_OS_PROBERtrue GRUB_TIMEOUT3GRUB_DISABLE_OS_PROBERtrue让 GRUB 不再主动扫描其他系统GRUB_TIMEOUT3把等待时间从默认的 10 秒压到 3 秒。改完再执行一次update-grub重启后菜单就干净了。如果你希望开机直接进 Linux 连菜单都不显示把GRUB_TIMEOUT3改成GRUB_TIMEOUT0并加上GRUB_TIMEOUT_STYLEhidden。不过我一般不建议这么做系统出问题时连菜单都进不去排查起来更麻烦。4.3 EFI 分区里的 Microsoft 目录要不要删这是个高频问题。答案分两种情况如果你只删了一个 Windows 分区但机器上还留着 Windows 引导文件且你不打算再装 Windows那可以删EFI\Microsoft如果只是删了其中一个 Windows 系统另一个 Windows 还在那绝对不能删因为两个系统共用同一个EFI\Microsoft\Boot目录。EFI 分区在 Linux 下通常挂在/boot/efi直接进去看ls /boot/efi/EFI/看到Microsoft、ubuntu、Boot这些目录。删Microsoft之前先用efibootmgr确认固件里还有没有Windows Boot Manager启动项有的话配套一起删否则会留下一条指向空文件的启动项。4.4 把回收的空间合并进 Linux 分区删掉 NTFS 分区后空间变成未分配。要合并进 Linux 分区得看未分配空间的位置紧邻在 Linux 分区右侧直接growpart或图形工具扩展分区然后resize2fs扩展文件系统。在 Linux 分区左侧需要移动分区起始位置只能用 GParted 这类支持移动的工具耗时较长。中间隔着 swap 分区先删掉 swap 再重建或者先把 swap 挪走。命令行扩展的典型流程以/dev/nvme0n1p5为例sudo growpart /dev/nvme0n1 5 sudo resize2fs /dev/nvme0n1p5growpart负责调整分区表resize2fs负责调整文件系统两步都做完空间才真正可用。ext4 支持在线扩展不用卸载分区但操作期间别拨电源。5. 双 Windows 与双硬盘几种不常见但很容易翻车的场景5.1 同一块盘上 Win10 Win7用 bcdedit 精确拆弹双 Windows 的情况比 Linux 简单因为引导都在Windows Boot Manager里统一管理。先在管理员 CMD 里看一眼引导菜单bcdedit /enum all输出里的Windows 启动管理器段会列出所有引导项每个条目有identifier、device、osdevice、description。找到description是Windows 7的那条先删它的displayorder再删条目本身bcdedit /displayorder {xxxx-xxxx} /remove bcdedit /delete {xxxx-xxxx}顺序反过来也行但先移出显示列表更稳避免删到一半引导菜单出错。更省事的图形方式是msconfig→ 引导选项卡 → 选中要删的系统 → 删除效果一样。删完重启确认能正常进 Win10再回去把 Win7 的分区删掉最后用磁盘管理或者 DiskGenius 回收空间。别在删引导项之前就删分区那样会出现引导菜单里有条目、但对应分区已经不存在的情况开机直接报 0xc0000225。5.2 两块独立硬盘各装一个系统这种场景物理上很干净删起来最爽但有两个隐藏坑。坑一EFI 分区可能只有一块盘上有。很多主板在 UEFI 模式下把两块盘的引导都塞进同一块盘的 ESP你删了这块盘上的系统另一块盘的系统也可能起不来。判断方法是用diskpart或lsblk看每块盘上有没有独立的 EFI 分区没有的话就属于共用删之前要先在另一块盘上重建 ESP 并写引导。坑二NVRAM 启动项是全局的不是按盘存的。删完一个系统记得用bcdedit /enum firmware或efibootmgr清掉对应条目。5.3 品牌机恢复分区、苹果 Boot Camp、国产 Linux 的差别品牌机联想、华硕、神舟等通常有多个厂商恢复分区分布位置很刁钻有时候夹在 C 盘和 Linux 分区之间。这些分区删了之后一键恢复功能就废了建议保留。苹果电脑上的双系统基本是 Boot Camp 装的 Windows。移除方式不该手动删分区而是回到 macOS 打开启动转换助理走移除 Windows流程它会自动处理分区合并和引导清理。手动删的话macOS 的混合 MBR 结构容易出问题恢复起来很麻烦。国产 Linux麒麟、统信等基于 GRUB 体系操作思路和 Ubuntu 基本一致但要注意厂商有时会预留一个专用的恢复或数据分区删除前先查一下官方文档别把恢复环境砍了。6. 删完之后进不去系统故障排查与速查表6.1 grub rescue 现场的救命三行命令开机看到grub rescue说明 GRUB 本体还在但找不到配置里的根分区。先探测一下硬盘上还有哪些分区grub rescue ls假设输出是(hd0) (hd0,gpt1) (hd0,gpt2) ...逐个ls (hd0,gpt2)/找哪个分区里有boot目录或者grub目录。找到之后grub rescue set root(hd0,gpt2) grub rescue set prefix(hd0,gpt2)/boot/grub grub rescue insmod normal grub rescue normal顺利的话就能进入正常的 GRUB 菜单再选 Windows 启动进系统后用前面说的bcdboot彻底修复。如果ls出来的分区全是空的那说明 ESP 里的 grub 文件还在但配置丢了用安装盘重新写引导更省时间。6.2 Windows 蓝屏 0xc0000225 / 找不到 winload.efi这个错误的含义是引导配置指向的系统分区已经不存在通常发生在你删了某个 Windows 分区但没清理对应的 bcdedit 条目。修复方式是进 WinRE 命令提示符先看现有引导项bcdedit /enum all把device指向已删除分区的条目删掉然后重新执行一次bcdboot C:\Windows /s S: /f UEFI重建引导。如果连引导菜单都出不来就用bootrec /rebuildbcd让它重新扫描系统分区扫描到有效系统后按提示加入引导列表。6.3 问题速查表现象最可能的原因处理动作开机进grub rescueESP 里 grub 文件残留但分区已删修复 Windows 引导 清 EFI 残留开机进grub但菜单为空grub.cfg 丢失用 Live 盘重建 grub 配置报错 0xc0000225bcdedit 条目指向已删分区删条目 bcdboot 重建只有黑屏无任何提示启动顺序里第一位指向不存在的设备进 BIOS 调整启动顺序扩展卷是灰的未分配空间不与目标分区相邻用分区工具移动分区或另建数据盘Linux 下无法挂载 Windows 盘快速启动导致脏状态进 Windows 关闭快速启动后正常关机这张表覆盖了我遇到过的九成情况剩下那一成多半是硬件或者固件层面的问题比如主板对某些启动项识别异常更新一下 BIOS 往往就好了。7. 我踩过的坑和一些不太写进教程的细节7.1 操作顺序搞反等于白干一遍我最早几次翻车都是顺序问题。正确顺序永远是备份数据 → 清理引导项 → 删分区 → 修引导 → 回收空间。很多人图省事直接先删分区结果开机就卡住只能拿 U 盘去救场绕一大圈回来还得补引导那一步。另外删引导项要在删分区之前做这样万一删错了还有回旋余地因为分区还在系统还能进去。还有一个小细节修复 Windows 引导的时候bcdboot会自动创建新的启动项但旧的ubuntu启动项不会自动删。所以bcdedit /enum firmware这一步别省每次都要手动确认一遍列表看看有没有多余条目。我习惯把列表截图存下来下次再动这台机器的时候有据可查。7.2 几个删干净的检查项删完之后怎么确认真的干净了我的检查清单是BIOS 启动项列表里只剩目标系统的启动项没有第二、第三条残留。EFI 分区里被删系统的目录已经不存在只剩Microsoft、Boot和目标系统自己的目录。磁盘管理里没有额外的未分配碎片或者这些碎片已经被成功合并/建成了新分区。开机时间恢复正常不会卡在某个等待超时的界面。最后分享一个我认为最省心的做法如果你的机器支持从 U 盘启动手边常备一个 PE 启动盘里面放好 DiskGenius、bootice 和 Windows 安装镜像。这套东西平时用不上但每次动分区它就是我敢下手的底气。分区操作说到底是个不可逆的活儿工具备齐了胆子才大得起来。
返回列表