Nat*_*ntu 2 command-line partitioning fat32 sd-card execute-command
所以我最近在 eBay 上以相当便宜的价格收到了一张 256GB 的 SD 卡,但事实证明印在背面塑料上的工厂部件号被列为 8GB 卡。
它是由卖家修改的,看起来是 256GB,而不是它的实际大小。
我发现 Linux 中有一个名为“mkdosfs”的软件(它也有一个Windows编译版本,这是我正在使用的版本,但本质上是相同的)。
我将默认脚本应用于 SD 卡,但这实际上将读取的大小减少到 4GB。
我进一步调查发现实际上在运行时出现了一个错误,在关闭前出现了半秒钟,我设法抓住了这个错误的屏幕截图:
这是我用来在 Windows 上运行 mkdosfs 的脚本(其中 H: 是 SD 卡的驱动器号)
mkdosfs -n "8GB" -v H: 8386900
Run Code Online (Sandbox Code Playgroud)
谁能告诉我如何更改脚本以输出 8GB 磁盘作为结果(我很确定这与最后一个数字有关)
谢谢,非常感谢您的帮助。
如果您购买了标有 256 GB 容量但只能容量 8 GB 的驱动器,您应该退回它并从卖家那里获得退款,因为他们没有出售承诺的产品。如果卖家和/或制造商愿意根据驱动器的大小欺骗您,谁知道驱动器还有哪些其他缺陷或潜在故障。即使在前 8 GB 中,我也不会相信它。
对于技术解决方案,与其摸索文件系统工具,您应该重新分区驱动器,使其分区仅覆盖前 8 GB(或任何可用的大小),然后格式化生成的分区) 使用您喜欢的任何文件系统。默认情况下,相应的文件系统工具将创建跨越整个目标分区的文件系统。
您可以使用您喜欢的分区管理器(例如 Gnome Disks、KDE 分区管理器、GParted)对驱动器进行重新分区。我将在下面为您提供两个基于命令行的示例,因为它们易于重现。让我们假设有问题的驱动器具有内核名称/dev/sdz
。
fdisk
启动fdisk
并将其指向驱动器:
sudo fdisk /dev/sdz
Run Code Online (Sandbox Code Playgroud)用一个新的(菜单选项o
)替换分区表。
创建一个新分区(n
),
p
),1
),2048
或没有条目),+8191M
),(可选)打印生成的分区表以验证您是否按预期执行 ( p
),
(可选)将分区类型设置为“W95 FAT32 (LBA)” 1 ( t
, then c
)
将新分区表写入设备 ( w
),
要求 Linux 内核重新读取分区表:
sudo partprobe /dev/sdz
Run Code Online (Sandbox Code Playgroud)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
Run Code Online (Sandbox Code Playgroud)
就像fdisk
你需要让内核重新读取分区表一样:
sudo partprobe /dev/sdz
Run Code Online (Sandbox Code Playgroud)
1创建的新分区的默认分区类型fdisk
是“Linux”,但两种类型都可以。所有主要操作系统(Linux、Windows 和 OS X)都将使用任一分区类型正确识别分区内容。第三方工具在某些极端情况下会出于任何原因选择期望特定的分区类型。