找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

1655

积分

0

好友

221

主题
发表于 13 小时前 | 查看: 0| 回复: 0

Raspberry Pi OS 徽标

树莓派操作系统的新主要版本已经发布。如果你还在使用老的系统,比如 Bookworm 或更早的版本,如何才能稳妥地升级到最新的 Trixie 呢?本文将详细介绍从旧版本进行干净升级的完整流程。

对于树莓派操作系统的主要版本升级,最被推荐且稳妥的方法是在一块新的 SD 卡上进行干净安装。原来的旧 SD 卡可以完整保留作为备份,并在新系统成功运行后,用于迁移重要的个人文件和数据。这种方法虽然看似多了一步,但能最大程度避免因系统底层剧烈变动而导致的崩溃风险。

本文将先简要提及一种快速的“就地升级”方法,但重点在于展示进行正确、完整升级的详细步骤。

概述:升级树莓派操作系统的最佳方法是什么?

树莓派电路板背景图

首先需要明确,本指南并非关于单个应用程序的常规更新,而是针对整个操作系统的主要版本升级,例如从树莓派操作系统 (Bookworm) 升级到树莓派操作系统 (Trixie)。

主版本升级意味着操作系统底层的基础部分发生了重大变更,会引入新功能,也可能导致旧的设置失效。那么,最佳升级方法是什么?

确实存在一种被称为“神风特攻队法”的快捷方式:通过更换软件源,然后执行完整的系统更新来尝试就地升级。但这种方法风险很高,官方并不推荐。尤其是 Trixie 版本在显示服务器、音频和网络管理等方面进行了大量革新,使得这种“暴力”升级比以往更加危险。

树莓派基金会的软件工程师 Simon Long 明确表示:“与所有主要版本升级一样,我们不建议也不支持尝试升级[运行中的镜像]。……推荐的方法是烧录一个干净的副本……”

因此,本文将向你展示的就是这种明智的“干净升级”方法,主要包含以下三个核心步骤:

  1. 备份重要文件:为迁移准备旧系统。
  2. 干净安装新系统:在新 SD 卡上安装最新的树莓派操作系统。
  3. 恢复数据:将有价值的个人文件、配置和服务迁移到新系统。

下面,我们来详细拆解每一步。

步骤1:为迁移准备旧系统

本节的目标是帮你梳理出哪些文件值得保留,并指导你进行备份,同时为安装新系统做好硬件准备。

清点要保留的文件

在开始操作前,花点时间搞清楚你想保留什么至关重要。这能确保在升级出现意外时,你的重要数据安然无恙。

1. 用户主目录 (/home)
你的用户文件夹(例如 /home/pat)里存放着所有个人文件,如照片、文档等。除此之外,还有一些隐藏文件夹包含了应用程序的个性化设置。

你可以通过以下命令查看主目录下的所有文件(包括隐藏文件):

ls -hal

终端列出 home 目录内容

~/.config/~/.local/share/ 这样的文件夹就存储着各类应用的配置和数据,未来你可能需要它们。最省事的方法就是备份整个 /home 目录

2. 系统配置文件 (/etc)
/etc 目录在 Linux 系统中地位关键,它包含了系统上几乎所有服务和应用的配置文件,例如网络设置、SSH 密钥、定时任务等。

这个目录文件虽多,但基本都是文本文件,占用的空间通常不大。同样地,为了简便,可以备份整个 /etc 文件夹,将来再从中挑选需要的特定文件进行恢复。

3. 特殊启动文件
树莓派有两个特殊的启动文件:config.txtcmdline.txt。在较新的系统中,它们位于 /boot/firmware/;在老系统中,则在 /boot/ 目录下。

config.txt 配置文件内容

例如,config.txt 里可能保存了你为复古游戏设置的超频参数。如果你从未修改过它们,可以不备份;但它们体积很小,备份一下也无妨。

