Linux:告别Jammy,拥抱Noble!WSL Ubuntu 22.04 到 24.04 LTS 终极升级指南

大家好!如果大家和我一样,是Windows Subsystem for Linux (WSL) 的忠实用户,那么大家一定对Ubuntu在其中的表现印象深刻。我们中的许多人可能还在使用稳定可靠的Ubuntu 22.04 LTS (Jammy Jellyfish)。但现在,一个更令人兴奋的时代已经到来——Ubuntu 24.04 LTS (Noble Numbat) 已经正式发布,并且从22.04 LTS的直接升级路径也已开放!

升级到最新的LTS(长期支持)版本,意味着我们不仅能享受到最新的功能、性能优化和安全更新,还能确保在未来数年内获得持续的官方支持。那么,为什么要升级?如何安全、平稳地完成这次“迁徙”?

别担心,这篇指南将带大家走完从备份到验证的全过程,确保我们的WSL环境无痛升级。让我们开始吧!
在这里插入图片描述

为什么要升级到Ubuntu 24.04 LTS?

在我们动手之前,先来看看“高贵的努比亚特”为我们带来了哪些诱人的新特性:

  • Linux内核 6.8: 带来了更强的硬件支持、性能改进和新的系统调用功能。
  • 默认启用.NET 8: 对于.NET开发者来说,这是一个巨大的福音,开箱即用,无需额外配置。
  • 更新的工具链: 包括GCC 14, Glibc 2.39, Python 3.12, OpenJDK 21等,让我们的开发环境保持在技术前沿。
  • 增强的安全性: 提供了更严格的内核安全设置和应用限制,为我们的工作保驾护航。
  • 企业级管理改进: 引入了新的管理工具和策略,简化了大规模部署和维护。

简而言之,升级就是拥抱未来。现在,让我们确保这个过程万无一失。

升级流程概览

为了对整个过程有一个清晰的认识,我绘制了以下的流程图:
在这里插入图片描述

步骤一:安全第一!备份我们的WSL实例

在进行任何重大系统更改之前,备份是我们的“后悔药”。 尽管WSL的升级过程通常很稳定,但我们必须为最坏的情况做准备。

  1. 完全关闭WSL服务
    为了确保文件系统的一致性,请打开Windows的PowerShell或CMD,运行以下命令:

    wsl --shutdown
    
  2. 导出Ubuntu实例
    接下来,我们将整个Ubuntu 22.04环境打包成一个文件。请继续在PowerShell中运行:

    # 格式: wsl --export <实例名> <备份文件路径.tar>
    wsl --export Ubuntu-22.04 "D:\wsl-backups\Ubuntu-22.04-backup-$(Get-Date -Format 'yyyyMMdd').tar"
    

    请注意:

    • Ubuntu-22.04 替换为我们的WSL实例的确切名称(可以通过 wsl -l -v 命令查看)。
    • D:\wsl-backups\ 替换为我们自己选择的、空间充足的备份目录。

完成这一步,我们就有了坚实的后盾。如果升级失败,我们可以随时通过 wsl --import 命令恢复它。

步骤二:为升级做准备——更新现有系统

在“跳跃”到新版本之前,我们需要确保当前的系统处于最佳状态。

  1. 启动Ubuntu 22.04 WSL实例。

  2. 在Ubuntu终端中,依次执行以下命令:

    # 更新软件包列表
    sudo apt update# 升级所有已安装的软件包
    sudo apt upgrade -y# 处理可能存在的依赖关系变更
    sudo apt dist-upgrade -y# 移除不再需要的旧依赖
    sudo apt autoremove -y# 清理旧的软件包缓存
    sudo apt autoclean
    

    这个“一条龙”服务能确保我们的系统干净、最新,为版本升级扫清障碍。

步骤三:配置升级管理器,瞄准LTS

