系统是win11+两个ubuntu,ubuntu20.04和ubuntu22.04,想删除ubuntu20.04且不用保留数据

Ubuntu 22.04 的终端里运行这些命令:

  1. 重启电脑,选择启动 Ubuntu 22.04
  2. 打开终端;
  3. lsblk 开始操作。

如果你不确定当前启动的是哪个系统,可以在终端输入:

lsb_release -a

它会输出:

Distributor ID: Ubuntu
Description:    Ubuntu 22.04.4 LTS
Release:        22.04
Codename:       jammy

确保你是在 22.04 下再继续操作。需要确认哪个分区是 20.04

lsblk -f

或者:

sudo blkid

例如我的输出是:

anqi@anqi-LOQ-16IRH8:~/Desktop$ lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 24.04.2 LTS
Release:	24.04
Codename:	noble
anqi@anqi-LOQ-16IRH8:~/Desktop$ 
1. 确认 Ubuntu 20.04 所在分区

在终端输入:

lsblk -f

或:

sudo blkid

找出哪个分区是 Ubuntu 20.04(可以通过挂载点、标签或大小判断)。


2. 安装并打开 GParted 删除 Ubuntu 20.04 分区
sudo apt update
sudo apt install gparted
sudo gparted
  • 找到 Ubuntu 20.04 的分区;
  • 卸载(右键 → Unmount);
  • 删除;
  • 应用更改。

3. 更新 GRUB 引导菜单

删除后,在终端中运行:

sudo update-grub

4. (可选)清除无用的 EFI 启动项
sudo efibootmgr

找到指向 Ubuntu 20.04 的条目,比如 Boot0001* ubuntu,然后:

sudo efibootmgr -b 0001 -B

(把 0001 替换为你查到的条目编号)


例如我的情况是:

anqi@anqi-LOQ-16IRH8:~/Desktop$ lsblk -f
NAME FSTYPE FSVER LABEL  UUID                                 FSAVAIL FSUSE% MOUNTPOINTS
loop0squash 4.0                                                     0   100% /snap/bare/5
loop1squash 4.0                                                     0   100% /snap/core22/1748
loop2squash 4.0                                                     0   100% /snap/firefox/5751
loop3squash 4.0                                                     0   100% /snap/firmware-updater/167
loop4squash 4.0                                                     0   100% /snap/gnome-42-2204/202
loop5squash 4.0                                                     0   100% /snap/snap-store/1248
loop6squash 4.0                                                     0   100% /snap/snapd/23545
loop7squash 4.0                                                     0   100% /snap/gtk-common-themes/1535
loop8squash 4.0                                                     0   100% /snap/snapd-desktop-integration/253
nvme0n1├─nvme0n1p1
│                                                                            
├─nvme0n1p2
│    vfat   FAT32 EFI    56B0-7093                             101.1M    31% /boot/efi
├─nvme0n1p3
│    ntfs                A0926AFF926AD974                                    
├─nvme0n1p4
│    ntfs                0E146C3B146C27C3                                    
├─nvme0n1p5
│    ntfs         新加卷 4EFE0122FE010445                                    
├─nvme0n1p6
│    ext4   1.0          7a8b49fc-e284-4d6b-98b0-a2639f6cdcc5                
└─nvme0n1p7ext4   1.0          0842ee80-35f1-40a0-b16c-4f0fb193a54b   91.2G    12% /

非常清楚,我的磁盘结构如下:


💽 分区分析

