Questions tagged «sd-card»

在移动设备(如数码相机,平板电脑,智能手机,...等)中使用的存储介质

2
正在运行dd。为什么资源很忙?
我刚刚格式化了microSD卡,并想运行一个dd命令。不幸的是,dd命令失败: $ sudo dd bs=1m if=2016-02-26-raspbian-jessie-lite.img of=/dev/rdisk2 dd: /dev/rdisk2: Resource busy $ 互联网上的每个人都说我需要先卸载磁盘。当然可以,然后继续前进。但是我想了解为什么/在OS X中到底是什么使设备繁忙?我该如何诊断? 到目前为止,我尝试了: 列出打开的文件: $ lsof /dev/disk2 $ lsof /dev/disk2s1 $ 也: $ lsof /Volumes/UNTITLED $ 列出使用该文件的用户: $ fuser -u /dev/disk2 /dev/disk2: $ fuser -u /dev/disk2s1 /dev/disk2s1: $ 也: $ fuser -u /Volumes/UNTITLED $ 检查系统消息: $ sudo dmesg …
31 osx  dd  sd-card  resources 


4
使用Linux对SD卡进行压力测试
昨天,我与某人就我的回答的逻辑和/或准确性进行了一次小辩论,即,在体面(GB +)大小的SD卡上记录和维护fs元数据可能永远不足以使卡磨损在合理的时间内(数年和数年)。反驳的理由似乎是我一定错了,因为网上有很多关于SD卡磨损的故事。 由于我的设备中确实装有SD卡,其中包含24/7保留的rw根文件系统,因此我之前对前提条件进行了测试,令我感到满意。我对测试进行了一些调整,重复了一下(实际上是使用同一张卡片),并在这里进行介绍。我有两个核心问题: 是我曾经试图破坏该卡可行的,记住它的目的是不断重现的影响,重新编写方法小数据量? 我用来验证卡的方法仍然可行吗? 我将问题而不是SO或SuperUser放在这里,因为对第一部分的异议可能必须断言我的测试并未真正按照我确定的方式写入卡,并且断言这需要一些时间linux的特殊知识。 [也可能是SD卡使用某种类型的智能缓冲或高速缓存,因此对同一位置的重复写入将在不太容易磨损的位置进行缓冲/高速缓存。我在任何地方都没有发现任何迹象,但是我正在SU上询问有关问题] 测试背后的想法是将卡上的同一小块写入数百万次。这远远超出了此类设备可以维持多少个写入周期的任何要求,但是假定损耗均衡是有效的,如果卡的大小合适,那么数百万次此类写入仍然无关紧要,因为“同一块”会字面上不是同一个物理块。为此,我需要确保每次写入都确实刷新到硬件和相同的外观位置。 为了刷新到硬件,我依靠POSIX库调用fdatasync(): #include <stdio.h> #include <string.h> #include <fcntl.h> #include <errno.h> #include <unistd.h> #include <stdlib.h> // Compile std=gnu99 #define BLOCK 1 << 16 int main (void) { int in = open ("/dev/urandom", O_RDONLY); if (in < 0) { fprintf(stderr,"open in %s", strerror(errno)); exit(0); } …


3
如何解决SD卡上的此I / O错误?
我尝试了gparted,但是没有用。我找到了SDFormatter,用于Windows的工具,它可以完全擦除。 我有一个SD卡,想在其上安装Debian。dd处理大约需要45分钟,之后我退出了。在我的Windows计算机上,它显示在驱动器列表中,但是在尝试格式化甚至打开时也存在未定义的错误。gparted告诉我 /dev/mmcblk0: unrecognised disk label 我发出 dd if='deb.iso' of=/dev/mmcblk0 bs=512k dd: error writing „/dev/mmcblk0“: I/O error 0+1 data in 0+0 data out copied 0 Bytes (0 B), 10,098 s, 0,0 kB/s 之后,我尝试 root@kali:~# lsblk -o NAME,FSTYPE,MOUNTPOINT,SIZE,RO NAME FSTYPE MOUNTPOINT SIZE RO sda 465,8G 0 ├─sda1 ext4 / 450,1G 0 …
14 dd  sd-card 

