☰
ARM设备系统克隆指南:Clonezilla安装、备份与还原实战
2026/9/28 13:35:04 网站建设 项目流程

1. 为什么ARM设备需要专属的Clonezilla方案

手里攒了几块树莓派、一块Rock 5B,还有一台老旧的ARM笔记本,想批量部署系统的时候,第一反应肯定是找Clonezilla。但如果你直接去官网下载x86_64的ISO往ARM设备上怼,结果只有一个——引导不起来。这不是Clonezilla不好用,而是架构不匹配这个最底层的门槛在作祟。

Clonezilla本质上是一套基于Linux的磁盘克隆与还原工具链,它的核心组件包括Partclone、dd、ntfsclone这些底层工具,以及一套引导脚本和交互界面。x86版本里所有的二进制文件都是针对x86_64指令集编译的,ARM设备的CPU根本认不出这些指令。所以ARM版Clonezilla不是“可选”,而是“必须”。

这篇文章面向的是手里有ARM开发板、ARM服务器、ARM笔记本,并且需要做系统备份、批量部署、磁盘迁移的从业者。不管你是刚拿到树莓派的新手,还是已经在ARM集群上跑了几年业务的老手,下面这套从下载到安装再到实际使用的完整流程,都能直接抄作业。我会把每个步骤背后的逻辑讲清楚,包括为什么选这个版本、为什么用这种写入方式、参数怎么算,以及我在实际操作中踩过的那些坑。

ARM版Clonezilla的获取渠道和x86版不太一样。x86版有稳定的ISO发行版,直接下载就能用。ARM版因为设备碎片化严重——树莓派、Rockchip、Allwinner、高通、鲲鹏,每家的引导方式都不同——所以官方并没有提供一个“万能ISO”。目前主流做法有两种:一是使用Clonezilla官方提供的ARM版压缩包,手动部署到已有的Linux系统中;二是基于Debian或Ubuntu的ARM镜像,自行安装Clonezilla的deb包。两种方式各有适用场景,下面会详细拆解。

2. ARM版Clonezilla的获取与版本选择

2.1 官方源与镜像站的实际差异

Clonezilla的官方下载页面提供的是x86_64的ISO和zip包,ARM版本并不在显眼位置。实际上,ARM版Clonezilla是以“Clonezilla live for ARM”的形式存在的,官方在SourceForge的归档目录里有对应的压缩包。但这里有个问题:官方归档的ARM版本更新频率很低,最后一次更新可能已经是两三年前的事了。

我实测下来,更靠谱的做法是直接从Debian或Ubuntu的ARM软件源里安装clonezilla包。Debian 12的arm64源里就有clonezilla的deb包,版本虽然不是最新,但核心功能完整,Partclone的版本也足够新,支持ext4、btrfs、xfs这些主流文件系统。Ubuntu 22.04/24.04的arm64源同样有clonezilla可用。

如果你非要找官方那个ARM压缩包,路径大概是:SourceForge的clonezilla项目下,进入“clonezilla_live_stable”目录,然后找带“arm”字样的子目录。但我要提醒一句,那个包里的内核版本很老,对新的ARM板子支持不好,比如Rock 5B的RK3588芯片,老内核根本认不出NVMe控制器。

2.2 版本选择的核心判断依据

选哪个版本,取决于你的ARM设备跑的是什么系统。我整理了一个对照表,你可以直接对号入座:

设备类型推荐系统Clonezilla获取方式注意事项
树莓派4B/5Raspberry Pi OS (64位)apt install clonezilla需要先启用arm64源
Rock 5B / RK3588Ubuntu 22.04 arm64apt install clonezilla内核需5.10以上
鲲鹏920服务器CentOS 7 arm64源码编译或deb包CentOS源里没有,需手动处理依赖
老ARM笔记本Debian 12 arm64apt install clonezilla最省心的方案
其他ARM开发板Armbianapt install clonezillaArmbian基于Debian,兼容性好