分区文件系统说明
nvme0n1p2vfatEFI 启动分区
nvme0n1p3~p5ntfsWindows 的几个分区(包括数据)
nvme0n1p6ext4Ubuntu(无挂载点) → 可能是 Ubuntu 20.04
nvme0n1p7ext4Ubuntu 24.04 → 你当前使用的系统(挂载在 /

✅ 可以确定:

  • nvme0n1p6 就是 Ubuntu 20.04 的分区(没有挂载点,且不在使用中)。
  • nvme0n1p7 是 Ubuntu 24.04 的分区(我现在就在这里操作,挂载在 /,91.2GB,已使用 12%)。

✅ 下一步操作(在 Ubuntu 24.04 下执行)

1. 安装 GParted(如果尚未安装):
sudo apt update
sudo apt install gparted
2. 启动 GParted:
sudo gparted
3. 删除 Ubuntu 20.04 分区:

在 GParted 中:

  • 找到 nvme0n1p6
  • 右键 → “卸载”(如果可选);
  • 然后 → “删除”;
  • 点左上角 ✅ 按钮(Apply)确认删除操作。

我可以选择将这块空闲空间保留,或者之后合并进其他分区(如 nvme0n1p7)。


4. 更新 GRUB 引导项:

在终端运行:

sudo update-grub

它会自动移除 Ubuntu 20.04 的启动项。


5. (可选)清理 EFI 启动项

先查看所有 EFI 启动项:

sudo efibootmgr

你可能会看到多个 ubuntu 项。如果你看到旧的 Ubuntu 20.04 启动项(根据 BootOrder 和 BootXXXX 判断),比如:

Boot0001* ubuntu
Boot0002* ubuntu

可以试着先从系统启动日志判断哪个是当前用的:

journalctl | grep "EFI boot entry"

然后用如下命令删除旧的:

sudo efibootmgr -b XXXX -B

(把 XXXX 替换为对应编号)


anqi@anqi-LOQ-16IRH8:~/Desktop$ sudo efibootmgr
BootCurrent: 0005
Timeout: 0 seconds
BootOrder: 0005,0004,2001,2002,2003
Boot0002* EFI PXE 0 for IPv4 (08-8F-C3-E9-45-21) 	PciRoot(0x0)/Pci(0x1c,0x0)/Pci(0x0,0x0)/MAC(088fc3e94521,0)/IPv4(0.0.0.00.0.0.0,0,0)RC
Boot0003* EFI PXE 0 for IPv6 (08-8F-C3-E9-45-21) 	PciRoot(0x0)/Pci(0x1c,0x0)/Pci(0x0,0x0)/MAC(088fc3e94521,0)/IPv6([::]:<->[::]:,0,0)RC
Boot0004* Windows Boot Manager	HD(2,GPT,d6a796c6-8527-4159-936c-9d91447c677b,0x8000,0x4b000)/File(\EFI\Microsoft\Boot\bootmgfw.efi)57494e444f5753000100000088000000780000004200430044004f0042004a004500430054003d007b00390064006500610038003600320063002d0035006300640064002d0034006500370030002d0061006300630031002d006600330032006200330034003400640034003700390035007d0000004f000100000010000000040000007fff0400
Boot0005* ubuntu	HD(2,GPT,d6a796c6-8527-4159-936c-9d91447c677b,0x8000,0x4b000)/File(\EFI\ubuntu\shimx64.efi)
Boot2001* EFI USB Device	RC
Boot2002* EFI DVD/CDROM	RC
Boot2003* EFI Network	RC

我当前的 EFI 启动项如下:


🧾 EFI 启动项分析:

编号名称说明
Boot0005ubuntu当前正在使用的 Ubuntu(24.04)
Boot0004Windows Boot Manager✅ Windows 11 引导项
Boot0002/0003网络启动项可忽略
Boot2001~2003USB/DVD 网络等可忽略

✅ 结论:

  • 我现在启动的是 Boot0005(Ubuntu 24.04);
  • 系统 没有残留旧的 Ubuntu 20.04 的启动项,非常干净;
  • 不需要使用 efibootmgr -B 删除任何启动项

现在进行:把那块空闲空间(原 p6)合并进 Ubuntu22.04

方法:使用 Ubuntu Live USB 进行分区扩展

第一步:制作 Live USB(如果已有可跳过)

  • 下载 Ubuntu 24.04 ISO
  • 用工具制作 Live USB(如 Rufus、balenaEtcher)

第二步:从 Live USB 启动电脑

  1. 重启电脑;

  2. 按 F12 / Esc / F2(具体看你电脑)进入 Boot Menu;

  3. 选择 “Try Ubuntu without installing”(试用模式,不安装);

  4. 打开终端,输入:

    sudo gparted
    

第三步:合并空闲空间进 nvme0n1p7

  1. 在 GParted 中,找到:

    • 空闲空间(你刚删除 p6 后产生的)
    • 你的 Ubuntu 系统分区 nvme0n1p7
  2. 拖动 nvme0n1p7 的右边界,使它向左扩展到空闲空间;

  3. 应用更改(点击 ✅ Apply)。

⚠️ GParted 可能会提示你需要调整分区顺序,允许它这么做。


第四步:重启系统并检查是否成功扩容

  1. 重启回你的 Ubuntu 正常系统(24.04);

  2. 执行:

    df -h /
    

    检查 / 分区空间是否变大。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/web/82093.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大模型应用开发第三讲:大模型是Agent的“大脑”,提供通用推理能力(如GPT-4、Claude 3)

大模型应用开发第三讲&#xff1a;大模型是Agent的“大脑”&#xff0c;提供通用推理能力&#xff08;如GPT-4、Claude 3&#xff09; 资料取自《大模型应用开发&#xff1a;动手做AI Agent 》。 查看总目录&#xff1a;学习大纲 关于DeepSeek本地部署指南可以看下我之前写的…

第十四篇:MySQL 运维中的故障场景还原与排查实战技巧

本篇通过典型故障场景的还原与分析&#xff0c;帮助你掌握高效、系统的 MySQL 故障排查与应急处理方法&#xff0c;构建稳定可靠的数据库运维体系。 一、故障排查的基本思路 快速定位问题入口&#xff1a; 错误日志、连接报错、监控告警&#xff1b; 确认影响范围&#xff1a…

MySQL 分页查询优化

目录 前言1. LIMIT offset, count 的性能陷阱&#xff1a;为什么它慢&#xff1f;&#x1f629;2. 优化策略一&#xff1a;基于排序字段的“跳跃式”查询 (Seek Method) &#x1f680;3. 优化策略二&#xff1a;利用子查询优化 OFFSET 扫描 (ID Subquery)4. 基础优化&#xff1…

使用curlconverter网站快速生成requests请求包

在python写requests请求的时候&#xff0c;抓包后需要复制粘贴包的内容&#xff0c;然后手动修改和写代码。 最近发现一个好的网站 https://curlconverter.com/python/ 可以复制curl(bash)数据后&#xff0c;直接生成数据包&#xff0c;非常便捷。 举例说明&#xff1a; 选…

python打卡day41

简单CNN 知识回顾 数据增强 卷积神经网络定义的写法 batch归一化&#xff1a;调整一个批次的分布&#xff0c;常用与图像数据 特征图&#xff1a;只有卷积操作输出的才叫特征图 调度器&#xff1a;直接修改基础学习率 卷积操作常见流程如下&#xff1a; 1. 输入 → 卷积层 →…

系统思考:化繁为简的艺术

系统思考&#xff0c;其实是一门化繁为简的艺术。当我们能够把复杂的问题拆解成清晰的核心以及更加简单&#xff0c;从而提升团队的思考品质和行动品质&#xff0c;发挥最大的合力。 每个公司都想在某方面成为最优秀的&#xff0c;但是实际上具有穿透性的洞察力和摆脱虚荣心的清…

2025.05.28【Parallel】Parallel绘图:拟时序分析专用图

Improve general appearance Add title, use a theme, change color palette, control variable orders and more Highlight a group Highlight a group of interest to help people understand your story 文章目录 Improve general appearanceHighlight a group探索Paralle…

Elasticsearch父子关系解析

引言 在复杂业务场景中&#xff0c;数据关联查询是搜索与分析的核心需求。以电商订单、文章评论、客户关系等场景为例&#xff0c;传统关系型数据库通过外键实现的多表关联&#xff0c;在分布式搜索场景下面临性能与扩展性挑战。Elasticsearch通过父子关系&#xff08;Parent-…

MCP架构全解析:从核心原理到企业级实践

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐&#xff1a;「storms…

开发者体验提升:打造高效愉悦的开发环境

“开发者体验不是奢侈品&#xff0c;而是生产力的倍增器。优秀的工具链能让开发者从机械劳动中解放&#xff0c;专注于创造真正有价值的东西。” —— 前端架构师 Sarah Drasner 1. 自定义 CLI 工具开发 (1) 基于 plop.js 的组件模板生成器 痛点分析&#xff1a;在大型项目中…

运用集合知识做斗地主案例

方法中可变参数 一种特殊形参&#xff0c;定义在方法&#xff0c;构造器的形参列表里&#xff0c;格式&#xff1a;数据类型...参数名称&#xff1b; 可变参数的特点和好处 特点&#xff1a;可以不传数据给它&#xff1b;可以传一个或者同时传多个数据给它&#xff1b;也可以…

websocket在vue中的使用步骤,以及实现聊天

一、WebSocket集成步骤 ‌连接初始化‌ 在Vue组件中创建WebSocket实例&#xff0c;建议在mounted生命周期中执行&#xff1a; data() {return {socket: null,messages: []} }, mounted() {this.socket new WebSocket(wss://your-server-endpoint); }‌事件监听配置 ‌连接成…

HarmonyOS鸿蒙Uniapp三方框架

鸿蒙Uniapp三方框架集成指南 一、环境配置 // 安装必要依赖 npm install ohos/hvigor-ohos-plugin --save-dev // 配置harmony模块 "harmony": {"compileSdkVersion": 9,"compatibleSdkVersion": 8,"arktsVersion": "1.0.0&quo…

【HW系列】—溯源与定位—Linux入侵排查

文章目录 一、Linux入侵排查1.账户安全2.特权用户排查&#xff08;UID0&#xff09;3.查看历史命令4.异常端口与进程端口排查进程排查 二、溯源分析1. 威胁情报&#xff08;Threat Intelligence&#xff09;2. IP定位&#xff08;IP Geolocation&#xff09;3. 端口扫描&#x…

C++17新特性 Lambda表达式

//lambda表达式的基本语法如下&#xff1a; /* [捕获列表] (参数列表)mutable(可选)异常属性 -> 返回类型 { // 函数体 }*/ 1&#xff0c;值捕获 //1&#xff0c; 值捕获示例 #include <iostream> void lambda_value_capture() {int value 1;auto copy_value/*返…

园区智能化集成平台汇报方案

该方案为园区智能化集成平台设计,依据《智能建筑设计标准》等 20 余项国家与行业规范,针对传统园区信息孤岛、反应滞后、经验流失、管理粗放等痛点,构建可视化智慧园区管理平台,实现大屏数据可视化、三维设备监控、智慧运维(含工单管理、巡检打卡)、能源能耗分析、AI 安防…

Vue-自定义指令

自定义指令 简单写法 v-twoAge 功能&#xff1a; 当前年龄翻倍 注意&#xff1a;指令方法名称 小写 代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><title>自定义指令</title><!-- 引入V…

Kotlin 中的数据类型有隐式转换吗?为什么?

在 Kotlin 中&#xff0c;基本数据类型没有隐式转换。主要出于安全性和明确性的考虑。 1 Kotlin 的显式类型转换规则 Kotlin 要求开发者显式调用转换函数进行类型转换&#xff0c; 例如&#xff1a; val a: Int 10 val b: Long a.toLong() // 必须显式调用 toLong() // 错…

Android获取设备信息

使用java: List<TableMessage> dataListnew ArrayList<TableMessage>();//获取设备信息Hashtable<String,String> ht MyDeviceInfo.getDeviceAllInfo2(LoginActivity.this);for (Map.Entry<String, String> entry : ht.entrySet()) {String key entry…

WIN11使用vscode搭建c语言开发环境

安装 VS Code 下载地址: Visual Studio Code - Code Editing. Redefined 安装时勾选 "添加到 PATH"&#xff08;方便在终端中调用 code 命令 下载 MSYS2 官网&#xff1a;MSYS2 下载 msys2-x86_64-xxxx.exe&#xff08;64位版本&#xff09;并安装。 默认安装路径…