4. 已安装的软件包列表
迁移后你肯定需要重新安装常用的应用程序。如果不记得装过什么,可以提前创建记录。

  • 记录通过 APT 安装的所有软件包:
    dpkg -l > my_packages.txt

    dpkg 列出已安装包

  • 记录当前正在运行的系统服务:
    systemctl list-units --type=service --state=running > my_services.txt

    systemctl 列出运行中服务

如何备份重要文件

知道要备份什么之后,接下来就是选择备份方式。

方法一:保留旧 SD 卡作为备用 (推荐)
最简单的方法就是保持旧 SD 卡完好无损。然后找另一张新 SD 卡来安装新系统。等新系统成功运行后,通过 USB 读卡器挂载旧 SD 卡,直接复制需要的文件即可。这种方法的优点是,未来任何时候你都可以从旧卡中找回遗漏的数据。

方法二:将文件复制到其他存储介质
如果没有多余的 SD 卡,可以将文件从树莓派复制到电脑、NAS 或 USB 闪存盘中。例如,使用 SFTP 工具将整个 /home/etc 文件夹传输到你的电脑上。或者,使用 tar 命令打包压缩后复制。

方法三:使用高级备份方法
如果需要更全面的保护,可以考虑为整张 SD 卡创建磁盘镜像,以便在需要时完整恢复旧系统。也可以研究使用 rsync 或云存储服务进行备份。

更新固件

完成数据备份后,建议在安装新系统前,先更新树莓派板载的固件。这能确保你获得最新的启动引导程序和硬件兼容性。

在终端中运行以下命令检查固件状态:

sudo rpi-eeprom-update

检查固件更新

如果输出提示有更新可用,可以按以下步骤更新:

sudo apt update
sudo apt full-upgrade
sudo rpi-eeprom-update -a
sudo reboot now

重启后,再次运行 sudo rpi-eeprom-update,应该会显示固件已是最新状态。
固件已更新至最新

步骤2:干净安装最新树莓派操作系统

树莓派操作系统桌面截图

旧系统的准备工作已经就绪,现在是时候在一块新的 SD 卡上安装最新的树莓派操作系统 Trixie 了。

提示:使用两张 SD 卡会方便很多。一张保留旧的完整系统作为备份,另一张用于全新安装。

我们已有多个详细的安装指南,你可以根据自己的硬件条件选择:

  • A) 标准方法 (使用读卡器和显示器):按照图文指南,使用 Raspberry Pi Imager 工具烧录并安装系统。
  • B) 无头安装 (无需显示器/键盘):通过预先配置 wpa_supplicant.confssh 文件,实现远程安装和访问。
  • C) 网络启动安装:如果你没有额外的电脑或读卡器,可以考虑从网络引导并安装系统。

新系统安装并首次启动后,请花些时间完成基本设置,包括创建用户、连接网络、更新软件包等。完成这些初始化步骤后,就可以进入数据恢复阶段了。

步骤3:恢复保存的数据

在全新的树莓派操作系统上,如何将旧数据迁移过来呢?以下是针对常见数据类型的恢复建议。

重新安装应用程序

还记得步骤1中生成的 my_packages.txt 吗?现在它可以作为你重新安装软件的参考清单。

正在工作的程序员插画

请注意:不建议直接根据旧列表批量重新安装所有软件包。因为新系统版本的依赖关系可能已发生变化。更好的做法是将其作为备忘录,手动挑选并安装你真正需要的新版本软件。

复制用户文件

之前备份的整个 /home 目录现在派上用场了。建议先从那些你熟悉的个人文件开始复制,比如文档、图片、视频等。

对于像 ~/.config~/.local 这类隐藏的配置文件夹,不要盲目地整体覆盖。它们可能包含与新版本应用程序不兼容的旧设置。只有当某个特定应用有大量复杂自定义配置,且你确定需要保留时,才从中复制对应的子文件夹或文件。对于大多数应用,接受新版本的默认设置并重新配置往往是更稳妥的选择。

恢复配置文件

对于备份的 /etc 目录,同样建议有选择性地恢复。只复制那些你明确记得并大量修改过的服务的配置文件。

