树莓派操作系统的新主要版本刚刚发布不久。如果你还在使用老的系统,那么如何才能升级到最新版本呢?在今天的文章中,我将向你展示如何从Bookworm(或更早版本)干净地升级到Trixie。
升级树莓派操作系统到新大版本的推荐方法是,在新SD卡上进行干净安装。旧SD卡可作为备份,并在新系统启动并运行后,用于将重要文件迁移到新系统。
首先,我简要提及一种快捷方法,但本文的重点是向你展示进行正确升级的完整步骤。
概述:升级树莓派操作系统的最佳方法是什么?
需要明确的是:本指南并非关于基本应用程序的版本更新。
今天,我们要完成一个主版本升级,即整个系统的全面升级,从树莓派操作系统(Bookworm或更早版本)升级到树莓派操作系统(Trixie)。
主版本升级意味着对操作系统底层部分进行基础性更改,这包括新功能,也可能导致旧设置失效。
那么,进行版本升级的最佳方法是什么呢?
我们已经介绍了一种快捷方法,有时我们称之为神风特攻队法,即通过更换新软件源并对整个系统进行更新,来就地升级树莓派操作系统。但事实上,这种方法并不推荐,因为它可能导致系统崩溃。
https://raspberrytips.com/upgrade-raspberry-pi-os-bookworm/
最新版本的树莓派操作系统(Trixie)进行了大量革新——显示服务器、音频和网络管理——所有这些都使得这种方法比以往更加危险。
让我们听听树莓派基金会对此有何看法:
与所有主要版本升级一样,我们不建议也不支持尝试升级[运行中的镜像]。……推荐的方法是烧录一个干净的副本……西蒙·朗——软件工程师/树莓派
这就是我今天要向你展示的:进行干净升级的明智方法。
以下是涉及的主要步骤:
备份重要文件。
干净安装树莓派操作系统。
恢复保存的数据。
让我们详细讨论每一步骤。
步骤1:为迁移准备旧系统
在本节中,你将确定要保留的文件,进行备份,并准备你的树莓派以接受最新的树莓派操作系统。
清点要保留的文件
在你打开引擎盖开始调试引擎之前,最好先弄清楚你想保留什么。这样,如果升级过程中出现问题,你可以保护自己。以下是我建议查看的地方。
The Home 目录
你的用户文件夹(例如/home/pat)包含多年来你可能存储的所有个人文件,如图片、漫画和3D打印模型。
但你可能没意识到,这里也隐藏着一些文件夹。
你可以通过运行以下命令查看所有文件:
ls -hal
像~/.config/和~/.local/share/这样的文件夹包含你以后可能需要的应用程序设置。
如果你的系统上有其他用户,他们在/home下也会有单独的文件夹。Download now
这里的一个简单方法是备份整个/home文件夹。
/etc中的配置文件
/etc文件夹在大多数Linux系统中都非常重要:它包含了你系统上几乎所有应用程序和服务的配置文件,如Web服务器、SSH密钥、cron作业和fstab挂载指令。
这个文件夹可能包含大量文件,但它们大多是文本文件,所以你会惊讶于它们占用的空间竟然如此之小。为了简单起见,我对/etc采取与/home相同的处理方法。
备份整个/etc文件夹,并在以后有选择地恢复你需要的文件。
特殊启动文件
树莓派有两个特殊的启动文件:config.txt和cmdline.txt。
在较新的安装中,这些文件位于/boot/firmware文件夹中。
如果你的安装较老,这些文件则在/boot中。
例如,你的config.txt可能包含复古游戏的超频设置。
如果你从未修改过这些文件,你可能不需要保存它们,但它们很小,所以以防万一,备份它们也没有坏处。
已安装的包
当你迁移到新系统时,你会想要重新安装你喜欢的应用程序。但如果你不记得安装了什么怎么办?
使用以下命令创建文本记录,以便以后重新安装:
记录系统中通过APT安装的包:
dpkg -l > my_packages.txt
记录系统上正在运行的服务:
systemctl list-units --type=service --state=running > my_services.txt
如何备份重要文件
现在你知道你想保留什么了,那么如何备份这些文件呢?
方法多种多样,我先介绍简单的方法,如果你需要更特别的方法,我会链接到我们的指南。
保留旧SD卡作为备用
最简单的备份方法是保持旧SD卡完好无损。然后,使用单独的SD卡安装新系统。在你的新系统运行后,你可以插入旧SD卡(使用USB读卡器)并复制你需要的文件。
如果你三个月后想起了什么,你可以随时从抽屉里拿出那张旧SD卡。快速又方便。
将文件复制到其他存储介质
如果你没有备用的SD卡,可以通过将文件从树莓派复制到其他存储介质来创建备份。
例如,我喜欢使用SFTP将整个/home和/etc文件夹从我的树莓派复制到我的PC上。这节省了我压缩和解压缩文件的时间。
另一种方法是使用tar命令压缩你想保留的文件夹,并将压缩文件复制到USB闪存驱动器上。
或者使用高级备份方法
如果上述备份方法不适合你,我们在网站上介绍了其他方法。例如,你可以创建旧系统的镜像,以防以后需要恢复它:如何创建树莓派SD卡的镜像?(Windows/Linux/Mac)。
https://raspberrytips.com/create-image-sd-card/
对于更特别的方法,比如备份到在线云服务,请查看我们的指南:备份树莓派的5种最佳方法(优缺点)。
https://raspberrytips.com/backup-raspberry-pi/
更新固件
既然你已经做了备份以防万一,那么你就可以准备更新树莓派的固件了。
固件存储在电路板上,在安装新操作系统版本之前确保它是最新的很有帮助。这样,你将获得最新的启动选项和更少的硬件故障行为。
在终端中运行以下命令以检查你的树莓派固件是否过时:
sudo rpi-eeprom-update
如果提示“有更新可用”,以下是如何更新树莓派固件的方法:
https://raspberrytips.com/update-raspberry-pi-firmware/
sudo apt updatesudo apt full-upgradesudo rpi-eeprom-update -asudo reboot now
重启后,再次检查应该显示你使用的是最新的稳定固件。
步骤2:干净安装最新树莓派操作系统
好了,现在老系统已经处理好了,是时候从头开始安装最新的树莓派操作系统版本了。
提示:使用两张SD卡更方便。你可以将旧的工作系统保留在一张卡上作为备份,并在另一张卡上安装新版本。
我们已经有多个关于如何干净安装树莓派操作系统的指南。你可以选择以下方法之一:
A)使用USB SD卡读卡器的标准方法:
在树莓派上安装树莓派操作系统Trixie(图解指南)。
https://raspberrytips.com/install-raspbian-raspberry-pi/
B)如果你没有备用的显示器/键盘:
如何安装无头树莓派(无显示器)。
https://raspberrytips.com/raspberry-pi-headless-setup/
C)如果你没有另一台电脑或SD卡读卡器:
使用树莓派进行网络启动安装。
https://raspberrytips.com/network-boot-with-raspberry-pi/
一旦你的新系统启动并运行,花时间完成树莓派操作系统的基本配置:设置用户、网络、安装更新等。完成所有这些后,你就可以继续下一步了。
步骤3:恢复保存的数据Download now
在干净安装了最新的树莓派操作系统版本后,如何恢复你的旧数据呢?以下是我推荐的一些常见步骤。
重新安装应用程序
还记得你在步骤1中记录的包列表吗?现在是时候重新安装它们了。
你可以从图形用户界面(GUI)或命令行安装包,以你更舒适的方式为准。有关更多详细信息,请查看我们的指南:如何在树莓派操作系统上轻松安装应用程序?(5种方法)。
https://raspberrytips.com/install-apps-raspberry-pi/
但是,我不建议重新安装整个旧包列表。新版本中可能有一些依赖项已经更改。相反,应该将其作为参考点,手动安装你可能忘记的任何内容的新版本。
复制用户文件
还记得你之前备份的/home文件夹吗?你可以将其中的一些内容复制到你的新系统上。我会从任何个人文件开始,比如视频或笔记——那些你自己放进去并且认识的东西。
但是,对于像~/.config或~/.local这样的隐藏文件夹,我不会盲目地复制它们。它们可能包含与你刚刚安装的新应用程序版本冲突的设置。只有当我对某个特定应用程序有大量自定义设置,并且确实需要重新创建时,我才会从那里复制。
对于大多数应用程序,我通常只是接受新的默认设置,并在此基础上进行工作。
恢复配置文件
还记得你之前备份的/etc文件夹吗?你也可以复制其中的一些内容。我建议有选择地进行复制,只复制你明确知道已经大量修改过的服务的配置文件。
例如:
/etc/ssh
/etc/apache2
/etc/ts.conf
对于其余文件,我接受默认安装在/etc中的新文件。只有当我意识到某个服务或程序的工作方式与以往不同时,我才会在我的备份中查找旧的配置文件,并恢复那个特定的文件。
测试服务
还记得你之前保存的服务列表吗?以下是如何让这些服务再次运行起来:
重新安装服务的包。(例如:sudo apt install apache2)
复制其配置文件,这些文件通常可以在你的旧/etc文件夹中找到。(例如,Pi-hole的设置可能存储在/etc/pihole中)
激活服务并启用自动启动:
sudo systemctl start <service>
sudo systemctl enable <service>
(有关更多详细信息,请查看我们的关于如何使用“systemctl”的指南。)
https://raspberrytips.com/systemctl-linux-command/
运行一些测试,看看你的服务是否按预期工作。
一次处理一个服务会更容易。例如,在继续之前,先安装并检查你的Web服务器是否正在运行。然后,检查你的Pi-Hole是否正确阻止了广告。以此类推。
恭喜,这应该涵盖了你升级到新版本所需的大部分步骤!如果你是高级用户,请查看下一节以获取更多技巧和窍门。
主版本间升级的技巧与窍门
事实上,每个系统都是不同的,所以我无法在上述步骤中涵盖每一个小情况。在本节中,我将介绍一些额外的技巧和窍门,可能有助于你进行备份和恢复。
Cron作业
如果你设置了自动化任务或脚本(cron作业),你将需要手动恢复它们。
在你的旧系统上,我建议从以下位置查看并复制/粘贴你的cron作业:
crontab -esudo crontab -e
如果你无法访问正在运行的系统,那么你需要复制文件。你可以在旧安装中的以下位置查找它们:
用户作业: /var/spool/cron/crontabs/
系统作业: /etc/crontab and /etc/cron.d/
Web服务器
如果你托管了一个网站,你将需要确保从老系统复制它。按照惯例,你可能将网站文件存储在/var/www/或/var/www/html文件夹中。
以下是恢复网站的一般步骤:
将网站文件复制到新系统上的相同文件夹中。
将你选择的Web服务器的旧配置文件复制到新系统上。(例如,对于Apache/nginx/Caddy,它们通常位于/etc文件夹中。)
在新安装上启动并启用Web服务器。
测试你的网站是否可访问
如果你忘记了你是如何设置的,请查看我们的指南以唤醒你的记忆:在家中使用树莓派托管网站。
数据库文件
如果你在数据库中存储了重要信息,也想将其迁移到新系统上的最好的方法是使用数据库应用程序的导出功能。
首先,从旧系统导出数据库:
启动数据库应用程序。
使用导出功能逐个导出每个数据库。
此操作将创建数据库备份,例如export.sql。
然后,在新系统上恢复数据库:
将导出的文件复制到新系统上。
启动数据库应用程序。
使用导入功能选择文件,逐个恢复每个数据库。
具体步骤可能因你在树莓派上使用的数据库(例如MySQL或MongoDB)而略有不同。
虚拟环境
对于编码人员来说,你可能有一些珍视的Python虚拟环境,想要在新系统上重新创建。但是,不要将整个venv文件夹压缩起来,因为这可能无法正确恢复。相反,从旧系统导出虚拟环境,并在新系统上恢复它们是可以的。
首先,从旧系统导出虚拟环境:
激活虚拟环境:
source /path/to/venv/bin/activate
导出环境设置:
pip freeze > requirements.txt
然后,在新系统上恢复虚拟环境:
创建并激活虚拟环境:
python3 -m venv venvsource venv/bin/activate
更新到最新版本的pip,以防万一:
pip install --upgrade pip
恢复环境:
pip install -r requirements.txt
容器
恢复Docker或Podman容器将很大程度上取决于你最初的设置方式。
例如,我使用Docker Compose文件,这些文件我存储在我的~/containers文件夹中。所以,我只需将整个文件夹从旧系统复制到新系统上,并让Docker根据我的配置拉取并重新创建一切。我不需要手动从旧设置中恢复每个文件,因为这就是我喜欢运行容器的初衷——可移植性。
推荐:复制容器配置,并让Docker/Podman完成其余工作。
但是,如果你在容器内有确实需要保留的自定义设置怎么办?在这种情况下,请阅读容器的配置文件(例如YAML),并查找“volumes”部分。
这个容器的文件存储在/etc/pihole和/etc/dnsmasq.d
(:)左侧列出的路径告诉你这些文件在你本地系统上的位置。如果需要,你可以将这些文件夹复制到你的新系统上。今天的教程就到这里。我希望我已经揭开了这个过程的神秘面纱,并让你对彻底的升级树莓派更有信心。
官方网站:https://edatec.cn/zh/cm0
淘宝店铺:https://edatec.taobao.com/
274