gpt4 book ai didi

linux - SD卡取出后不Umount无法挂载

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:49:40 26 4
gpt4 key购买 nike

下午好

我有一个项目,由于 SD 检测引脚接触不良,SD 卡可能会暂时断开连接。我希望能够检查它是否已卸载并在软件中重新安装。

我的SD卡分区是/dev/mmcblk1p1它最初是在 Linux 启动时自动挂载的

如果我执行 umount/mnt/storage 命令,然后取出 SD 卡,我可以重新插入它,然后执行 mount/dev/mmcblk1p1/mnt/storage 没有问题

但是,如果我先移除 SD 卡,没有 umount,执行 mount/dev/mmcblk1p1/mnt/storage 会导致

mounting /dev/mmcblk1p1 on /mnt/storage failed: No such device or address

我试过运行

umount /mnt/storage
rmdir /mnt/storage
mkdir /mnt/storage

在没有卸载的情况下移除 SD 卡时总是出现此错误

我正在使用在 Imx6 上运行的 Yocto 发行版。

最佳答案

如果 SD 卡是由 C++ 应用程序写入的,它可以被强制删除,但在该应用程序关闭文件描述符之前不能卸载它。应用程序本身不需要关闭。

此解决方案适用于 SD 卡(或其他闪存介质)可能会暂时断开连接,需要由应用程序恢复写入的机械应用:

回答:

  1. 强行移除SD卡

  2. 检测SD卡断开

最简单的方法是检查 SD 卡的安装大小

read file "/sys/block/mmcblk1/size" and check it's > 0
  1. 关闭所有正在写入 SD 卡上文件的文件描述符。

请注意,在移除卡片之前不必关闭它们。 Linux 足够健壮,可以写入不存在的文件。但这需要在卸载 SD 卡之前完成,否则卸载会失败,这就是导致我出现问题的原因。当 SD 卡已重新插入时,也无法运行卸载。

  1. 卸载SD卡

    system("umount/mnt/storage");'

  2. 现在重新插入SD卡

  3. 检测卡已重新插入

  4. 再次挂载卡

    system("挂载/dev/mmcblk1p1/mnt/storage")

关于linux - SD卡取出后不Umount无法挂载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35590945/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com