注意:如果你的设备跑的是32位ARM系统(armhf/armv7),Clonezilla的支持非常有限。Partclone在32位ARM上有已知的内存溢出问题,大分区克隆时会崩溃。强烈建议升级到64位系统再操作。

2.3 下载前的环境检查清单

在动手下载之前,先花两分钟确认几件事,能省掉后面一堆麻烦:

  • 确认架构:终端执行uname -m,输出aarch64才是64位ARM,输出armv7l是32位,后者不建议继续。
  • 确认系统版本:cat /etc/os-release,看是Debian、Ubuntu还是其他。Debian 11/12、Ubuntu 20.04/22.04/24.04都没问题。
  • 确认磁盘空间:Clonezilla本身不大,但克隆过程中需要存放镜像。至少预留20GB空闲空间,如果要做全盘镜像,预留空间要大于源盘已用空间。
  • 确认网络:apt安装需要联网,如果设备没有有线网口,先配好WiFi。
  • 确认权限:所有操作都需要root权限,sudo -i切换到root或者每条命令加sudo。

这几项检查看起来简单,但我见过太多人卡在“uname -m输出armv7l”这一步,然后折腾半天才发现是系统装错了版本。

3. 手把手安装Clonezilla ARM版

3.1 通过apt安装的完整流程

这是最省事的方法,适合Debian和Ubuntu系的ARM设备。我以Ubuntu 22.04 arm64为例,把完整命令列出来:

# 切换到root sudo -i # 更新软件源 apt update # 安装clonezilla apt install -y clonezilla # 验证安装 which clonezilla clonezilla --version

正常情况下,apt install clonezilla会自动拉取依赖,包括partclone、drbl、udpcast这些。安装完成后,clonezilla --version会输出类似Clonezilla version 3.35.2的信息。

但这里有个坑:Ubuntu 22.04的arm64源里,clonezilla的版本可能比较老,依赖的partclone版本也老。如果你要克隆btrfs文件系统,老版本partclone可能不支持。解决办法是加Debian的源,或者从Debian backports里拉新版本。具体操作:

# 添加Debian backports源(仅限Debian系统) echo "deb http://deb.debian.org/debian bullseye-backports main" >> /etc/apt/sources.list apt update apt install -t bullseye-backports clonezilla

提示:混用Ubuntu和Debian的源有风险,可能导致依赖冲突。如果只是做ext4分区的克隆,Ubuntu自带的版本完全够用,不必折腾。

3.2 手动部署官方ARM压缩包的方法

如果你坚持要用官方那个ARM压缩包,流程是这样的:

# 下载压缩包(以实际URL为准) wget https://sourceforge.net/projects/clonezilla/files/clonezilla_live_stable/xxx/clonezilla-live-xxx-arm.zip # 解压 unzip clonezilla-live-xxx-arm.zip -d /opt/clonezilla-arm # 进入目录 cd /opt/clonezilla-arm # 查看结构 ls -la

解压后你会看到live、syslinux、utils这些目录。ARM版没有syslinux,引导部分需要你自己处理。核心的可执行文件在live/filesystem.squashfs里,需要挂载才能用:

# 挂载squashfs mkdir /mnt/clonezilla mount -t squashfs -o loop live/filesystem.squashfs /mnt/clonezilla # 查看里面的工具 ls /mnt/clonezilla/usr/sbin/ | grep clonezilla

这种方式适合把Clonezilla集成到自己的PXE引导环境里,普通用户不建议走这条路,太折腾。

3.3 安装后的目录结构与核心文件说明

不管用哪种方式安装,Clonezilla的核心文件分布如下:

  • /usr/sbin/clonezilla:主启动脚本,负责交互界面和流程控制。
  • /usr/sbin/ocs-sr:实际执行克隆和还原的脚本,clonezilla会调用它。
  • /usr/sbin/partclone.*:各种文件系统的克隆工具,比如partclone.ext4、partclone.btrfs。
  • /etc/drbl/:DRBL的配置文件目录,Clonezilla依赖DRBL做网络引导和批量部署。
  • /var/log/clonezilla/:日志目录,出问题时先看这里。

