例如,如果我使用命令 dd if=/dev/zero of=/dev/sdX清除 SD 卡的内容,我猜这会完全擦除(设置为零)卡上的每个内容?分区、文件系统、数据等
现在我无法理解的是,当我之后将这个设备再次插入计算机,Linux 或 Windows 时,我能够再次写入它。如果一切都被擦除,操作系统如何知道这是什么类型的设备?
有不同类型的闪存,我猜他们需要特定的驱动程序来写入它们取决于什么类型,那么操作系统如何知道什么类型?
是否有一小部分闪存未被覆盖,其中包含解释它是什么类型的内存的数据?
您的 SD 卡不仅仅是像 DVD(或 CD 或软盘)那样的无源存储器。SD 卡包括一个控制器:
[ [
flash memory
] <=> [controller
] ] <=> [your computer
]SD卡内的控制器处理细节。这使得开发新卡成为可能,其中闪存具有不同的细节,并且旧计算机/设备无需任何修改即可使用它们。
也许最重要的是,这使制造商更容易销售使用新技术的卡:-)。
写入全零
/dev/sdX
不会导致控制器自行销毁。就像将全零写入更传统的硬盘驱动器一样,不会破坏硬盘驱动器内的控制器。对此有两个答案。
一切的定义
如您所料,并非所有内容都被删除。它就像一块干擦板:您可以将其擦干净,但板仍然存在。它仍然知道如何成为干擦板。该设备有一组固定的元数据,它不会让你擦除。可以读取此数据,但不会与其他数据一起出现。例如一个 USB 设备,当您插入它时,操作系统会查询各种信息:序列号、制造商编号、设备类型(键盘、指针、大容量存储、网络、集线器……)。一旦操作系统有了这个,它就可以加载特定的驱动程序,然后开始读/写存储的内容。
也可能有一个嵌入式 cpu(控制器)运行的程序。你无能为力,看到这个,你绝对不能抹去它。
许多不同的设备与否
设备类型有限。USB 定义了几种基本类型(HID:指针、键盘;大容量存储、网络、音频、视频……)。如果 USB 设备经过认证,则它必须使用这些预定义类型之一,因此将是兼容的(不保证未认证的设备是兼容的,并且可能需要专有驱动程序)。