截至 2015 年 4 月撰写本文时,通过 Yocto 项目构建生成的默认 SD 卡镜像,其所有软件镜像都经过妥善对齐,可直接用于制作 SD 卡。
2020 年 10 月 7 日更新:SD 卡镜像名称已更新,Yocto 项目默认生成的镜像以 .wic 为后缀。.sdcard 和 .wic 文件的处理流程相同。
图像中有两个分区:
每个分区都可以从您的 Linux 主机计算机挂载,然后您可以读取或写入分区内容。
以下步骤基于 Yocto 项目版本 L3.14.28_1.0.0_GA,针对 imx6sxsabresd 机器的 core-image-base 配方。
镜像名称:core-image-base-imx6sxsabresd.sdcard
$ fdisk -l core-image-base-imx6sxsabresd.sdcard
Disk core-image-base-imx6sxsabresd.sdcard: 100 MB, 100663296 bytes
4 heads, 32 sectors/track, 1536 cylinders, total 196608 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00074663
Device Boot Start End Blocks Id System
core-image-base-imx6sxsabresd.sdcard1 8192 24575 8192 c W95 FAT32 (LBA)
core-image-base-imx6sxsabresd.sdcard2 24576 188415 81920 83 Linux
8192 * 512 = 4194304
24576 * 512 = 12582912
首先创建挂载点:
$ sudo mkdir /mnt/{mp1,mp2}
sdcard1分区
$ sudo mount -o loop,offset=4194304 core-image-base-imx6sxsabresd.sdcard /mnt/mp1
NOTE: An alternate method for determining the offset, see below:
$ sudo mount -o loop,offset=$((512 * 8192)) core-image-base-imx6sxsabresd.sdcard /mnt/mp1
sdcard2 分区
$ sudo mount -o loop,offset=12582912 core-image-base-imx6sxsabresd.sdcard /mnt/mp2
$ ls /mnt/mp1
imx6sx-sdb.dtb imx6sx-sdb-lcdif1.dtb imx6sx-sdb-reva.dtb imx6sx-sdb-sai.dtb imx6sx-sdb-emmc.dtb imx6sx-sdb-m4.dtb imx6sx-sdb-reva-ldo.dtb zImage
$ ls /mnt/mp2
bin boot dev etc home lib lost+found media mnt proc run sbin sys tmp usr var
$ sudo umount /mnt/{mp1,mp2}
$ sudo rm /mnt/{mp1,mp2}