最近需要将板载 rootfs 镜像中的某个可执行文件提取到电脑上。利用 SD 卡可以做到。

        下面的命令对 EMMC 也适用

        主要思路是在 rootfs 起来之后通过 mount 命令去挂载 SD 卡的某分区到指定位置,然后复制需要的文件到这个指定位置。再使用 umount 命令解挂 SD 卡。这样,需要的东西就在 SD 卡里面了。

在挂载过程中,遇到很多问题,总结步骤如下:

1:确保 SD 卡插上后能识别,也就是终端有打印,否则,可能是硬件原因,也有可能是 kernel 中没使能 SOC 的 SDIO 控制器相关的设备驱动代码

2:用 fdisk -l 命令去查看设备,看有无 SD 卡分区,因为后面需要用 mount 命令去挂载指定 SD 卡的指定分区

3:若无 SD 卡分区,则使用 fdisk /dev/sd卡节点名 去创建 SD 卡分区,相关使用命令可以按 m 查看说明。一般使用命令及顺序如下:

  1. fdisk /dev/sd卡节点名
  2. d :删除指定分区
  3. o:覆盖并新建 MBR 分区表
  4. n:新建分区
  5. p:新建主分区,后续根据提示指定扇区号。p命令也可用来查询分区信息
  6. 设置开始及结束分区的扇区号。(使用 u 命令可以切换显示单位)
  7. w:执行分区写入动作。完成后会自动退出。

4:格式化分区,我在实验中不格式化会出现 mount 挂不上的问题。并不表示一定要有这一步

使用 mkfs 命令 ,常用格式化为两种格式

1:FAT 格式,这样我们插在windows 的电脑上也可识别

2:EXT 格式,一般 rootfs 存放在 MMC 设备的镜像为此格式,如果要使用 SD 卡去存放 rootfs, 就将分区格式成 EXT 格式就好。

mkfs 命令使用格式如下:

        mkfs.vfat /dev/xxx 或 mkfs.ext2/3/4 /dev/xxx

        注意,xxx 为 SD 卡指定分区

5:分区挂载

使用如下命令即可将 SD 卡指定分区挂载到 linux 特定目录:

mkdir -p /mnt/filename

mount /dev/设备分区节点名   /mnt/filename

由于 FAT 和 EXT 都是传统的文件系统,所以执行 mount 命令是不需要使用 “-t” 选项来指定文件系统类型的。

 6:分区解挂

使用 umount /mnt/filename 即可,如果不解挂,那么放入分区中的内容会丢失。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