8GB U盘标称只有512B还是10MB?

8GB U盘标称只有512B还是10MB?

我制作了一个 Arch Linux ISO USB 驱动器,我正在尝试使用方向来自 Arch Linux wiki。运行后:

$ sudo dd count=1 bs=512 if=/dev/zero of=/dev/sde && sync

parted只识别一个512字节的扇区:

$ sudo parted /dev/sde -s print
Error: /dev/sde: unrecognised disk label
Model:  (file)
Disk /dev/sde: 512B
Sector size (logical/physical): 512B/512B
Partition Table: unknown
Disk Flags:

我无法创建新分区:

$ sudo parted /dev/sde -s mklabel msdos
$ sudo parted /dev/sde -s mkpart primary fat32 0% 100%
Error: Can't have the end before the start! (start sector=1 length=0)
Error: Unable to satisfy all constraints on the partition.

省略countbs标志会dd导致仅写入 10MB,而不是整个磁盘:

$ sudo dd if=/dev/zero of=/dev/sde && sync
dd: writing to ‘/dev/sde’: No space left on device
20481+0 records in
20480+0 records out
10485760 bytes (10 MB) copied, 0.0177212 s, 592 MB/s
$ sudo parted /dev/sde -s print
Error: /dev/sde: unrecognised disk label
Model:  (file)
Disk /dev/sde: 10.5MB
Sector size (logical/physical): 512B/512B
Partition Table: unknown
Disk Flags:

答案1

(正如 Gilles 所暗示的),您没有在 USB 设备上工作。

第一个线索是Model输出

$ sudo parted /dev/sde -s print
Error: /dev/sde: unrecognised disk label
Model:  (file)                                     <= file!
...
  • 您的命令:

    sudo dd count=1 bs=512 if=/dev/zero of=/dev/sde && sync
    

/dev/sde创建一个512 字节的零填充文件。

  • 当您尝试通过以下方式写入整个磁盘时:

    sudo dd if=/dev/zero of=/dev/sde && sync
    

您写入该文件,/dev/sde直到分区上没有剩余空间为止/dev

    dd: writing to ‘/dev/sde’: No space left on device

因为/dev,(最有可能)实际上是 RAM 磁盘,(乌德夫),您耗尽了对该分区设置的限制...

dd你这样做时,在正确的磁盘上工作是极其重要的。如果您有另一个名为/dev/sde它的磁盘,则会被删除。完全地。正如您链接的 Arch Wiki 中所述:

警告:这将不可挽回地破坏 /dev/sd 上的所有数据X


插入USB设备后,查看例如:

lsblk

例如,如果您想了解更多信息,请参阅男人或者-h

lsblk -o NAME,STATE,RM,HOTPLUG,TYPE,TRAN,SIZE,PHY-SEC,LOG-SEC,FSTYPE,MODEL,VENDOR,LABEL,PARTLABEL

和:设备确实不是得到相同的dev/xxx每次进入。它是随机的。

其他注意事项:

当你这样做时:

sudo parted /dev/sde -s mklabel msdos

msdos在中创建一个分区表文件 /dev/sde。这很好用。但是当您继续执行以下操作时:

sudo parted /dev/sde -s mkpart primary fat32 0% 100%

您尝试在文件中创建主分区并收到错误:

Error: Can't have the end before the start! (start sector=1 length=0)

因为它拒绝在扇区 0 处启动分区,这里是你的分区表所在的位置MSDOS,驻留。因此它测试开始扇区 1,或偏移量 512。但由于文件只有 512 字节结尾扇区也将位于 512,您会得到“在开始之前结束”

无论如何,FAT32 分区的最小大小为 65,527 个簇,即大约 32MB。

答案2

我解决了一个非常相似的问题:

rm /dev/sdb

插入我的 USB 驱动器(并列为 /dev/sdb)。

之后,我可以为整个驱动器创建一个新的分区表。

相关内容