📖 本文由 Batocera 官方 Wiki 翻译整理,内容可能随版本更新而变化。


手动升级或降级系统指南

本教程适用于以下几种情况:
* 无法通过常规方式(即 主菜单(MAIN MENU) > 更新与下载(UPDATES & DOWNLOADS) > 更新类型(UPDATE TYPE) 中切换“稳定版(Stable)”或“测试版(Beta)”)完成升级或降级。
* 即使通过 SSH 远程连接(Secure Shell) 也无法顺利更新。
* 想要回退到某个更早的历史版本。
* 想要安装特定或自定义的 Batocera 修改版。


深入了解 Batocera 的磁盘布局

在动手之前,我们需要先搞清楚 Batocera 是如何“住”在你的驱动器里的。理解了结构,你就能明白稍后需要把文件准确地放进哪个文件夹。

生活化类比:这就像是一个精装修的公寓。整个驱动器被分成了两个“房间”:
1. 系统分区(Batocera Partition):这是“厨房和机房”,里面装满了运行系统所需的各种程序和工具,平时是锁起来的(只读状态)。
2. 共享分区(SHARE Partition):这是“客厅和储藏室”,专门用来存放你的游戏镜像(ROMs)、存档和个人设置等用户数据(Userdata)

磁盘布局示意图

通常在你的 U 盘或存储卡上,布局如下:
* 第一分区:Batocera 分区(包含核心程序)
* 第二分区:SHARE 分区(包含所有用户数据)

深入解析:Batocera 的双分区设计

为了让升级和维护变得更简单,Batocera 巧妙地将系统分成了两个独立的部分:引导分区数据分区

  • 引导分区(Boot Partition)
    当你把 U 盘或 SD 卡插入另一台电脑时,看到的那个 FAT32 格式的分区就是它。它就像是系统的“发动机室”,包含了启动所需的所有核心文件。

    • 运行逻辑:系统启动时,它会被挂载到 /boot/ 路径下,并且处于只读模式(Read-only)。其中最核心的是一个名为 SquashFS 的压缩文件,它是 Batocera 的“系统镜像”,启动后会挂载到根目录 / 来运行整个系统。
    • 关键配置:你在这里还能找到控制启动行为的 batocera-boot.conf 配置文件。
    • 空间分配:这个分区通常预留了 6GB 空间(旧版本为 4GB),其中系统文件大约占用 2GB。
    • 更新机制:【提示】当你升级或降级 Batocera 时,系统只会重写这个分区里的文件。这种设计让版本更迭变得异常简单,就像给电脑换个“启动盘”,而不会影响你的个人资产。
  • 用户数据分区(Userdata/SHARE)
    这里存放着除系统核心以外的“所有东西”。它就像是你的“私人仓库”,里面装满了 BIOS 固件游戏镜像(ROMs)、游戏存档以及你的个性化设置(包括 batocera.conf)。

    • 核心优势:在进行版本升级或降级操作时,这个分区完全不会被触碰。
    • 强大的通用性:它是为了“跨平台移植”而设计的。这意味着你可以把这个分区的数据带到任何版本的 Batocera 上使用,甚至是在不同的硬件平台之间切换。

      生活化类比:这就像是你把家里的“游戏光盘”和“游戏进度卡”装进了旅行包。无论你去朋友家是用性能超强的 PC 玩,还是用小巧的单板计算机(SBC)玩,你的存档都在。当然,如果那台机器性能太弱,它还是带不动那些大型游戏的。

如何手动升级或降级 Batocera 系统

如果你需要精确控制系统的版本,除了在图形界面操作,还可以使用命令行这个“手术刀”来精准处理。

通用方法:使用命令行升级