我建议安装完后先跑一遍clonezilla --help,看看输出是否正常。如果报错说找不到partclone,说明依赖没装全,执行apt install -f修复。

4. 实操:用ARM版Clonezilla做系统备份与还原

4.1 备份前的磁盘准备与分区规划

Clonezilla的备份逻辑是“按分区克隆”,不是简单的dd全盘复制。所以备份前要搞清楚源盘的分区结构。用lsblk和fdisk -l查看:

lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINT fdisk -l /dev/mmcblk0

假设你的树莓派系统在/dev/mmcblk0,分区是mmcblk0p1(boot,FAT32)和mmcblk0p2(root,ext4)。备份时Clonezilla会分别处理这两个分区。

存放镜像的目标位置很关键。我试过几种方案:

  • USB移动硬盘:最方便,插上就能用,速度取决于USB接口。树莓派4的USB 3.0口能跑到100MB/s以上。
  • 网络共享(NFS/SMB):适合批量部署,但配置稍麻烦,需要先挂载。
  • 另一块SD卡:不推荐,SD卡读写速度慢,而且容易混淆源和目标。

注意:目标存储的可用空间必须大于源盘已用空间。比如源盘用了15GB,目标至少要有20GB空闲。Clonezilla默认会做压缩,实际镜像大小通常是已用空间的60%-70%,但预留充足空间总没错。

4.2 启动Clonezilla并选择工作模式

在ARM设备上,Clonezilla不是通过Live USB启动的,而是直接在现有系统里运行。执行:

sudo clonezilla

启动后会看到文本交互界面,第一步是选择模式:

  • device-image:把分区备份成镜像文件,最常用。
  • device-device:分区到分区直接克隆,适合换硬盘。
  • remote-source/remote-dest:网络克隆,批量部署时用。

选device-image,然后选择镜像存放位置。如果是USB硬盘,选local_dev,Clonezilla会自动挂载并列出可用的存储设备。选中你的USB硬盘,进入下一步。

接下来选择Beginner模式,专家模式参数太多,新手容易选错。然后依次选择:

  1. savedisk:保存整盘镜像。
  2. 输入镜像名称,比如rpi4-backup-20250101。
  3. 选择源盘,确认是/dev/mmcblk0。
  4. 选择要备份的分区,默认全选。
  5. 选择压缩方式,选gzip就行,速度快,压缩率够用。
  6. 选择是否检查镜像,第一次备份建议选“是”,会多花几分钟但能确保镜像完整。
  7. 确认后开始备份。

备份过程中会显示进度条和预估剩余时间。树莓派4的32GB SD卡,已用15GB左右,gzip压缩后大概9GB,耗时约8-12分钟,取决于SD卡和USB硬盘的速度。

4.3 还原镜像到新设备的关键步骤

还原流程和备份类似,但有几个关键差异:

sudo clonezilla

选择device-image,挂载存放镜像的USB硬盘,然后选restoredisk。Clonezilla会列出可用的镜像,选中你要还原的那个。接下来选择目标盘,这一步要特别小心,选错了会把数据覆盖掉。

还原时的参数选择:

  • 是否检查镜像:建议选“是”,确保镜像没损坏。
  • 还原后是否调整分区大小:如果目标盘比源盘大,选“是”可以自动扩展分区。但要注意,ext4分区扩展没问题,FAT32的boot分区扩展后可能引导异常,树莓派用户要留意。
  • 是否安装引导程序:ARM设备的引导程序(如树莓派的bootcode.bin、U-Boot)在boot分区里,Clonezilla会一并还原,一般不需要额外操作。

还原完成后,拔掉USB硬盘,重启设备。如果起不来,大概率是boot分区的问题,用另一张卡启动后检查/boot分区内容是否完整。