例如:

  • /etc/ssh/ (SSH服务器配置)
  • /etc/apache2//etc/nginx/ (Web服务器配置)
  • /etc/fstab (文件系统挂载表)

对于其他未修改的配置文件,直接使用新系统安装时生成的默认文件即可。如果之后发现某个服务行为异常,再回头从旧备份中找出对应的配置文件进行替换。

测试服务

根据 my_services.txt 列表,让你需要的服务在新系统上重新运行起来:

  1. 重新安装服务软件包:例如 sudo apt install apache2
  2. 恢复其配置文件:从旧 /etc 备份中,找到对应服务的配置目录(如 Pi-hole 的配置可能在 /etc/pihole)并复制到新系统的相同位置。
  3. 启动并启用服务
    sudo systemctl start <service_name>
    sudo systemctl enable <service_name>
  4. 进行测试:验证服务是否按预期工作(例如,访问网页、测试DNS解析等)。

建议一次只处理一个服务,确保它正常工作后,再继续下一个。

主要版本间升级的技巧与窍门

每个系统都有其独特性,以下是一些额外的场景处理技巧。

Cron 定时任务

如果你设置了自动化脚本(Cron 作业),需要手动恢复它们。

  • 在能访问旧系统的情况下,使用 crontab -e(用户任务)或 sudo crontab -e(系统任务)查看并记录。
  • 如果无法访问旧系统,可以在旧 SD 卡的 /var/spool/cron/crontabs/(用户任务)或 /etc/crontab/etc/cron.d/(系统任务)目录下找到相关文件。

Web 服务器

如果你在树莓派上托管了网站,需要迁移网站文件和服务器配置。

  1. 将网站文件(通常位于 /var/www//var/www/html/)复制到新系统的相同位置。
  2. 将 Web 服务器(如 Apache, Nginx)的配置文件从旧 /etc 复制到新系统。
  3. 在新系统上安装、启动并启用 Web 服务器。
  4. 测试网站是否可以正常访问。

数据库

对于存储在数据库中的信息,使用导出/导入功能是最可靠的迁移方式。

从旧系统导出数据库

  1. 运行数据库管理工具。
  2. 为每个数据库执行导出操作,生成如 database_backup.sql 的文件。
    MySQL 数据库导出示例

在新系统上导入数据库

  1. 将备份文件复制到新系统。
  2. 安装并启动数据库服务。
  3. 使用导入功能,用备份文件恢复每个数据库。

Python 虚拟环境

不要直接复制整个 venv 目录,因为其中可能包含与旧系统路径相关的硬编码。正确做法是:

从旧环境导出

source /path/to/venv/bin/activate
pip freeze > requirements.txt

在新系统重建

python3 -m venv venv
source venv/bin/activate
pip install --upgrade pip
pip install -r requirements.txt

Docker / Podman 容器

恢复容器的最佳方式是使用你当初创建它们时的配置文件(如 docker-compose.yml)。

如果你将 Compose 文件存储在某个目录(如 ~/containers),只需将这个目录复制到新系统,然后运行 docker-compose up -d 即可,Docker 会自动拉取镜像并重建容器。

如果容器内有需要保留的持久化数据,请检查容器配置文件的 volumes 部分,它指明了数据在宿主机上的存储路径。
Docker Compose volumes 配置示例

例如上图中,容器的数据存储在宿主机的 /etc/pihole/etc/dnsmasq.d 目录。在容器重建前,将这些目录从旧系统复制到新系统的相同路径,即可保留数据。

希望这份详细的指南能帮助你顺利完成树莓派操作系统的大版本升级。整个流程的核心在于“先备份,再全新安装,最后选择性恢复”,虽然步骤稍多,但能最大程度保障升级过程的平稳和数据的安全。如果在实践中遇到具体问题,欢迎在云栈社区与其他开发者交流探讨。




上一篇:解码AI开发:详解LLM、Prompt与Context三大核心术语
下一篇:.NET老炮心路:如何通过技术深耕,在40+后依然立于不败之地
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-2-27 18:43 , Processed in 1.536424 second(s), 46 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表