对于 Batocera 5.23 及更高版本,最稳妥的方法是使用 SSH 远程连接(Secure Shell) 下的系统升级指令。

  • 第一步:确认你的硬件架构
    不同的设备(如 PC、树莓派)需要不同的安装包。你可以输入以下命令来查看你的设备该选用哪个版本:
    cat /boot/boot/Batocera.board
    例如:在普通电脑上,它会显示 x86_64

  • 第二步:获取镜像下载地址
    从官方镜像站找到你想要的版本 URL。

  • 第三步:执行升级指令
    使用 Batocera-upgrade [下载链接] 进行操作。

    • 示例 1(升级到最新稳定版):
      Batocera-upgrade https://mirrors.o2switch.fr/Batocera/x86_64/stable/last
    • 示例 2(降级到特定版本,如 v36):
      Batocera-upgrade https://mirrors.o2switch.fr/Batocera/x86_64/stable/36/

【注意】请务必确保 URL 与你的硬件架构匹配。如果你在树莓派上照抄 PC 版(x86_64)的链接,系统将无法运行。


新版特权:本地手动升级

如果你使用的是 Batocera 39 或更高版本,操作会像“把大象装进冰箱”一样简单:

  • 第一步:下载升级包
    在电脑上下载好对应的 boot.tar.xz 文件。
  • 第二步:放置文件
    将该文件拷贝到系统的 /userdata/system/upgrade 文件夹内。
  • 第三步:启动手动更新
    在命令行输入并回车:
    Batocera-upgrade manual

生活化类比:这就像是你不再依赖餐厅的配送(自动在线更新),而是自己去超市买好了菜(下载包)放进厨房,然后告诉厨师“开火做饭”即可。


运行状态提示

当你开始执行升级时,系统会显示类似下面的进度信息,告知你正在下载的大小:


Starting the upgrade...
url: https://mirrors.o2switch.fr/Batocera/x86_64/stable/last/boot.tar.xz
need to download 1876mb

如果你在屏幕上看到类似下面的进度条,说明系统正在努力搬运数据:


/userdata/system/upgrade/boot.tar.xz 0%[ ] 9.55M 1.82MB/s eta 19m 42s


针对“骨灰级”版本的特殊指令

如果你使用的是非常古老的版本(从 Batocera 5.75.22),那么升级命令会有所不同。以 PC 平台(x86_64)为例,你需要输入的指令是:


/recalbox/scripts/recalbox-upgrade.sh https://mirrors.o2switch.fr/Batocera/x86_64/stable/last

【注意】请务必根据你的实际硬件架构(如树莓派等)更换对应的链接地址。


安全性说明:你的数据会丢吗?

当你运行这些升级或降级指令时,系统会下载一个压缩包,并将其解压到引导分区(Boot Partition),从而覆盖旧的系统文件。

生活化类比:这就像是你给家里的电脑“重装系统”,但 Batocera 的设计非常聪明,它只动“C 盘”的系统文件,而你的“D 盘”(存放在共享分区里的游戏 ROMs、存档、元数据等数据)是绝对不会被触碰的。

总之,无论你怎么折腾版本,你的游戏和进度永远是安全的。

在下次重启 Batocera 时,系统就会自动运行你刚刚安装的新版本。如果上述自动升级工具不符合你的需求,你还可以尝试下面更硬核的“纯手动”升级法。


使用本地 boot.tar.xz 文件手动升级

【警告】在 Batocera v38 及更高版本中,执行以下手动流程前请务必确认:如果 Batocera-boot.config 配置文件中开启了 autoresize=true(即取消了该行前面的注释),手动操作可能会擦除你的所有用户数据!请三思而后行。