4.4 批量部署场景下的网络克隆配置

如果你有十几块树莓派要部署同样的系统,一块一块插SD卡太慢了。Clonezilla支持网络多播克隆,一台做服务器,其他设备同时接收。

服务器端(一台ARM设备或x86设备都行):

# 启动Clonezilla的DRBL服务器模式 sudo drbl-ocs -b -g enp1s0 -s -p 1 -e 1 -r 1 -i 1 -a 1

客户端(待部署的ARM设备)需要通过PXE启动。树莓派的PXE启动需要在boot分区里配置,具体是在config.txt里加program_usb_boot_mode=1,然后通过TFTP从服务器拉引导文件。

这套配置比较复杂,涉及DHCP、TFTP、NFS三个服务。我建议先用两台设备测试通了再批量上,不然十几台一起失败,排查起来很痛苦。

5. 常见问题与排查技巧实录

5.1 安装与启动阶段的典型报错

报错1:E: Unable to locate package clonezilla

原因:软件源里没有clonezilla,或者架构不匹配。先确认dpkg --print-architecture输出arm64,然后检查/etc/apt/sources.list里是否有arm64的源。Ubuntu的ports源是http://ports.ubuntu.com/ubuntu-ports,不是普通的archive源。

报错2:partclone.ext4: command not found

原因:partclone没装全。执行apt install partclone,如果还不行,手动指定路径:/usr/sbin/partclone.ext4。

报错3:启动clonezilla后卡在“Scanning disk”

原因:通常是USB硬盘供电不足或者文件系统异常。换个USB口,或者先fsck检查一下目标盘。

5.2 克隆过程中的性能瓶颈与优化

ARM设备的IO性能是最大瓶颈。我实测的数据:

设备源存储目标存储已用空间耗时平均速度
树莓派4BSD卡USB 3.0 HDD15GB11分钟23MB/s
树莓派4BSD卡USB 3.0 SSD15GB6分钟42MB/s
Rock 5BNVMeUSB 3.0 SSD40GB9分钟74MB/s
鲲鹏920SATA SSDNFS100GB25分钟68MB/s

优化建议:

  • 目标存储用SSD,别用机械硬盘,随机读写差距很大。
  • 如果设备支持NVMe,源盘和目标盘都走NVMe,速度能翻倍。
  • 压缩方式选gzip -1而不是默认级别,CPU占用低,速度更快,压缩率损失不大。
  • 关闭不必要的服务,systemctl stop掉数据库、Web服务这些,减少IO干扰。

5.3 还原后系统无法启动的排查思路

这是最常见的问题,按以下顺序排查:

  1. 检查boot分区:挂载boot分区,看start4.elf、bootcode.bin、cmdline.txt这些文件在不在。树莓派的boot分区必须是FAT32。
  2. 检查cmdline.txt:里面的root=参数指向的分区UUID是否正确。用blkid查看新盘的UUID,和cmdline.txt里的对比。
  3. 检查fstab:/etc/fstab里的UUID也要对应更新,否则系统启动时会卡在挂载失败。
  4. 检查引导标志:用fdisk看boot分区是否有boot标志,没有的话用a命令加上。

实操心得:还原到不同容量的存储设备时,UUID一定会变。最省事的做法是还原完成后,用另一台Linux设备挂载新盘,直接改cmdline.txt和fstab里的UUID。别指望Clonezilla自动处理这个,它不管。

5.4 常见问题速查表

问题现象可能原因解决方法
clonezilla命令找不到未安装或PATH问题apt install clonezilla,用绝对路径/usr/sbin/clonezilla
备份到一半报“No space left”目标空间不足清理目标盘,或换更大的存储
还原后网卡不工作网络配置绑定了MAC地址删除/etc/udev/rules.d/70-persistent-net.rules
克隆速度极慢USB 2.0口或SD卡瓶颈换USB 3.0口,用SSD做目标
镜像文件损坏备份时断电或存储故障重新备份,勾选“检查镜像”选项
32位系统崩溃partclone内存溢出升级到64位系统

