This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] AM3352:写入 SD 卡的.img 文件不可引导

Guru**** 2482225 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1451532/am3352-img-file-written-to-sd-card-not-bootable

器件型号:AM3352

工具与软件:

如果我直接从 Linux 写入 SD 卡、AM335x 将会将其引导至 SD 卡。

如果我使用 loop 设备创建映像文件、然后使用 Win32DiskImager 将该映像编程到 Windows 中的 SD 卡、那么映像将不会启动。

这两种方法都曾使用过、但现在我对第二种方法有问题。 有什么想法、说明为什么它不再起作用?

以下是我用于创建 SD 卡(工作)的命令:

umount /dev/sdb*
dd if=/dev/zero of=/dev/sdb bs=512 count=2 conv=fsync

fdisk /dev/sdb << EOF
n
p
1

+128M
t
c
a
w
EOF

partprobe -s /dev/sdb
mkfs.vfat -I -F 32 -n "BOOT" /dev/sdb1
partprobe /dev/sdb

mkdir -p /mnt/linuxp1

mount -t vfat /dev/sdb1 /mnt/linuxp1

cp MLO /mnt/linuxp1
cp u-boot.img /mnt/linuxp1

sync
sync

umount -f /dev/sdb*

以下是我运行以创建 img 文件的其他命令。  映像文件创建成功、我可以将其写入 SD 卡。  它将无法引导。

loop_device=`losetup -f`
dd if=/dev/zero of=linux.img bs=1024 count=2097152
losetup $loop_device linux.img

run the same commands above used to create the SD card, only instead of using /dev/sdb I will use $loop_device

losetup -d $loop_device

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我找到了解决方案。  我需要为引导分区的 mkfs.vfat 命令添加-a 选项:  

    mkfs.vfat -ia -f 32 -n "boot"/dev/sdb1

    a        禁用数据结构对齐

    也许可以考虑将其添加到 create-sdcard.sh 脚本中。