我们需要明确告诉系统,我们的目标是下一个LTS版本,而不是中间的非LTS版本。

  1. 编辑升级配置文件
    使用编辑器(这里以nano为例)打开配置文件:

    sudo nano /etc/update-manager/release-upgrades
    
  2. 确保Prompt值为lts
    在文件中找到 Prompt= 这一行,确保它的值是 lts

    # /etc/update-manager/release-upgrades
    [DEFAULT]
    # Default prompting behavior, valid options:
    #
    #  never  - Never check for a new release.
    #  normal - Check to see if a new release is available.  If so, inform the
    #           user but don't offer to upgrade unless the user runs
    #           do-release-upgrade.
    #  lts    - Check to see if a new LTS release is available.  If so,
    #           inform the user and turn on the upgrade button in
    #           update-manager.
    Prompt=lts
    

    如果已经是 lts,则无需修改。如果不是,请修改后保存退出(在nano中按 Ctrl+X -> Y -> Enter)。

步骤四:执行升级!见证奇迹的时刻

万事俱备,只欠东风。现在,让我们启动升级程序。

  1. 运行升级命令
    在Ubuntu终端中,输入这个神奇的命令:

    sudo do-release-upgrade
    
  2. 跟随屏幕提示

    • 系统会检查软件源,然后告诉我们它找到了新版本 “24.04 LTS”。
    • 它会计算升级所需的下载量、磁盘空间等信息,并询问我们是否要继续。勇敢地输入 y 并按 Enter
    • 在升级过程中,系统可能会询问如何处理被修改过的配置文件。通常,选择保留维护者提供的最新版本(默认选项)或保留我们自己的版本都是可以的。如果不确定,按 Enter 选择默认值通常是安全的。
    • 对于 libc6 等核心库的配置,系统可能会询问是否在升级期间重启服务。建议选择 Yes,以避免潜在的服务中断。

这个过程会下载数百个软件包并进行配置,所需时间取决于我们的网络速度和电脑性能。泡杯咖啡,耐心等待即可。

步骤五:收尾工作与验证

升级完成后,我们需要进行最后的确认和清理。

  1. 重启WSL
    升级脚本最后会提示我们需要重启。在WSL环境中,这意味着关闭当前的会话。

    • 首先,在PowerShell中再次运行 wsl --shutdown 来确保所有WSL实例都已关闭。
    • 然后,重新启动我们的Ubuntu实例。
  2. 验证升级结果——“开奖”时刻
    打开新的Ubuntu终端,运行以下命令:

    lsb_release -a
    

    如果我们看到如下输出,那么我们升级成功了!

    No LSB modules are available.
    Distributor ID: Ubuntu
    Description:    Ubuntu 24.04 LTS
    Release:        24.04
    Codename:       noble
    
  3. 最后的清理
    在新系统上,我们再做一次清理,以确保所有依赖关系正确,并移除升级后产生的无用软件包。

    sudo apt update
    sudo apt upgrade -y
    sudo apt autoremove -y
    sudo apt autoclean
    

常见问题与注意事项 (FAQ)

  • 我的WSL版本太旧怎么办?
    Ubuntu 24.04 LTS需要较新版本的WSL。在PowerShell中运行 wsl --update 将WSL更新到最新版本,可以避免很多奇怪的问题。

  • 升级失败了怎么办?
    别慌!这就是我们第一步做备份的原因。我们可以删除或注销失败的实例 (wsl --unregister YourInstanceName),然后通过 wsl --import 命令从之前的备份文件中恢复我们的22.04环境。

  • 升级后我的第三方PPA(个人软件包存档)失效了?
    这是正常现象。升级过程为了安全会禁用所有第三方PPA。升级成功后,我们需要手动检查这些PPA是否支持24.04,然后重新编辑源文件(通常在 /etc/apt/sources.list.d/ 目录下)并启用它们。

  • 升级提示空间不足?
    升级需要额外的磁盘空间来下载和解压新软件包。请确保我们的WSL虚拟磁盘有足够的空间(建议至少有15-20GB的可用空间)。

结语

我们已经成功地将我们的WSL开发环境带入了“Noble Numbat”的新纪元。通过这次升级,我们不仅获得了最新的功能和性能,更重要的是,为未来几年的开发工作打下了坚实、可靠的基础。

希望这篇详尽的指南能帮助大家顺利完成升级。享受在Windows上无缝运行最新版Ubuntu的乐趣吧!

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

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

相关文章

江协科技STM32 11-1 SPI通信协议

