1129002_zh-CN

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

1129002_zh-CN

1129002_zh-CN

Yocto 项目:从 Linux 主机读取 SD 卡镜像中的分区

截至 2015 年 4 月撰写本文时,通过 Yocto 项目构建生成的默认 SD 卡镜像,其所有软件镜像都经过妥善对齐,可直接用于制作 SD 卡。

2020 年 10 月 7 日更新:SD 卡镜像名称已更新,Yocto 项目默认生成的镜像以 .wic 为后缀。.sdcard 和 .wic 文件的处理流程相同。


图像中有两个分区:

  1. 一个 W95 FAT32 (LBA) 分区,包含 Linux zImage 以及各种设备树二进制 (dtb) 文件
  2. 一个Linux根文件系统。

每个分区都可以从您的 Linux 主机计算机挂载,然后您可以读取或写入分区内容。

以下步骤基于 Yocto 项目版本 L3.14.28_1.0.0_GA,针对 imx6sxsabresd 机器的 core-image-base 配方。


镜像名称:core-image-base-imx6sxsabresd.sdcard

运行 fdisk 命令查看镜像内容:

$ 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






确定每个分区在 SD 卡镜像中的起始字节偏移量:

  • core-image-base-imx6sxsabresd.sdcard1 从扇区 8192 开始。一个扇区单位为 512 字节。

          8192 * 512 = 4194304

  • core-image-base-imx6sxsabresd.sdcard2 从扇区 24576 开始。

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}

标记 (1)
无评分
版本历史
最后更新:
‎01-05-2026 12:16 AM
更新人: