带硬编码分区的 USB 闪存驱动器

带硬编码分区的 USB 闪存驱动器

我有一个金士顿 DataTraveler 2.016GB USB 闪存驱动器:

这个 USB 闪存驱动器的奇怪之处在于,尽管我已经将闪存驱动器清零了:

# dd if=/dev/zero of=/dev/sdc bs=10M
dd: writing `/dev/sdc': No space left on device
1490+0 records in
1489+0 records out
15614803968 bytes (16 GB) copied, 3837.37 s, 4.1 MB/s
# 

..它仍然代表自己,就像它有一个分区一样:

# fdisk -l /dev/sdc*

Disk /dev/sdc: 15.6 GB, 15614803968 bytes
64 heads, 32 sectors/track, 14891 cylinders, total 30497664 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
Disk identifier: 0x00000000

Disk /dev/sdc doesn't contain a valid partition table

Disk /dev/sdc1: 241 MB, 241172480 bytes
64 heads, 32 sectors/track, 230 cylinders, total 471040 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
Disk identifier: 0x00000000

Disk /dev/sdc1 doesn't contain a valid partition table
# 

gdisk显示/dev/sdc和 的不同 GUID /dev/sdc1。如果我 grep for sdc1 的输出dmesg,那么只有输出是:

[21329562.191413]  sdc: sdc1

如何理解这样的闪存盘呢?

答案1

内核在内存中维护分区表的副本​​。它实际上并不记得分区表存储在哪里,因此它不会检测到磁盘上的分区表已更改。这就是为什么您仍然看到之前存在的分区的原因。

您需要告诉内核再次解析磁盘以更新其内存中的分区表。跑步partprobe /dev/sdc。诸如此类的分区工具fdisk在将新的分区表写入磁盘时会为您执行此操作,但如果您直接写入磁盘,则需要手动通知内核。

相关内容