如何使用 mkdosfs 更改磁盘大小

如何使用 mkdosfs 更改磁盘大小

所以我最近在 eBay 上以相当便宜的价格买了一张 256GB 的 SD 卡,但结果发现,背面塑料上印刷的工厂零件编号却是 8GB 卡。

它是由卖家修改的,看起来可容纳 256GB,但不是其实际大小。

我发现 Linux 中有一个名为“mkdosfs”的软件(它也有视窗编译版本(这是我正在使用的版本,但本质上是相同的)。

我将默认脚本应用到 SD 卡,但实际上读取的大小减少到 4GB。

Windows 中显示的磁盘大小

我进一步调查发现,实际上在运行时存在一个错误,该错误在关闭前出现了半秒钟,我设法截取了该错误的屏幕截图: 尝试运行 mkdosfs 时出现的半秒错误

这是我在 Windows 上运行 mkdosfs 时使用的脚本(其中 H: 是 SD 卡的驱动器号)

mkdosfs -n "8GB" -v H: 8386900

有人能告诉我如何更改脚本以输出 8GB 磁盘作为结果(我很确定这与最后一个数字有关)

谢谢,非常感谢您的帮助。

答案1

如果您购买的硬盘广告上说可以容纳 256 GB,但实际只能容纳 8 GB,则应将其退回并从卖家处获得退款,因为他们没有出售承诺的产品。如果卖家和/或制造商愿意根据硬盘的大小欺骗您,谁知道硬盘还有哪些其他缺陷或潜在故障。即使是前 8 GB,我也不会信任它。


为一个技术方案,而不是摸索着文件系统工具,你应该重新分区驱动器,使其分区仅覆盖前 8 GB(或任何可用的大小),然后使用您喜欢的任何文件系统格式化生成的分区。相应的文件系统工具将默认创建覆盖整个目标分区的文件系统。

您可以使用您最喜欢的分区管理器(例如 Gnome Disks、KDE ​​Partition Manager、GParted)对驱动器进行重新分区。我将在下面给出两个基于命令行的示例,因为它们很容易重现。我们假设有问题的驱动器具有内核名称/dev/sdz

使用fdisk

  1. 启动fdisk并将其指向驱动器:

    sudo fdisk /dev/sdz
    
  2. 用新的分区表替换原来的分区表(菜单选项o)。

  3. 创建新分区(n),

    1. 使其成为主分区(p),
    2. 使其成为第一个分区(1),
    3. 选择建议偏移量为 1 MiB 的第一个扇区(2048或不输入任何内容),
    4. 选择所需的大小 8 GiB(= 8192 MiB)减去上面的 1 MiB(+8191M),
  4. (可选)打印结果分区表以验证您是否按预期执行(p),

  5. (可选)将分区类型设置为“W95 FAT32 (LBA)” 1t,然后c

  6. 将新的分区表写入设备(w),

  7. 要求 Linux 内核重新读取分区表:

    sudo partprobe /dev/sdz
    

使用sfdisk

如果您不想浏览一堆菜单,您也可以使用它sfdisk来指定分区表(设置size_gb为所需的 GiB 大小):

size_gb=8

sudo sfdisk /dev/sdz <<EOF
unit: sectors
: start=2048, size=$((($size_gb << 21) - (1 << 11))), Id=c
EOF

就像fdisk您需要要求内核重新读取分区表一样:

sudo partprobe /dev/sdz

1使用 Linux 创建的新分区的默认分区类型fdisk是“Linux”,但两种类型都可以。所有主流操作系统(Linux、Windows 和 OS X)都可以正确识别任一分区类型的分区内容。有些特殊情况是第三方工具会出于某种原因选择特定的分区类型。

相关内容