ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

ARM设备Clonezilla备份指南:镜像选择与U盘制作

ARM设备Clonezilla备份指南:镜像选择与U盘制作 ARM架构的设备这两年在桌面端和边缘计算场景里越来越常见从树莓派、RK3588开发板到各类国产化整机很多人手里都攒了不止一台。但真到了要给这些机器做系统备份或者批量部署的时候问题就来了——平时在x86服务器上用得顺手的Clonezilla官网下载页翻半天发现默认给的镜像根本跑不起来。这不是Clonezilla不好用而是它的发行版分了好几条线ARM版藏在另一个入口里而且安装到U盘、引导启动的流程和x86那套完全不是一回事。这篇内容就是把我自己在ARM设备上折腾Clonezilla的完整过程拆开讲清楚包括镜像怎么选、U盘怎么做、启动参数怎么调、遇到黑屏和找不到磁盘时怎么排查。不管你是刚拿到开发板的新手还是已经在管一批ARM机器的运维都能照着走一遍。1. 先搞清楚Clonezilla到底有几个版本线很多人第一次找Clonezilla ARM版会懵因为官网首页那个醒目的Download按钮指向的是AMD64版本点进去下载下来写到U盘里插到ARM设备上根本引导不了。这不是你操作有问题而是Clonezilla本身按CPU架构分了好几个独立的发行线每条线的镜像文件、引导方式、甚至内置的工具集都有差异。1.1 AMD64、i686和ARM三条线的区别Clonezilla官方目前主要维护三个架构的稳定版架构线典型适用设备镜像格式引导方式AMD64普通PC、x86服务器ISOBIOS/UEFIi686老旧32位x86设备ISOBIOSARM树莓派、RK系列、国产ARM整机ZIP含IMGU-Boot/EFI关键差异在于ARM版不是以ISO形式发布的。因为ARM设备没有统一的BIOS/UEFI标准很多开发板走的是U-Boot引导所以Clonezilla ARM版打包成了一个ZIP压缩包里面是一个可以直接dd写入存储介质的IMG镜像文件。这一点如果没提前知道你会一直在下载页找ISO找到怀疑人生。1.2 为什么ARM版没有ISOISO这种光盘镜像格式是为x86体系的光驱和BIOS/UEFI引导设计的它依赖El Torito引导规范和PC BIOS中断。ARM设备根本没有这套东西它的引导链通常是上电 → BootROM → SPL → U-Boot → 内核。所以ARM版Clonezilla直接给你一个包含完整分区表和文件系统的IMG你把它写到U盘或SD卡上设备上电后由U-Boot或者板载EFI固件去加载。注意有些ARM整机比如某些国产化台式机确实支持UEFI引导理论上可以自己把IMG转成ISO但我不建议这么干转换过程中分区表容易出问题直接用IMG写入U盘最稳。1.3 版本号怎么选Clonezilla的版本号格式是年份.月份.日期-代号比如3.1.2-22这种。选版本的时候注意两点一是尽量选最新的稳定版因为ARM版的内核驱动更新比较频繁新版本对新型号开发板的网卡、存储控制器支持更好二是如果你要备份的设备用了比较新的文件系统比如btrfs的新特性老版本Clonezilla里的partclone可能不认识会导致备份失败。我自己的习惯是先去官网的ARM下载目录看一眼最新稳定版然后往前翻一两个版本作为备选。有时候最新版刚发布会有一些引导上的小问题备一个上一版能省不少事。2. 下载ARM版镜像时容易踩的坑下载这一步看起来简单但实际上我见过太多人在这里就卡住了。不是找不到下载链接就是下错了文件或者下下来的文件校验不过。2.1 找到正确的下载入口Clonezilla的官网结构有点绕。首页的下载按钮指向AMD64版本ARM版需要从左侧导航栏或者页面底部的Alternative versions区域进去。具体路径是官网首页 → 找到Download区域 → 点击Alternative versions → 在列表里找到ARM那一行 → 进入ARM专属下载页。进入ARM下载页后你会看到按版本号排列的目录列表。每个版本目录里通常包含clonezilla-live-版本号-arm64.zip这是主镜像包md5sum.txt或sha256sum.txt校验文件有时还有README说明文件2.2 校验文件完整性这一步不能省ARM版镜像文件通常有几百MB到1GB多下载过程中出错的概率不低。我遇到过好几次下载到99%断掉浏览器显示下载完成但文件其实是坏的。所以下载完第一件事就是校验。在Linux或macOS上sha256sum clonezilla-live-3.1.2-22-arm64.zip然后把输出和官网提供的sha256值对比。在Windows上可以用PowerShellGet-FileHash .\clonezilla-live-3.1.2-22-arm64.zip -Algorithm SHA256如果校验值对不上别犹豫重新下载。用坏的文件写入U盘轻则引导失败重则写到一半报I/O错误你还得重新格式化U盘。2.3 解压后的文件结构要认清ZIP包解压后你会得到一个.img文件可能还有一个.img.sha256之类的校验文件。这个IMG文件就是你要写入U盘的原始镜像。注意不要试图用解压软件去打开这个IMG看里面有什么那样没意义直接写入就行。提示有些版本的ZIP包里会包含多个IMG文件比如一个用于SD卡、一个用于U盘。看清楚文件名里的标识一般usb或sd字样会区分用途。如果只有一个IMG那通常通用。3. 把IMG写入U盘或SD卡的正确姿势写入这一步是整个流程里最关键的写错了设备根本起不来。而且ARM设备和x86不一样x86你写错了顶多引导失败ARM有些板子写错了会卡在BootROM阶段连串口都没输出排查起来很麻烦。3.1 选对写入工具不同操作系统下可用的写入工具不一样我按平台列一下我实际用过的平台推荐工具备注Linuxdd命令最直接但参数写错会毁数据macOSdd命令或balenaEtchermacOS的dd要注意用/dev/rdisk而不是/dev/diskWindowsbalenaEtcher或RufusRufus要选DD模式写入balenaEtcher的好处是跨平台、图形界面、写入后会自动校验对新手最友好。但如果你在Linux服务器上没有图形界面那就只能用dd。3.2 dd命令的参数细节在Linux上写入IMG到U盘标准命令是sudo dd ifclonezilla-live-3.1.2-22-arm64.img of/dev/sdX bs4M statusprogress convfsync这里有几个参数值得说清楚if后面是输入文件也就是你解压出来的IMGof后面是目标设备千万确认是U盘而不是你的系统盘。先用lsblk看清楚设备名bs4M是块大小4M在大多数U盘上能跑到比较好的写入速度太小了慢太大了有些U盘会出错statusprogress让你能看到写入进度不然dd默认静默你不知道它是在干活还是卡死了convfsync确保数据真正写入到设备而不是停留在系统缓存里写完之后的验证sync sudo dd if/dev/sdX of/dev/null bs4M count100这个命令从U盘读回一部分数据如果没报错说明写入基本没问题。3.3 Windows下用balenaEtcher的注意事项balenaEtcher在Windows上使用时有一个坑它会自动识别可移动设备但有时候会把你的移动硬盘也列出来。选目标设备的时候一定要看清楚容量和盘符别把移动硬盘给写了。另外balenaEtcher写入完成后会弹出一个Flash Complete的提示但这时候不要急着拔U盘。等它做完校验Validate那一步显示绿色的Validated再拔。校验这一步能帮你发现写入过程中的静默错误。3.4 写入后U盘的分区状态写入完成后你在Windows的资源管理器里可能会看到U盘变成了多个分区有的分区还提示需要格式化。这是正常的不要点格式化。Clonezilla ARM版的IMG包含多个分区Windows不认识Linux分区格式所以会提示。你直接拔下来插到ARM设备上就行。4. ARM设备上的引导配置与启动U盘做好了插到ARM设备上接下来就是引导。这一步是ARM版Clonezilla和x86版差异最大的地方也是最多人卡住的地方。4.1 确认设备的引导方式ARM设备的引导方式主要分两类U-Boot引导大多数开发板树莓派、RK3399、RK3588等走这条路。你需要让U-Boot从U盘启动而不是从板载eMMC或SD卡启动。UEFI引导部分ARM整机比如一些国产化台式机、服务器支持UEFI。这种情况下引导流程和x86类似进BIOS设置启动顺序即可。怎么判断你的设备是哪种最简单的办法是看设备启动时屏幕上有没有U-Boot的打印信息。如果有那就是U-Boot如果直接进了BIOS设置界面那就是UEFI。4.2 U-Boot下从U盘启动的方法U-Boot下从U盘启动有几种方式方式一修改bootcmd环境变量在U-Boot命令行下setenv bootcmd usb start; fatload usb 0:1 ${kernel_addr_r} Image; booti ${kernel_addr_r} - ${fdt_addr_r} saveenv boot这个方式需要你知道内核文件在U盘上的具体路径和文件名不同版本的Clonezilla ARM版可能不一样所以不太通用。方式二使用U-Boot的启动菜单很多开发板的U-Boot编译时带了启动菜单上电后按特定键通常是空格或Esc进入菜单然后选择从USB启动。这种方式最省事但需要你的U-Boot版本支持。方式三通过板载固件设置有些ARM整机的固件里可以直接设置启动顺序把USB调到第一位。这种方式和x86的BIOS设置类似进去找Boot Order或Boot Priority就行。4.3 引导参数里需要关注什么Clonezilla ARM版启动时内核命令行参数里有几个关键项console指定串口控制台。如果你用串口调试这个参数决定了你能不能看到启动日志root指定根文件系统位置。Clonezilla ARM版通常用overlay或squashfs这个参数一般不用改toram把整个系统加载到内存。ARM设备内存通常比x86小如果内存不足8GB不建议加这个参数如果你启动时卡住可以在U-Boot里临时修改bootargs加上consolettyS0,115200之类的参数通过串口看详细日志。4.4 启动成功后的界面Clonezilla ARM版启动成功后你会看到和x86版类似的蓝色文本界面让你选择语言、键盘布局、启动Clonezilla还是进入命令行。到这一步就说明引导没问题了后面的操作和x86版基本一致。注意ARM版Clonezilla的界面刷新可能比x86版慢一些尤其是在低性能开发板上。按键后等一两秒再操作不要连续猛按容易误选。5. 备份和还原时的ARM特有注意事项引导起来之后Clonezilla的使用流程和x86版大同小异但ARM平台有一些特有的坑不注意的话备份出来的镜像可能没法还原或者还原后系统起不来。5.1 存储设备命名差异ARM设备上的存储设备命名和x86不太一样。x86上你习惯看到sda、sdbARM上可能是mmcblk0、mmcblk1、nvme0n1。在Clonezilla里选择源盘和目标盘的时候一定要看清楚设备名和容量别选错了。特别是有些ARM设备同时有eMMC和SD卡两者容量可能一样光看容量分不出来。这时候可以看设备名mmcblk0通常是SD卡mmcblk1通常是eMMC但不同板子可能反过来。最保险的办法是先在系统里用lsblk确认一下。5.2 引导加载器的备份ARM设备的引导加载器U-Boot、SPL等通常写在存储设备的特定偏移位置不在普通分区里。Clonezilla默认只备份分区不备份这些引导区域。如果你只备份了分区还原到新设备后可能起不来因为引导加载器没被还原。解决办法有两个在Clonezilla里选择saveparts模式时额外用dd命令手动备份引导区域或者用dd模式整盘备份但这样镜像会很大而且还原时必须还原到同样大小的设备我一般是在备份分区之前先用dd把引导区域单独备份一份sudo dd if/dev/mmcblk1 of/path/to/bootloader-backup.img bs512 count2048这个命令备份了前1MB2048×512字节的内容大多数ARM设备的引导加载器都在这个范围内。还原的时候再dd写回去。5.3 文件系统兼容性ARM设备上常见的文件系统有ext4、btrfs、f2fs等。Clonezilla里的partclone工具对ext4支持最好btrfs和f2fs的支持取决于版本。如果你要备份的设备用了f2fs建议先确认一下你用的Clonezilla版本里的partclone是否支持。可以在Clonezilla启动后的命令行里运行partclone.f2fs --help如果提示命令不存在说明这个版本不支持f2fs你得换更新的Clonezilla版本或者改用dd模式整盘备份。5.4 网络备份时的ARM网卡驱动如果你打算用Clonezilla的网络备份功能把镜像存到网络共享上ARM设备的网卡驱动是个变数。x86版Clonezilla内置了大量网卡驱动ARM版因为要控制镜像体积驱动集没那么全。有些开发板用的网卡芯片比较新Clonezilla ARM版可能不认识。遇到这种情况有两个办法一是换用USB网卡选常见芯片的比如RTL8153二是用本地存储备份备份完再把镜像拷到别的地方。6. 常见启动失败场景的排查链路ARM设备上Clonezilla启动失败的原因很多我按自己遇到的频率从高到低排一下并给出排查方法。6.1 上电后完全没反应如果设备上电后屏幕黑的、串口也没输出大概率是引导加载器没找到U盘上的启动文件。排查步骤确认U盘写入没问题。把U盘插回电脑用fdisk -l看看分区表在不在确认设备的引导顺序。有些开发板默认只从eMMC启动需要按住某个按键或者改跳线才能从USB启动确认U-Boot版本。太老的U-Boot可能不支持USB启动需要先升级U-Boot6.2 卡在U-Boot阶段如果串口能看到U-Boot的输出但卡在某个地方不动了通常是bootcmd里的命令有问题。排查方法在U-Boot命令行下手动执行usb start看能不能识别到U盘如果能识别再手动fatls usb 0:1看看能不能列出文件如果列不出文件可能是U盘分区格式不对Clonezilla ARM版的IMG通常第一个分区是FAT格式U-Boot应该能识别6.3 内核启动后黑屏内核启动了但屏幕黑通常是显示驱动或者console参数的问题。排查方法接串口看内核日志输出到哪里了在bootargs里加consolettyS0,115200强制输出到串口如果是HDMI输出确认bootargs里有video相关的参数6.4 进入Clonezilla后找不到磁盘Clonezilla界面出来了但选择源盘的时候列表是空的说明存储控制器驱动没加载。排查方法在Clonezilla命令行下运行lsblk或fdisk -l看内核有没有识别到存储设备如果没识别到运行dmesg | grep -i mmc或dmesg | grep -i nvme看驱动加载情况如果是NVMe盘没识别可能是Clonezilla内核版本太老不支持你的NVMe控制器6.5 备份过程中途报错备份到一半报I/O错误或者partclone崩溃通常是源盘有坏块或者文件系统有问题。排查方法先在源系统里运行fsck检查文件系统如果是eMMC老化导致的坏块考虑用dd模式整盘备份dd对坏块的容忍度比partclone高检查U盘或目标存储的剩余空间空间不足也会中途报错7. 一些提高效率的实操技巧用了这么久Clonezilla ARM版我攒了一些能省时间的技巧分享出来。7.1 用脚本自动化备份流程Clonezilla支持通过命令行参数自动化执行备份任务不用每次手动选菜单。比如ocs-sr -q2 -c -j2 -z1p -i 4096 -sfsck -p choose -scr -p reboot savedisk backup-20240101 mmcblk1这个命令的意思是用gzip压缩、跳过检查、备份整盘到名为backup-20240101的目录、完成后重启。具体参数含义可以在Clonezilla文档里查我这里想说的是把常用参数写成脚本以后备份就是一条命令的事。7.2 镜像存放位置的选择ARM设备通常本地存储不大备份镜像如果存在本地可能空间不够。我一般用这几种方式挂载NFS共享把镜像直接存到NAS上插一个USB移动硬盘备份到移动硬盘如果设备有网络用SSHFS挂载远程目录NFS方式最稳定但需要网络配置正确。USB移动硬盘最简单但要注意供电有些ARM设备的USB口供电不足带不动大容量移动硬盘。7.3 定期更新Clonezilla ARM版ARM平台的内核和驱动更新很快半年前做的U盘可能就不认识新买的开发板了。我的习惯是每季度检查一次Clonezilla官网有新版本就重新做一个启动U盘。旧U盘不扔留着给老设备用。7.4 记录每台设备的备份参数如果你管的不止一台ARM设备建议建一个表格记录每台设备的型号、存储设备名、引导方式、备份参数。下次备份的时候直接查表不用重新摸索。这个习惯帮我省了很多重复排查的时间。设备型号存储设备引导方式备份模式备注树莓派4Bmmcblk0U-Bootsaveparts需额外备份引导区RK3588开发板mmcblk1U-BootsavediskNVMe需新内核国产ARM整机nvme0n1UEFIsaveparts网卡需USB外接这张表看起来简单但真到出问题的时候能帮你快速定位是设备差异还是操作问题。7.5 串口调试线是必备工具如果你经常折腾ARM设备一根USB转TTL串口线是必须的。Clonezilla启动失败的时候屏幕可能什么都不显示但串口能看到完整的启动日志。根据日志里的报错信息排查效率能提高好几倍。串口线的接法各板子不同一般是GND对GND、TX对RX、RX对TX波特率115200。我在实际使用中发现ARM版Clonezilla的稳定性已经足够日常备份还原用了但它的引导配置确实比x86版麻烦一些。关键是要理解ARM的引导链和x86不一样不能用x86的思维去套。把U盘做好、引导参数配对、存储设备认准剩下的操作和x86版就没区别了。如果你手头有ARM设备需要做系统备份建议先拿一台不重要的设备练手把流程走通一遍再上生产环境。
返回列表