2
fsck不会fsck(无法设置超级块标志)
在基于SD卡的设备上进行异常关闭后,我将SD卡取出到fsck根文件系统中。这导致以下方面的变化: e2fsck 1.43.1 (08-Jun-2016) /dev/sdc2: recovering journal Superblock needs_recovery flag is clear, but journal has data. Run journal anyway<y>? no Clear journal<y>? no e2fsck: unable to set superblock flags on /dev/sdc2 在这里我两次都回答“否”,但是没有是/否的序列不会立即导致相同的结果。 可以挂载文件系统,并且在临时检查中看起来还可以;它在设备中也可以正常工作,这就是根文件系统(实际上,它不是很好,请参见注释; tldr一些无法恢复的损坏目录)。 我dd将分区(8 GB)分区为一个文件,并尝试了fsck。有趣的是: e2fsck 1.43.1 (08-Jun-2016) plush.rootfs: recovering journal Clearing orphaned inode 18290 (uid=0, gid=0, mode=0100644, size=34096) …
12 ext4  fsck  sd-card 

2
实用程序,用于驱动器上的TRIM未分配空间
我有一个带有几个ext4分区的驱动器(SD卡),但是还有一些未分配的空间。该fstrim实用程序只能在文件系统内工作。在我重新发明轮子并写一个轮子之前,是否有另一个实用程序可以对未分配的空间进行修剪(或者可以对明确指定的范围进行修剪)? 我可以确认的是,大部分的设备上未分配的空间是不是目前已知的控制器是免费的,因为我观察到,这种特殊的卡上,读取到修剪空间返回0的,但该设备显示的扫描剩下大量垃圾数据。 编辑:我在使用时遇到问题hdparm。下面的示例舍弃了第一个扇区,但是无论我指定的范围如何,我都会看到相同的结果。fstrim设备上没有任何问题: root@ubuntu:~# hdparm --please-destroy-my-drive --trim-sector-ranges 0:1 --verbose /dev/mmcblk0 /dev/mmcblk0: trimming 1 sectors from 1 ranges outgoing cdb: 85 0d 06 00 01 00 01 00 00 00 00 00 00 40 06 00 outgoing_data: 00 00 00 00 00 00 01 00 00 00 00 00 00 00 …