如果你已经下载好了 boot.tar.xz 升级包,想要手动完成升级或降级,请按照以下步骤操作:

  • 第一步:获取升级包
    前往官方镜像站(https://mirrors.o2switch.fr/Batocera/)下载你心仪版本的 boot.tar.xz 文件。
    【提示】如果是寻找老版本,请先进入对应的硬件架构文件夹,然后前往 /stable/last/archives/ 路径查找。你可以参考官方提供的架构清单与构建链接。

  • 第二步:备份配置文件
    从 Batocera 机器中将引导配置文件(Batocera-boot.confconfig.txt)备份到安全的地方。
    > 生活化类比:这就像是给你的大门配新钥匙前,先把原来的锁匠笔记存好。如果你之前为了让系统正常启动而微调过这些配置,这一步就是你的“保命符”。

  • 第三步:解压素材
    使用解压软件(Windows 用户推荐使用 7-zip)将 boot.tar.xz 解压,你会得到一个 boot.tar 文件。

  • 第四步:覆盖安装
    boot.tar 文件中的内容直接解压到 Batocera 驱动器的引导分区(Boot Partition)根目录下。
    【提示】引导分区就是你把 U 盘插到 Windows 电脑上默认能看到的那个分区。如果在文件资源管理器里找不到,你可能需要进入 Windows 的“磁盘管理(Disk Management)”手动给该分区分配一个盘符。

  • 第五步:还原配置
    在重新启动 Batocera 之前,务必将第二步备份的配置文件放回原处,以防止你的用户数据分区(Userdata Partition)被系统意外擦除。


技术揭秘:Batocera-upgrade 命令到底做了什么?

通常情况下,系统内置的升级工具会自动帮你完成以下全套流程:

当你按下升级按钮或运行升级命令时,系统后台其实像一个有条不紊的“搬运工”,自动完成了以下繁琐的步骤:

  • 第一步:下载镜像
    将启动镜像文件(boot.tar.xz)精准地搬运到用户数据分区的 /userdata/system/upgrade/ 目录下。
  • 第二步:健康检查
    自动校验文件的 MD5 摘要(md5sum),确保下载的文件没有在传输过程中损坏。
    > 生活化类比:这就像收快递时先看一眼包装封条是否完好。根据你的硬盘速度,这个过程可能需要几秒到一两分钟。
  • 第三步:解锁权限
    验证通过后,将原本“只读”的引导分区重新挂载为可读写模式(Rewritable mode),准备动工。
  • 第四步:建立临时备份
    为了保险,系统会将当前的配置文件做一份备份(例如把 Batocera-boot.conf 复制一份叫 .upgrade 的后缀名)。
  • 第五步:覆盖安装
    将下载好的 boot.tar.xz 内容解压并覆盖到 /boot/ 目录中。
  • 第六步:还原现场
    将之前备份的配置文件重新恢复为正式文件名,并清理掉多余的临时文件。
  • 第七步:清空缓存
    删除掉已经使用完的 boot.tar.xz 安装包,腾出空间。

如果提示“空间不足”怎么办?

用户数据分区(Userdata partition)空间告急

如果在尝试下载升级文件时,系统弹窗提示你空间不足,通常是由以下原因导致的:

  • 你的存储设备容量太小:如果你的 U 盘或 SD 卡总容量小于 8GB,虽然系统能勉强运行,但已经没有多余的空房留给“升级包”了,你将无法使用内置的自动更新功能。
  • 剩余空间不足:系统在下载 boot.tar.xz 文件时,用户数据分区至少需要拥有 2GB 以上的额外可用空间。

生活化类比:这就像你想在衣柜里塞进一套超大的全身铠甲(升级包),虽然衣柜(磁盘)还没彻底塞满,但剩下的缝隙已经挤不进这个大家伙了。

【提示】如果遇到这种情况,建议删除一些不常用的游戏镜像(ROMs)或清理一下存档,腾出至少 2GB 的空间后再重试。

解决“空间不足”的进阶方案

如果你的用户数据分区(Userdata Partition)空间告急,导致无法自动升级,可以尝试以下两种“曲线救国”的方法:

  • 方案一:临时腾挪
    暂时删除或移动一些体积较大的游戏镜像(ROMs)固件文件(BIOS)或其他个人数据,直到腾出足够的空间来下载 boot.tar.xz 升级包。
  • 方案二:外援协助
    在另一台电脑上下载好目标版本的 boot.tar.xz 文件,然后将 Batocera 驱动器连接到该电脑上,手动将 boot.tar 里的内容直接解压到 Batocera 的引导分区(Boot Partition)

引导分区(Boot Partition)空间告急

如果在升级过程中,系统提示引导分区(即系统核心所在的那个小分区)空间不足,通常是由于以下原因:

  • 硬件限制:你的 U 盘或 SD 卡总容量小于 8GB。虽然系统能跑,但已经没有空间完成自动升级的解压任务了。
  • 旧版本的“历史遗留问题”:在 Batocera v31 及更低版本中,你上传的开机视频(Splash Video)是会被存放在引导分区的。
    > 生活化类比:这就像是你的“系统仓库”被几个巨大的装修材料(视频文件)挤满了,导致新的家具(系统升级包)搬不进来。

    • 解决方法:删除视频文件,重启系统,然后再尝试升级。
  • 分区配额太小:你最初安装的是非常老版本的 Batocera。在那个年代,系统默认给引导分区分配的空间比现在的版本要小得多。
  • 系统损坏:你的安装文件可能已经损坏,导致空间计算异常。

【提示】如果是由于分区配额太小导致的,通常需要参考前文提到的“手动覆盖”法,或者备份数据后重新刷写最新版的系统镜像。

引导分区(Boot Partition)的空间彻底告急,导致无法自动升级时,你可以从以下方案中任选其一来解决:

方案一:使用备用硬盘(推荐,最安全)

如果你手头有一个多余的 U 盘或移动硬盘,可以用它作为“中转站”。

  • 第一步:制作新系统
    在备用驱动器上刷入一个全新版本的 Batocera 系统。
  • 第二步:数据大搬迁
    启动新系统,并将旧驱动器中 共享分区(Share) 下的所有用户数据(Userdata)全部拷贝到新驱动器的对应位置。
  • 第三步:彻底翻新旧驱动器
    数据迁移完成后,你可以直接使用这个新驱动器;或者把旧驱动器重新刷入新版系统,再把数据搬回去。

方案二:彻底重刷系统

如果你不想折腾两个硬盘,也可以直接在原盘上“推倒重来”。

  • 第一步:数据备份
    将你的用户数据(Userdata)备份到其他设备(如电脑或 NAS)。
  • 第二步:重新刷机
    对驱动器重新进行 系统刷写(Reflash),直接安装最新版。

【注意】通过这种方式备份数据,可能会丢失文件的权限属性(File attributes)。这可能会导致 WINE 环境(WINE)Cemu 模拟器(Cemu) 在运行时出现兼容性问题。


方案三:手动扩展引导分区

生活化类比:这就好比你觉得家里的厨房(引导分区)太小放不下新冰箱,于是决定把隔壁卧室(用户数据分区)的墙往后挪一挪,强行给厨房扩容。

【提示】这是一个比较硬核的操作,需要通过专门的磁盘管理工具手动调整分区的大小,建议有一定技术基础的用户尝试。

如果你决定采取手动扩容这一硬核方案,请务必谨慎操作:

  • 第一步:全面备份数据
    在动工之前,请将所有的游戏镜像、存档以及配置文件备份到安全的地方。
  • 第二步:使用专业工具扩容
    使用 GParted 磁盘管理器(GParted)GNOME 磁盘工具(GNOME Disks) 等高级工具来强行拉伸引导分区的空间。

【注意】这是一个“拆迁式”的调整。这种操作极大概率会摧毁你的用户数据分区(Userdata Partition),甚至可能破坏 主引导记录(MBR)GUID 分区表(GPT),导致驱动器彻底无法启动。

生活化类比:这就像是在承重墙上动土。虽然理论上能把厨房(引导分区)扩大,但一不小心可能整栋楼(磁盘分区表)都会塌掉。

【提示】如果你使用的是 Batocera v30,引导分区至少需要分配 6GB 的总空间,且用户数据分区需保留 2GB 的剩余空间,才能正常使用系统内置的自动更新功能。如果风险太高,请考虑维持现状或选择其他方案。


方案四:借用另一台电脑手动更新

如果你不想冒着丢数据的风险去调整分区,也可以借用另一台电脑来充当“中转站”。

  • 第一步:连接驱动器
    将你的 Batocera 驱动器(U 盘或存储卡)插入另一台运行 Windows 或其他系统的电脑。
  • 第二步:备份引导内容
    在电脑中找到那个 FAT32 格式的引导分区(在 Windows 下默认只能看到这一个分区),将其中的所有内容拷贝并备份到电脑的本地文件夹中。

【注意】采用这种方法虽然安全,但这意味着以后每次系统更新时,你都需要重复这一套手动解压和覆盖的繁琐操作。

  • 第三步:腾出系统空间
    在你的 Batocera 驱动器中找到名为 batocera 的文件(这个文件没有扩展名,大小约为 2GB,旧版本可能稍小),并将其彻底删除。

    【注意】请务必确保是“永久删除”而非放入回收站。在大多数系统中,你可以先选中该文件,然后按下 [Shift] + [Delete] 键。删除后,请检查磁盘剩余空间是否显著增加。

    生活化类比:这就像是你要换一套大沙发,必须先把旧沙发彻底扔出屋子,而不是把它塞进门口的垃圾箱,否则新沙发还是搬不进来。

  • 第四步:解压新系统文件
    将你之前准备好的 boot.tar 压缩包解压到该分区的根目录下。
    【提示】解压时,请不要覆盖或包含 batocera-boot.conf 文件,以免丢失你的个性化设置。解压完成后,你应该能在引导文件夹中看到一个名为 batocera.update 的文件,这标志着传输已成功。

  • 第五步:插回设备并启动
    将驱动器从电脑上拔出,重新插回你的 Batocera 机器并开机。

【提示】如果系统无法正常启动,别担心,你可以将第二步中备份的引导分区旧文件还原回去。

进阶方案:先卸载旧版再升级

如果空间实在局促,你可以选择手动“除旧迎新”,即先删掉旧版本再进行更新。
【注意】一旦采用此方法,意味着以后每次系统更新时,你可能都需要手动执行这一流程。

  • 第一步:获取系统读写权限
    正常启动 Batocera,通过 SSH 远程连接(Secure Shell) 或进入桌面模式打开 终端模拟器(xterm),输入并运行以下命令:
    mount -o remount,rw /boot
    > 生活化类比:这就像是给一直锁着的“系统保险柜”换上了一把可以自由开启的钥匙,这样我们才能对里面的文件进行修改。

  • 第二步:备份核心系统文件
    为了安全起见,先给旧系统留个底。你可以运行以下命令:
    cp /boot/boot/Batocera /userdata/system/Batocera-backup
    (或者按下 Alt + F4 退出终端,直接在文件管理器里把 /boot/boot/Batocera 文件复制到 /userdata/system/ 文件夹下。)

  • 第三步:删除并启动升级
    运行以下组合命令,先删掉旧的系统包,随后立即触发升级程序:
    rm -i /boot/boot/Batocera && Batocera-upgrade
    运行后,系统会询问你是否确认删除,输入 y 确认即可。

  • 第四步:等待并重启
    此时你会看到类似下方的进度输出:

    Starting the upgrade...
    url: https://mirrors.o2switch.fr/Batocera/x86_64/beta/last/boot.tar.xz
    need to download 1876mb
    m/upgrade/boot.tar.xz 0%[ ] 9.55M 1.82MB/s eta 19m 42s

    耐心等待升级彻底完成,随后重新启动设备即可应用新版本。

系统救砖:如何恢复备份

如果升级后发现 Batocera 无法正常启动,请不要慌张。由于我们在之前已经预留了“后悔药”,你可以通过以下步骤将系统还原到之前的状态:

  • 操作步骤:一键还原系统
    进入命令行环境,运行以下命令(如果你之前将备份存放在了其他位置,请相应修改命令中的第一个路径):
    cp /userdata/system/Batocera-backup /boot/boot/Batocera && rm /userdata/system/Batocera-backup

生活化类比:这就像是你在装修新房失败后,把自己之前打包存放在仓库里的旧家具又搬回了原处。这条命令会把备份的旧系统文件“搬回”引导区,并顺手清理掉备份文件以节省空间。


原文: 手动升级/降级Batocera • 翻译: DIY8 Bot

© 版权声明
评论 抢沙发

请登录后发表评论

    暂无评论内容