6. 进阶技巧:定制化与自动化部署

6.1 用ocs-sr脚本实现无人值守备份

Clonezilla的交互界面适合手动操作,但如果你要定期自动备份,就得用ocs-sr脚本。下面是一个每天凌晨2点自动备份root分区的例子:

#!/bin/bash # /root/auto-backup.sh BACKUP_DIR="/mnt/usb/backups" IMAGE_NAME="auto-$(date +%Y%m%d)" # 挂载USB硬盘 mount /dev/sda1 $BACKUP_DIR # 执行备份 /usr/sbin/ocs-sr -q2 -c -j2 -z1p -i 4096 -sfsck -p choose -senc \ -p reboot -f $IMAGE_NAME sda2 # 卸载 umount $BACKUP_DIR

参数说明:

  • -q2:静默模式,减少输出。
  • -c:确认操作,不加会直接执行。
  • -j2:完成后关机,改成-j0是不关机。
  • -z1p:gzip压缩,级别1,速度快。
  • -i 4096:强制4096字节块大小,对大多数SSD最优。
  • -sfsck:备份前检查文件系统。
  • -p choose:分区选择模式。

把这个脚本加到crontab里:

crontab -e # 添加一行 0 2 * * * /root/auto-backup.sh

6.2 镜像文件的压缩与存储策略

Clonezilla默认用gzip,但你可以换成更高效的压缩算法。如果CPU性能够强(比如鲲鹏920),用zstd能省30%空间,速度还比gzip快:

# 安装zstd apt install zstd # 备份时指定zstd /usr/sbin/ocs-sr -z zstd ...

存储策略上,我建议保留最近3个版本的镜像,更早的自动删除。用一个简单的脚本就能实现:

# 保留最近3个镜像,删除更早的 ls -t /mnt/usb/backups/ | tail -n +4 | xargs -I {} rm -rf /mnt/usb/backups/{}

6.3 跨设备还原时的驱动与配置适配

ARM设备碎片化严重,从树莓派4还原到树莓派5,或者从Rock 5B还原到另一块Rock 5B,都可能遇到驱动问题。核心原则是:内核和驱动必须匹配目标设备。

具体做法:

  • 还原完成后,不要直接重启,先chroot进去更新内核和initramfs。
  • 树莓派用户:确保/boot分区里的kernel8.img和start4.elf是目标设备对应的版本。
  • Rockchip用户:检查/boot/dtb目录下的设备树文件是否匹配目标板。
  • 通用做法:还原后执行update-initramfs -u -k all重新生成initramfs。

实操心得:我一般会准备一个“通用ARM系统盘”,里面装了所有常见ARM设备的内核和驱动,还原后根据目标设备切换。这样一块盘能适配树莓派、Rock 5B、Orange Pi等多种设备,省得每个设备单独做镜像。

7. 个人实操体会与后续扩展方向

折腾ARM版Clonezilla这几年,最大的感受是:ARM生态的碎片化既是麻烦也是机会。麻烦在于每个设备都有自己的引导方式和内核要求,机会在于一旦你摸清了规律,就能用一套方法覆盖大部分场景。

我现在维护着一个包含12块ARM设备的测试集群,全部用Clonezilla做系统备份和快速恢复。最省心的是Debian系的设备,apt装完就能用。最头疼的是那些跑着定制系统的开发板,得手动编译partclone和drbl,但编译一次之后就能一直用。

后续我打算把Clonezilla和Ansible结合起来,做一套自动化的ARM设备初始化流程:新设备上电后自动PXE引导,Clonezilla还原基础镜像,然后Ansible接管做配置。这样从裸机到可用状态能压缩到10分钟以内。

如果你也在用ARM设备做批量部署,建议先从一台设备开始,把备份和还原流程跑通,再逐步扩展到多设备。别一上来就搞网络克隆,先把单机流程摸熟,后面的事就顺了。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询