4
随时断电可安全使用SD卡
我们正在开发一个小型嵌入式Linux系统(2.6.35英寸),该OS具有一个较小的内部NAND设备用于OS和应用程序(250-500Meg),以及一个带有8Gb SDHC SD卡的SD卡用于数据存储。 可以随时切断设备电源。 系统必须将数据存储到SD卡。这些数据非常重要……这是系统的全部目的。系统通常与远程位置的任何网络完全断开连接,并且每隔4-8周通过运动网检索一次数据。 目前,我们只是在SD卡上安装了VFAT。这主要是因为第一个测试客户端可以轻松地将数据手动复制到他们的Win7笔记本电脑上。 但是,我现在担心在错误的时间断电导致数据丢失只是时间问题。 配置这样的系统以防止数据丢失的最佳方法是什么?JFFS2听起来像我想要的数据写入方式(并且对性能的要求根本不高),但是使用block2mtd听起来很笨拙,等等。我也不确定卡的损耗平衡如何相互作用用它。 最好的方法是什么? 编辑 我现在正在考虑离开文件系统VFAT,并一次分配大小为0xFF的日大小文件,这应该大大限制了关机后再启动的风险。然后,我只能将记录追加到这些预先创建的块中,并且希望SD卡不是那么愚蠢,以至于它们会将擦除/耗损级别写入到0xFF区域中。 我可以使用noatime,但是是否有等效的VFAT nomtime来防止写入修改后的时间字段?我需要某种方法来阻止任何元数据更新,直到创建新的一天的文件为止。 编辑2 电子堆栈交换上的某人提醒我,NAND上也有ECC数据,因此无法防止擦除。 那么,通过block2mtd进行JFFS2在这种情况下是否合适? 编辑3 比我想的还要糟。即使您将完全相同的内容写入磁盘,我拥有的SD卡也会擦除数据块。擦除块为64KB,太大,无法完全延迟写入。我将在一种日志中将多达128KB的数据存储在NAND闪存(我可以控制其写入行为)中,然后将128KB的块写入SD卡上VFAT分区中的128KB对齐的文件中(在(如果其他SD卡具有128KB擦除块)。

2
查找SD卡的唯一标识符
我有许多SD卡需要跟踪一个项目。现在,他们每个人的身体上都有一个永久性标记的数字。可以,但是我想查看每个可记录的SD卡中是否内置了某些独特功能。到目前为止,我知道: SD卡的CID 通常(并非总是???)包括唯一的序列号。我无法在Fedora 21中找到一种简单的方法来读取SD卡上的内容。有些页面说,除非您将读卡器直接连接到PCI总线(而不是通过USB),否则您将看不到CID。 卷/分区序列号。这可能可行,但我知道每次重新格式化卡时都会改变,这是我们不时进行的操作。所以不是一个好的选择。 只需用我自己独特的命名系统标记SD卡的卷即可。这太容易更改了,我不妨坚持在外面写下数字。 所以,我想我的问题是: 有没有一种方法可以可靠地从Fedora 21或其他GNU / Linux发行版中的USB卡读取器中读取SD卡上的CID以获得序列号? 如果不是,是否还有其他方法可以使用SD卡或其他系统中的现有唯一标识符来唯一标识SD卡?
10 sd-card 

2
Linux-由于不支持的可选功能而无法挂载RDWR(400)
我尝试从SD卡运行Android。此卡已准备好。有隔板:boot(FAT32),rootfs(ext4),system(ext4),cache(ext4)和usedata(ext4)。引导分区有文件来运行的u-boot: MLO,u-boot.bin和uImage。要运行它,我使用命令 mmcinit 0 fatload mmc 0 0x80000000 uImage setenv bootargs 'console=ttyO2,115200n8 mem=456M@0x80000000 mem=512M@0xA0000000 init=/init vram=10M omapfb.vram=0:4M androidboot.console=ttyO2 root=/dev/mmcblk1p2 rw rootwait rootfstype=ext4' bootm 0x80000000 比我看到Linux是如何启动的。但是在加载步骤几秒钟后,rootfs我看到一条错误消息 [ 4.015655] EXT4-fs (mmcblk1p2): couldn't mount RDWR because of unsupported optional features (400) [ 4.036499] sd 0:0:0:0: [sda] Attached SCSI removable disk [ 4.079986] List …

2
永不中断的文件系统(可接受数据丢失)
关于这个问题有几个现有的话题,但是我所寻求的略有不同。我在嵌入式Linux上有SD卡,它会掉电。我也许可以在某个时候修改硬件,正确关闭硬件等等,但是等等,但是现在,我只是想找到一个在断电后仍能正常工作的文件系统。数据丢失是可以接受的。我宁愿不丢失比当前正在写的文件更多的信息,但我还是宁愿丢失所有文件,也不愿面对“无法装载”,“等待10分钟fsck”或“无法创建新文件”。文件由于此inode出现了一些错误”。该程序必须继续! 为了确保这一点,我正在付出很多努力。我使用的是工业级组件,有硬件看门狗,软件看门狗,内部,外部,用于重新启动程序的init,不断检查内存,文件描述符的守护程序等等,我有看门狗看我的看门狗,而这些看门狗又会监视其他看门狗...但是我似乎无法保证SD卡能够安装并正常运行? 目前,我最好的选择是在SD卡上使用JFS,在我的安装中包括fsck和fsck.jfs。(添加600kb +占用了我的ram和flash。这是不好的。)并在每次启动时运行fsck(可能会增加很多启动时间。这有些不好。)。不过似乎有点难过。 有谁知道更好的方法或更好的文件系统? 更新:e2fsprogs-libs(对jfsutils的依赖)在我的发行版中似乎很难编译。我将研究ZFS(不过,它并不是我的发行版中的本机。它似乎做了很多我不需要的事情。) UPDATE2:有关我的系统和测试的更多信息:SD卡存储是辅助的可选存储。SD卡是2Gb-8Gb工业级microSD。SD卡是通过我的rc使用mount -t命令安装的。选项“ noatime”,但不“ sync”。我的发行版是一个定制的Analog Device风格的uClinux,具有3.10内核和1.21 busybox。我的主要存储是带有jffs2的spi闪存。我从来没有任何问题。我什至不知道是否有fsck.jffs2可用。另一方面,南德(Nand)闪过光芒……但这是另一回事。SD卡的用途是存储测量数据。“监控”程序会将结果附加到文件中,并具有策略性的同步放置。当文件超过给定大小时,将创建一个新文件。当达到给定数量的文件时,最早的文件将被删除。如果当前的测量文件由于掉电而丢失,那就没有灾难了。文件通常为50-100kb,1个结果通常为1kb。这只是初始开发阶段。没有固定的东西。这是我第一次处理嵌入式系统中的非闪存文件系统。(我在x86服务器上使用了ext4。) 我从vfat开始。默认文件系统。(我认为工厂可能有选择它的理由。如果一切正常,我并不是很在乎。)我从未见过嵌入式vfat设备中的任何断电问题。我在WinCE中遇到了FAT问题。但是,当我的“监视”程序达到100-200个文件时,它拒绝再创建文件。似乎FAT在根目录中有一个特殊的文件限制问题,在子目录中有一个稍大的文件限制问题。我需要能够在1个目录中创建500-1000个文件。所以vfat不会。 然后我切换到ext2。我没有在启动时插入fsck。(不知道我必须这样做。)由于出现“ inode something something”错误,一天之内,我的“监控”程序无法创建更多文件。灾害! 我当前的解决方案是在启动时使用“ e2fsck -y”的ext2。到目前为止,这似乎很有希望。但是e2fsck和“启动时fsck”的整个概念困扰着我。e2fsck本身就花费了超过350kb的主闪存和ram。(当它不运行时。)这意味着这是我最大的程序。它比busybox大。它几乎可以与我的内核媲美。 我一直在考虑ext3。它具有日志化的元数据,不会受到伤害。我对此有多大帮助还不确定。我的小文件和可控同步文件应该被覆盖吗?它具有有序的写入顺序。这意味着数据也有日志记录。但是,这可能导致不确定的滞后。在我的情况下,这很糟糕。(这可能不是问题。)它还具有计划的同步功能。例如。每5秒提交一次。我认为这干扰了我自己的同步。太多的写入操作对SD卡不利。甚至工业的。我找不到有关如何禁用此功能的任何文档。ext3 仍然需要在每次启动时都运行fsck!但是ext3仍然是可能的。 分机4。将解决ext3的许多性能问题。不过我真的不需要性能。而且我的发行版似乎没有内置的mkfs.ext4和fsck.ext4。也许这不是问题。可能会。例如。e2progs-libs(对jfsutils的依赖)似乎有很多编译问题。 JFS,XFS,BRFSS。我的内核都支持。当前未包含在我的用户空间工具框中。一切似乎都是相当大的,复杂的系统。而且它们似乎都在启动时需要“ fsck”等效项吗? 我还考虑过抛出自己的文件系统:始终写入文件表的2个副本。遍历时,它将选择具有正确CRC和最新序列号的一个。进行两个阶段的写入序列。临时分配,修复提交。无需fsck。恐怕这可能会有些天真。 UPDATE3:顺便说一句,嵌入式系统(至少是嵌入式系统)的本质是它们是自治的,无人看管的,遥不可及的,并且它们必须运行多年。诸如fsck之类的程序可能需要人与人之间的交流,使我无所适从。

2
是否在不卸下卡的情况下重设MMC控制器?
我正在尝试使用ddrescue从SDHC卡中抢救数据: while true ; do ddrescue -d /dev/mmcblk0p1 mmc.img mmc.log ; done 我不确定是卡上的还是笔记本电脑上的控制器,在读取了一定数量的坏扇区(不是)后,似乎所有扇区(在syslog中显示)都会返回错误。 (显示在syslog中),我发现将卡弹出并再次插入插槽会重置此状态,并再次将好扇区报告为好扇区,直到读取了太多坏扇区为止,依此类推。 目前,我正在使用此循环,注意ddrescue的状态输出,并手动重置卡。有没有一种方法可以在不移除卡的情况下重置控制器,以便救援过程可以在无人值守的情况下运行? 也许是相关的,但是在这台Dell笔记本电脑中,读取器甚至要注意已插入卡,必须在引导或使用过程中完成该操作echo 1 > /sys/bus/pci/rescan,但只有一次,此后读取器PCI设备就会出现,并且一切正常。 07:00.0 System peripheral: JMicron Technology Corp. SD/MMC Host Controller (rev 30) Subsystem: Dell Device 046e Flags: bus master, fast devsel, latency 0, IRQ 16 Memory at f0600000 (32-bit, non-prefetchable) [size=256] Capabilities: …

2
mmc0:初始化SD卡时出现错误-110
我的Arch出现问题,我插入SD无法检测到。 我也发现以下错误内核日志: uname -a Linux localhost.localdomain 4.9.6-1-ARCH #1 SMP PREEMPT Thu Jan 26 09:22:26 CET 2017 x86_64 GNU/Linux dmesg [ 3.663535] mmc0: error -110 whilst initialising SD card [ 4.515911] random: fast init done [ 4.720224] mmc0: error -110 whilst initialising SD card lspci -v 00:00.0 Host bridge: Intel Corporation …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.