解决问题

解决问题

我有一张用于相机的 SD 卡。从相机中,我可以拍照,删除文件......但是从我的计算机(debian不稳定)我只能读取,但不能写入。请注意,这种奇怪的事情是最近才出现的,也许是几周前。请注意,我使用相机工具格式化了SD卡,并且在上面安装了魔灯(无论如何我认为这并不重要)。

在 Linux 上,如果我尝试强制将分区重新挂载为读/写,则会出现以下错误:

$ sudo mount -rw -o remount /dev/mmcblk0p1
mount: /media/me/EOS_DIGITAL: /dev/mmcblk0p1 is write-protected but explicit read-write mode requested.

请注意,它是不是储物柜问题,因为我尝试更改储物柜位置,而且 SD 卡在相机上仍然可读。

任何想法?谢谢!

PS:如果你的方法会损坏SD卡上的数据,请提前告知我,以便我先想办法备份!

答案1

解决问题

每次我遇到这种问题(外部闪存驱动器/SD卡/...在Linux下以只读方式安装)都是因为FAT文件系统没有正确卸载并且有错误。将其放在 Windows 系统上(以便 Windows 修复它)或使用fsck.fat它解决了问题。请小心使用,fsck.fat因为它可能会损坏您的 SD 卡。

备份 SD 卡

只需用于dd if=<your sdcard device, ie: /dev/sdb> of=backup.sdcard备份整个 SD 卡即可。然后您可以稍后安装它,只需使用:

  1. 如果没有分区表而是直接在上面加FAT: mount -o loop backup.sdcard mountpoint/

  2. 如果有分区表,则必须先计算偏移量。例如:

    $ sudo fdisk -l /dev/sda
    Disk /dev/sda: 238.5 GiB, 256060514304 bytes, 500118192 sectors
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 4096 bytes
    I/O size (minimum/optimal): 4096 bytes / 4096 bytes
    Disklabel type: dos
    Disk identifier: 0xe9a3179f
    
    Device     Boot  Start       End   Sectors   Size Id Type
    /dev/sda1  *      2048    499711    497664   243M 83 Linux
    /dev/sda2       501758 500117503 499615746 238.2G  5 Extended
    /dev/sda5       501760 500117503 499615744 238.2G 83 Linux
    

要挂载从 501758 开始的 sda 分区,我必须应用block_size * 501758偏移量:

mount -o loop,offset=$((512*501758)) /dev/sda mountpoint

相关内容