本节课我们将继续学习下一个通信协议&#xff0c;SPI。SPI通信和我们刚刚学习过的I2C通信差不多。两个协议的设计目的都一样都是实现主控芯片和各种外挂芯片之间的数据交流&#xff0c;有了数据交流的能力&#xff0c;我们的主控芯片就可以挂载并操纵各式各样的外部芯片&#x…

预过滤环境光贴图制作教程:第一步 - HDR 转立方体贴图

在基于物理的渲染(PBR)中,环境光贴图是实现真实光照效果的核心组件之一。而将 HDR 全景图转换为立方体贴图,是制作预过滤环境光贴图的基础步骤。本教程将详细讲解如何实现这一转换过程。 什么是 HDR 转立方体贴图? HDR(高动态范围)全景图通常以等矩形投影(Equirectan…

02 深度学习介绍【动手学深度学习v2】| 学习笔记

1、intro自然语言处理虽然我们过去取得了很大的进展&#xff0c;但是实际上还是停留在感知层面。计算机视觉领域&#xff0c;因为图片里面都是像素&#xff0c;像素很难用符号学来解释&#xff0c;所以计算机视觉大部分是用概率模型或机器学习来做。深度学习它是机器学习的一种…

智能学号抽取系统V5.6.4重磅发布

告别随机数&#xff0c;拥抱智能点名&#xff01;—— 全新升级的“智能学号抽取系统V5.6.4”重磅发布&#xff01; 摘要&#xff1a; 还在为课堂随机提问、活动抽奖而手动翻名单、查表格而烦恼吗&#xff1f;还在忍受传统点名工具的简陋和不智能吗&#xff1f;今天&#xff0…

Leetcode-141.环形链表

dict和set 1. 结构上的区别&#xff1a;类型键&#xff08;Key&#xff09;值&#xff08;Value&#xff09;示例dict有有{a: 1, b: 2}set有没有{a, b} dict 是**键值对&#xff08;key-value&#xff09;**的集合。set 是只有键&#xff08;key&#xff09;没有值的一组唯一元…

调节步进电机速度时调PSC和调ARR的区别

在步进电机控制中&#xff0c;调节速度通常是通过改变脉冲频率实现的。代码中选择调节ARR&#xff08;Auto-Reload Register&#xff09;而非PSC&#xff08;Prescaler&#xff09;的原因如下&#xff1a; 1. ARR 与 PSC 的核心区别 • ARR&#xff08;自动重载寄存器&#xff…

在 AKS 中运行 Azure DevOps 私有代理-1

简介 配置 Azure DevOps 私有代理的传统方法是将其部署在虚拟机 (VM) 上。然而,一个有趣的替代方案是利用 Azure Kubernetes 服务 (AKS) 来实现此目的。 本文将指导您如何使用 Helm Chart 在 AKS 集群中设置 Azure DevOps 私有代理,并提供该过程的分步说明。 在 AKS 中部署…

C# _Json数据

目录 1、添加Json库 2、数据序列化&#xff08;对象转 JSON&#xff09;和反序列化&#xff08;JSON 转对象&#xff09;操作 3、序列化 创建和读取Json数据 创建Json数据 定义一个CreateJson方法 读取 解析 Json数据 定义一个ReadJson方法 4、程序运行结果 在 C# 中&…

JavaScript 原始值与引用值

JavaScript 原始值与引用值 ECMAScript变量可以包含两种不同类型的数据&#xff1a;原始值和引用值。 原始值&#xff08;primitive value&#xff09;就是最简单的数据&#xff0c;引用值&#xff08;reference value&#xff09;则是由多个值构成的对象。 保存原始值的变量是…

linux中挂载磁盘和卸载

查找磁盘 找到你想要挂载的磁盘。可以使用lsblk或fdisk -l命令来查看系统中所有的磁盘和分区信息。 lsblk 对数据盘进行分区 在fdisk交互界面里&#xff0c;按以下步骤操作 fdisk /dev/vdb- 输入n来创建新分区。 - 按照提示设置分区的起始扇区、结束扇区等信息&#xff0c;…

java8学习笔记-Stream流

JDK1.8新增了Stream类&#xff0c;从而把函数式编程的风格引入到Java语言中&#xff0c;Stream类的API提供了强大的功能&#xff0c;使用Stream后&#xff0c;可以写出更加强大&#xff0c;更加简洁的代码首先&#xff0c;Stream流有一些特性&#xff1a;Stream流不是一种数据结…

Flutter开发 dart语言基本语法

特点 Dart语言支持JIT与AOT。 Dart语言采用单线程模型。 Dart语言是强类型编程语言&#xff0c;但是允许弱类型语言式编程。 基本语法 1.变量和常量 变量 var、object、dynamic关键字或数据类型显式声明变量。 命名规则&#xff1a; 变量名称必须由数字、字母、下划线或$组成&a…

SpringBoot:基于 Redis 自定义注解实现后端接口防重复提交校验(幂等操作)

SpringBoot&#xff1a;基于 Redis 自定义注解实现后端接口防重复提交校验&#xff08;幂等操作&#xff09;可基于 时间间隔 和 用于幂等判断的参数名称 实现防重复提交校验 客户端发送请求 ↓ [Spring Boot 应用入口]↓ ┌─────────────────────────…

【语音技术】意图与语料

目录 1. 意图 1.1. 意图分类 1.1.1 入口意图&#xff08;Entry Intent&#xff09; 1.1.2 对话意图&#xff08;Dialog Intent&#xff09; 1.2. 意图类型切换操作步骤 2. 语料 2.1 语料分类详解 2.2 语料编写规范详解 2.3 标签符号深度说明 3. 词槽 3.1 符类型要求 …

【MySQL集群架构与实践5】使用Docker实现水平分片

目录 一. 在Docker中安装ShardingSphere 二. 实践&#xff1a;水平分片 2.1 应用场景 2.2 架构图 2.3 服务器规划 2.4 创建server-user容器 2.5 创建server-order0和server-order1容器 2.6.日志配置 2.7 数据节点配置 2.8.测试数据节点 2.8.1.测试server_order0.t_or…

视觉图像处理中级篇 [1]—— 彩色照相机的效果与预处理

在工业检测中&#xff0c;黑白相机虽应用广泛&#xff0c;但在应对颜色差异检测时往往力不从心。彩色照相机凭借其对色彩信息的精准捕捉&#xff0c;成为复杂场景下的理想选择&#xff0c;而预处理技术则进一步释放了其性能潜力。一、彩色照相机的效果检查盖子上的金色标签可以…

使用 BERT 的 NSP 实现语义感知切片 —— 提升 RAG 系统的检索质量

在构建 Retrieval-Augmented Generation&#xff08;RAG&#xff09;系统时&#xff0c;文档的切片方式至关重要。我们需要将长文本切分成合适的段落&#xff08;chunks&#xff09;&#xff0c;然后存入向量数据库进行召回。如果切得太粗&#xff0c;会丢失上下文细节&#xf…

使用STM32CubeMX生成的STM32CubeIDE工程在更改工程名后编译失败问题解决

0 问题描述 使用STM32CubeMX生成STM32CubeIDE工程,然后使用STM32CubeIDE改名后编译提示如下错误: 1 问题原因及解决办法 1.1 问题原因 原因在于更名后STM32CubeIDE没有自动更新引用关系,这是因为我们使用STM32CubeMX生成代码时没有勾选在根目录下生成: 取消勾选在根目…

8月3日星期日今日早报简报微语报早读

8月3日星期日&#xff0c;农历闰六月初十&#xff0c;早报#微语早读。1、广西防城港&#xff1a;奔驰女司机身份已查清&#xff0c;结果将统一对外发布&#xff1b;2、陈艺文、陈佳包揽游泳世锦赛女子跳水三米板金银牌&#xff1b;3、九省份保险业已赔付暴雨灾害损失5.2亿元&am…

wxPython 实践(六)对话框

wxPython 实践&#xff08;一&#xff09;概述 wxPython 实践&#xff08;二&#xff09;基础控件 wxPython 实践&#xff08;三&#xff09;页面布局 wxPython 实践&#xff08;四&#xff09;事件响应 wxPython 实践&#xff08;五&#xff09;高级控件 wxPython 实践&#x…