You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Raspberry Pi 4的SD卡制作成含引导分区的Mender兼容可引导镜像

解决Mender无法识别自定义Raspberry Pi镜像的问题

你遇到的核心问题很明确:你只备份了SD卡的根分区(/dev/sda2),没有包含引导分区和整个磁盘的分区表,这就是Mender-convert报错找不到有效分区的原因。

Raspberry Pi的SD卡默认有两个关键分区:

  • /dev/sda1:FAT32格式的引导分区,包含启动固件、内核和启动配置文件
  • /dev/sda2:ext4格式的根分区,存放系统和应用数据

Mender需要完整的磁盘镜像(包含分区表、引导分区和根分区)才能正确识别并转换为可OTA更新的镜像。下面是正确的解决步骤:


1. 制作完整的SD卡镜像

先停止挂载SD卡的所有分区(避免备份时数据不一致),然后直接备份整个SD卡设备,而非单个分区:

# 先确认SD卡的设备名(比如/dev/sda),用lsblk查看,千万不要搞错!
lsblk

# 卸载所有SD卡分区(假设挂载点是/mnt/sda1和/mnt/sda2)
sudo umount /mnt/sda1 /mnt/sda2

# 备份整个SD卡到镜像文件,bs=4M提升备份速度,status=progress显示实时进度
sudo dd if=/dev/sda of=/project/input/custom.img bs=4M status=progress

2. 验证镜像的完整性

制作完成后,用fdisk检查镜像是否包含正确的分区表和两个分区:

fdisk -l /project/input/custom.img

你应该能看到类似这样的输出(包含两个分区,Type分别为W95 FAT32和Linux):

Device Boot Start End Sectors Size Id Type
custom.img1 8192 532479 524288 256M c W95 FAT32 (LBA)
custom.img2 532480 31116287 30583808 14.6G 83 Linux

3. (可选)缩小镜像体积(如果SD卡剩余空间很大)

如果你的SD卡容量远大于实际使用空间,可以用qemu-img缩小镜像,减少后续Mender转换的时间:

# 先挂载镜像并检查根分区的实际使用大小
sudo losetup -fP /project/input/custom.img
sudo df -h /dev/loop0p2

# 卸载loop设备
sudo losetup -d /dev/loop0

# 缩小镜像到实际需要的大小(比如15G,根据实际情况调整数值)
qemu-img resize /project/input/custom.img 15G

为什么之前的方法失败?

你之前的命令sudo dd if=/dev/sda2 of=/project/input/custom.img只拷贝了根分区的内容,没有包含磁盘的MBR分区表和引导分区。Mender-convert需要读取磁盘的分区表来定位引导分区和根分区,没有分区表的话,它无法识别这是一个可引导的Raspberry Pi镜像,所以会抛出"could not find any valid partitions"的错误。

内容的提问来源于stack exchange,提问作者Ziga Petek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 22:18:11