所以我最近在 eBay 上以相当便宜的价格买了一张 256GB 的 SD 卡,但结果发现,背面塑料上印刷的工厂零件编号却是 8GB 卡。
它是由卖家修改的,看起来可容纳 256GB,但不是其实际大小。
我发现 Linux 中有一个名为“mkdosfs”的软件(它也有视窗编译版本(这是我正在使用的版本,但本质上是相同的)。
我将默认脚本应用到 SD 卡,但实际上读取的大小减少到 4GB。
我进一步调查发现,实际上在运行时存在一个错误,该错误在关闭前出现了半秒钟,我设法截取了该错误的屏幕截图:
这是我在 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
启动
fdisk
并将其指向驱动器:sudo fdisk /dev/sdz
用新的分区表替换原来的分区表(菜单选项
o
)。创建新分区(
n
),- 使其成为主分区(
p
), - 使其成为第一个分区(
1
), - 选择建议偏移量为 1 MiB 的第一个扇区(
2048
或不输入任何内容), - 选择所需的大小 8 GiB(= 8192 MiB)减去上面的 1 MiB(
+8191M
),
- 使其成为主分区(
(可选)打印结果分区表以验证您是否按预期执行(
p
),(可选)将分区类型设置为“W95 FAT32 (LBA)” 1(
t
,然后c
)将新的分区表写入设备(
w
),要求 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)都可以正确识别任一分区类型的分区内容。有些特殊情况是第三方工具会出于某种原因选择特定的分区类型。