SD 卡插槽不工作

SD 卡插槽不工作

赚取赏金的替代方法:向我展示如何将类似 ext4 的文件系统(可以存储大文件的 FS,我实际上并不需要 ext4 为此用例提供的所有好东西)存储在存储在(工作)FAT 格式分区上的许多小文件(<4 GiB)中。


我有一张 SD 卡(宣传为 64 GB,但其他存储介质的容量都小于这个数字(它只有 63'416'827'904 字节))和我的笔记本电脑(Acer Aspire VN7-591G-70CY)上的 SD 插槽。SD 卡可以毫无问题地与我之前的笔记本电脑配合使用,并且采用 ext4 格式。

我尝试过, sudo modprobe -r r852; sudo modprobe -r sdhci_pci; sudo modprobe r852; sudo modprobe sdhci_pci这对其他人有帮助,但对我没什么帮助。

SD 卡与 SD 卡转 USB 适配器配合使用。使用此适配器时,SD 卡为/dev/sdb,其上的单个分区为/dev/sdb1。当我将其放入 SD 卡插槽时,它为/dev/mmcblk0,其分区为/dev/mmcblk0p1

当我将 SD 卡插入插槽时,nautilus 显示:

在 /media/christoph/e07d3be4-bd85-4eb2-9205-d6638ab37704 安装 /dev/mmcblk0p1 时出错:命令行 `mount -t "ext4" -o "uhelper=udisks2,nodev,nosuid" "/dev/mmcblk0p1" "/media/christoph/e07d3be4-bd85-4eb2-9205-d6638ab37704"' 以非零退出状态 32 退出:mount:错误的 fs 类型、错误的选项、/dev/mmcblk0p1 上的错误超级块、缺少代码页或帮助程序,或其他错误

   In some cases useful info is found in syslog - try
   dmesg | tail or so.

手动安装它会导致几乎相同的错误消息:

挂载:错误的 fs 类型、错误的选项、/dev/mmcblk0p1 上的错误超级块、缺少代码页或辅助程序,或其他错误

   In some cases useful info is found in syslog - try
   dmesg | tail or so.

现在奇怪的是,这dd两种方法似乎都不起作用。我复制了 、 和 的前 100 MiB ,今天/dev/sdb早些时候甚至得到了匹配的 sha256-sums。/dev/sdb1/dev/mmcblk0/dev/mmcblk0p1

它们现在不再匹配,但是非常相似,除了开头的一点点之外,几乎完全由零字节组成,尽管 SD 卡几乎完全满了(并且填充了压缩和加密的数据,所以应该没有太多的零字节)。

因此,我在十六进制编辑器中用纯文本替换了每个连续的 4 个零字节$mmcblk0(我通过它复制的副本dd与设备的名称完全相同,但在名称前面加了一个美元符号,以便可以区分),结果每个文件只有 129.4 kB r$sdb(“r”代表“减少”/“替换”)和 312.7 kB,r$mmcblk0而不是 104.9 MB。

r$sdb开头有一个挂载点(我不知道为什么)。它实际上是 SD 卡挂载的挂载点。然后是随机出现的数据,重复次数很多,然后是一大堆 FF 字节,然后是保存在 SD 卡上的文件的实际名称,然后是一些随机出现的数据,但不多。

大约前 1600 字节r$mmcblk0与 完全相同r$sdb(这包括安装点,即使 SD 卡无法在插槽中安装)。然后是看似随机的数据,重复次数很多,但大块数据由可打印字符组成,包括文件路径,后面是 FF 字节,后面是与 的结尾完全相同的内容r$sdb(SD 卡上保存的文件的实际名称,后面是一些看似随机的数据,但不多)。

你能帮助我解决这个问题并告诉我为什么dd输出这些奇怪的数据吗?


我自己想出了如何让它与 FAT 一起工作。我运行apt-get install nfs-common,重新启动,现在 FAT 正在工作。不幸的是,FAT 是一个糟糕的文件系统,不支持大量内容,我需要许多 GB 大小的文件,而 FAT 不支持这些文件。所以我根本无法将 SD 卡与 FAT 一起使用。

如果我使用 ext4 格式化分区,则会出现与之前相同的错误。对于 FAT,一切似乎都很好。

是否有命令可以使它也适用于 ext4?


$ sudo fdisk -l

Disk /dev/sda: 931.5 GiB, 1000204886016 bytes, 1953525168 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: gpt
Disk identifier: 2D8D2D1D-B17D-4F86-ACD1-743E6B376EFE

Device          Start        End    Sectors   Size Type
/dev/sda1        2048    1230847    1228800   600M Windows recovery environment
/dev/sda2     1230848    1845247     614400   300M EFI System
/dev/sda3     1845248    2107391     262144   128M Microsoft reserved
/dev/sda4  1716043776 1920843775  204800000  97.7G Microsoft basic data
/dev/sda5  1920843776 1953523711   32679936  15.6G Windows recovery environment
/dev/sda6     2107392   36923391   34816000  16.6G Linux swap
/dev/sda7    36923392 1716043775 1679120384 800.7G Linux filesystem

Partition table entries are not in disk order.
Disk /dev/mmcblk0: 59.1 GiB, 63416827904 bytes, 123860992 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
Disklabel type: dos
Disk identifier: 0xd69abc36

Device         Boot Start       End   Sectors  Size Id Type
/dev/mmcblk0p1       2048 123860991 123858944 59.1G 83 Linux

Disk /dev/mapper/cryptswap1: 16.6 GiB, 17825267712 bytes, 34814976 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

 

$ lspci
00:00.0 Host bridge: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor DRAM Controller (rev 06)
00:01.0 PCI bridge: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor PCI Express x16 Controller (rev 06)
00:02.0 VGA compatible controller: Intel Corporation 4th Gen Core Processor Integrated Graphics Controller (rev 06)
00:03.0 Audio device: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor HD Audio Controller (rev 06)
00:14.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset Family USB xHCI (rev 05)
00:16.0 Communication controller: Intel Corporation 8 Series/C220 Series Chipset Family MEI Controller #1 (rev 04)
00:1a.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset Family USB EHCI #2 (rev 05)
00:1b.0 Audio device: Intel Corporation 8 Series/C220 Series Chipset High Definition Audio Controller (rev 05)
00:1c.0 PCI bridge: Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #3 (rev d5)
00:1c.3 PCI bridge: Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #4 (rev d5)
00:1d.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset Family USB EHCI #1 (rev 05)
00:1f.0 ISA bridge: Intel Corporation HM86 Express LPC Controller (rev 05)
00:1f.2 SATA controller: Intel Corporation 8 Series/C220 Series Chipset Family 6-port SATA Controller 1 [AHCI mode] (rev 05)
00:1f.3 SMBus: Intel Corporation 8 Series/C220 Series Chipset Family SMBus Controller (rev 05)
01:00.0 3D controller: NVIDIA Corporation GM107M [GeForce GTX 860M] (rev a2)
07:00.0 Network controller: Intel Corporation Wireless 7265 (rev 48)
08:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 0c)

我认为dmesg 的输出很有趣:

[10106.153215] mmc0: new ultra high speed SDR50 SDXC card at address 59b4
[10106.153349] mmcblk0: mmc0:59b4 SD    59.0 GiB 
[10106.158564]  mmcblk0: unknown partition table
[10109.748018]  mmcblk0: p1
[10110.393758] mmcblk0: error -110 sending stop command, original cmd response 0x900, card status 0x900
[10111.098030] mmcblk0: error -110 sending stop command, original cmd response 0x900, card status 0x900
[10111.862596] mmcblk0: error -110 sending stop command, original cmd response 0x900, card status 0x900
[10111.862610] EXT4-fs (mmcblk0p1): Magic mismatch, very weird!
[10201.953257] mmcblk0: error -110 sending stop command, original cmd response 0x900, card status 0x900
[10202.553754] mmcblk0: error -110 sending stop command, original cmd response 0x900, card status 0x900
[10202.555661] EXT4-fs (mmcblk0p1): ext4_check_descriptors: Checksum for group 48 failed (26727!=0)
[10202.555664] EXT4-fs (mmcblk0p1): group descriptors corrupted!

答案1

在我看来,你的 SD 卡读卡器出现故障。数据丢失的概率非常高。FAT 可能因为错误检查功能较少而起作用,但这并不意味着没有错误!使用 FAT 时要极其谨慎。如果您要存储重要数据,请进行备份。或者,不要存储重要数据,或者只是使用 USB 读卡器。话虽如此,

尝试修复您的 SD 卡,这是一个标准程序:

sudo e2fsck -f -C 0 /dev/mmcblk0p1

e2fsck是用于修复基于 ext 的文件系统的 Linux 实用程序。无论如何,我不指望它能起作用。

因此,正如另一个答案所暗示的那样,读卡器可能不支持这么大的驱动器。但 FAT 可以工作的事实表明这是可能的,但也有被搞砸的可能性。

您可以尝试以下方法,但我不知道它们是否有效:将其分区为两个或四个驱动器(如果适合您),然后继续使用 ext4。或者创建一个较小的分区并将其余部分留作可用空间?您可以尝试一下。

最后,由于 FAT 有效(记住,可能是因为它很少进行错误检查),exFAT 可以满足您存储大于 4 GB 的文件大小的要求。了解如何操作这里

答案2

我认为问题是由于这个特定的 SD 读卡器无法读取容量为 64 GB 的 SD 卡,而您之前的笔记本电脑中的另一个读卡器显然可以读取这种卡。并非所有读卡器都具有相同的规格。当您购买读卡器时,文档中会说明读卡器可以处理的最大容量。当它已经放在笔记本电脑中时,您必须弄清楚它可以处理什么。目前限制通常为 32 GB。不幸的是,您无法更改此属性。

答案3

考虑到您添加到问题中的新信息,我对您采取了不同的方法。

在 GParted 中将卡上的分区格式化为 ext4。然后创建一个挂载点。我们假设这是 sd。因此,您需要执行以下操作:
mkdir -p /media/sd
然后,要挂载它,您需要执行以下操作:
mount -t ext4 -O noatime,nodiratime /dev/mmcblk0p1 /media/sd
上面的第二条命令应该在一行上。您可能必须在这些命令前面加上 sudo。您也可以在 /etc/fstab 中的第二条命令中使用标志。

相关内容