我想让我的读卡器和 eye-fi SD 卡一起工作。
我的系统如下:
#uname -a
Linux computer 3.2.0-0.bpo.2-amd64 #1 SMP Thu Mar 15 20:46:44 UTC 2012 x86_64 GNU/Linux
Debian Squeeze
lspci -nn
...
02:00.0 System peripheral [0880]: JMicron Technology Corp. SD/MMC Host Controller [197b:2382] (rev 80)
02:00.2 SD Host controller [0805]: JMicron Technology Corp. Standard SD Host Controller [197b:2381] (rev 80)
02:00.3 System peripheral [0880]: JMicron Technology Corp. MS Host Controller [197b:2383] (rev 80)
### AT BOOT
mmc0: no vmmc regulator found
Registered led device: mmc0::
mmc0: SDHCI …
Run Code Online (Sandbox Code Playgroud) 我有两张外观相同的 2GB microSD 卡,在“2GB microSD”标志下都标有“SD-C02G JAPAN”。
我的问题是,除了旧的诺基亚 5310 "XpressMusic"之外,我无法在任何设备上阅读其中一个 。手机快要死了,我的意思是它很难操作(功能失调的键,显示器发疯),但它可以读/写卡的事实让我相信卡没有坏(不管那意味着什么)。
(我愿意相信这张卡已经死了,只是把它扔进垃圾桶,但我不得不忍受这样的问题:为什么旧的诺基亚仍然可以读取它?)
我还应该提一下,这张卡可能之前已经在诺基亚手机中通过某种技术加密了(不是同一台机器,而是另一块相同型号的手机,现在也已经死了。)。(“可能”,因为房子里有更多的卡片,我知道其中一张已经过加密,而且由于到处都是其他工作,我认为就是这张卡片)。
现在我用两张卡尝试了其他方法(我将主要描述“坏”卡行为):
(A) 两款不同的安卓手机,都显示卡根本没有插入,因此不提供格式化选项
(B) 一台装有 Ubuntu 12.04 LTS(内核 3.2.0-37-generic,x86_64)的 PC,使用小型金士顿 USB 记忆棒大小的 microSD 读卡器
一台带有 Debian Wheezy(内核 3.0.0.1-amd64)的笔记本电脑,使用
(C) 与 (B) 相同的方法;lsusb 告诉我:
Bus 001 Device 005: ID 14cd:121c Super Top microSD card reader
Run Code Online (Sandbox Code Playgroud)(D) 一个内置的,即 PCI SD 读卡器(借助 microSD 转 SD 适配器,因为读卡器没有足够小的插槽);lspci 告诉我:
15:00.2 SD Host controller: Ricoh Co Ltd R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter (rev 21)
Run Code Online (Sandbox Code Playgroud)(A) 没有给我任何有用的信息,据我所知,(B) 和 (C) 的行为是一样的。因此,我将(C)和(D)与“好”和“坏”卡进行比较:
使用方法 …
U-Boot 2013.07 (Nov 21 2013 - 18:12:40)
Memory: ECC disabled
DRAM: 1 GiB
MMC: zynq_sdhci: 0
SF: Detected N25Q128A with page size 64 KiB, total 16 MiB
In: serial
Out: serial
Err: serial
Net: Gem.e000b000
Hit any key to stop autoboot: 0
SF: Detected N25Q128A with page size 64 KiB, total 16 MiB
SF: 11010048 bytes @ 0x520000 Read: OK
Wrong Image Format for bootm command
ERROR: can't get kernel image!
U-Boot-PetaLinux>
Run Code Online (Sandbox Code Playgroud)
然后我会输入run sdboot
,它会从 sd 卡启动,我在其中放置了一个用于 sd 启动的图像。 …
背景资料:
问题:
写入 SD 卡很慢,bs=512。对于大跨度,bs=8M 要快得多。
是否有可能以某种方式 'bs=512 seek={n_small_blocks}' 然后更改为 'bs=8M' 以进行实际写入(一旦我找到了正确的位置)?
我找到了以下资源:http : //www.delorie.com/gnu/docs/textutils/coreutils_65.html
但我不清楚为什么需要 2 次调用,以及它们如何协同工作以完成指南声称的任务。
更新
在这里找到答案:
在下面查看我的完整解决方案
我正在运行 Ubuntu 16.04(64 位桌面)并希望将其中一个引导分区放在 SD 卡上,该分区格式为 ext4,并且是 /dev/mmcblk0p1。Grub 从硬盘启动,我希望它保持这种状态。
当我中断启动过程并使用 Grub 命令行时,ls命令仅列出硬盘驱动器。它没有列出 SD 卡。
更多信息:我手动添加了 /boot/grub/device.map 包含 (hd1) /dev/mmcblk0 但 (hd1) 没有出现在 grub 命令行ls 中。
接下来,我删除了手动生成的 /boot/grub/device.map 文件并使用以下命令创建了一个: sudo grub-mkdevicemap -n /dev/mmcblk0p1 这导致: (hd0) /dev/disk/by-id/mmc-SP256_0xc0137d70 (hd1) /dev/disk/by-id/ata-AXNS381E-256GM-B_2F4120019993
然后,sudo update-grub。但这也不起作用。Grub 命令行仍然只列出硬盘驱动器 hd0。我已经做了数小时的研究和试验,但没有任何成功。
如何从 Grub 2 访问 mmcblk0p1,以便将其用作引导分区之一?
我有一系列失败/有时失败的 SD 卡。它们要么提供以下dmesg
输出之一:
完全死掉的(不要在 处列出/dev/mmcblk0
):
[ +0,000010] mmc0: error -110 whilst initializing SD card
[ +2,819983] mmc0: card never left busy state
Run Code Online (Sandbox Code Playgroud)
失败的(偶尔仍然可以安装):
[Jun16 06:28] mmc0: new high speed SDHC card at address 0001
[ +0,000339] mmcblk0: mmc0:0001 00000 3.68 GiB
[ +0,002835] mmcblk0: p1 p2 p3 p4
[ +10,256689] mmcblk0: timed out sending r/w cmd command, card status 0x900
[ +11,264358] mmcblk0: timed out sending r/w cmd command, card status 0x900
[ +0,000016] print_req_error: I/O …
Run Code Online (Sandbox Code Playgroud) USB 读卡器能否显示为 /dev/mmcblk0 并支持 MMC ioctl 命令?
我看到有一些内核驱动程序模块,例如:
rtsx_usb_sdmmc.ko (rtsx-usb-sdmmc)
rtsx_usb.ko (rtsx-usb)
Run Code Online (Sandbox Code Playgroud)
这些可以使连接到 USB 总线的 realtek 读卡器看起来像一个真正的 MMC 设备吗?我注意到我有权访问的所有 USB 读卡器都显示为 /dev/sdX。这似乎是一个模拟的 SCSI 设备。这些模拟 SCSI 设备不支持所有 MMC 操作 (ioctl)。
是否有某些 USB 连接的读卡器(芯片)显示为 /dev/mmcblkX 而不是 /dev/sdX?
这将允许卡支持 blkdiscard、trim 或 fstrim。
我正在查看一个使用 SD 卡创建的图像文件,dd
并以 Raspbian(上面有我不久前编译的 Qt 5.7)作为输入。调用时
sudo parted raspbian_jessie_qt5.7_all_modules.img unit s print
Run Code Online (Sandbox Code Playgroud)
我明白了
Error: Can't have a partition outside the disk!
Run Code Online (Sandbox Code Playgroud)
fdisk
我使用以下命令检查了分区
sudo fdisk -lu rasp_jessie_qt5.7.img
Run Code Online (Sandbox Code Playgroud)
具有以下输出
Disk rasp_jessie_qt5.7.img: 7.8 GiB, 8328838656 bytes, 16267263 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: 0x65a3fac2
Device Boot Start End Sectors Size Id Type
rasp_jessie_qt5.7.img1 8192 131071 …
Run Code Online (Sandbox Code Playgroud) 我正在尝试调整 Linux 分区的大小,但在对该磁盘进行了大量调整后,我不知道我是否已完全损坏它。
Device Boot Start End Sectors Size Id Type
/dev/sdd1 * 64 5913631 5913568 2.8G 17 Hidden HPFS/NTFS
/dev/sdd2 5913632 5915039 1408 704K 1 FAT12
/dev/sdd3 5915040 17578125 11663086 5.6G 83 Linux
/dev/sdd4 17578126 28320312 10742187 5.1G 83 Linux
Run Code Online (Sandbox Code Playgroud)
使用dd
删除分区并创建新分区我得到
Device Boot Start End Sectors Size Id Type
/dev/sdd1 * 64 5913631 5913568 2.8G 17 Hidden HPFS/NTFS
/dev/sdd2 5913632 5915039 1408 704K 1 FAT12
/dev/sdd3 5915040 40000000 34084961 16.3G 83 Linux
/dev/sdd4 40000001 62521343 22521343 10.8G …
Run Code Online (Sandbox Code Playgroud) 我有一张 SanDisk Ultra Plus 64gb MicroSd XC 卡,我用它在树莓派 PI 上运行 ubuntu 服务器。
现在我必须格式化这张卡,但我无法成功。我尝试过很多事情,包括:
到目前为止我可以看出,该卡不处于只读模式+我不使用带有开关的适配器。