如何使用 FAT32 格式化 U 盘(闪存驱动器)以在 Linux 和 Windows 上使用?

jah*_*jah 11 linux windows-7 formatting partitioning usb-flash-drive

我想格式化记忆棒以在 Windows 7 和非联网 Ubuntu 服务器(精确)之间移动数据。

我不确定我尝试过的两种方法中的任何一种是否正确,即使我可以在两台机器上读取和写入驱动器。

fdisk如果我在 Windows 上格式化驱动器(使用磁盘管理工具),我会得到一个看起来非常奇怪的分区列表,但在 Linux 和 Windows 上读取和写入似乎没问题。

显示 Windows 格式驱动器的 fdisk 输出的图像

cfdisk报告

FATAL ERROR: Bad primary partition 1: Partition begins after end-of-disk.
Run Code Online (Sandbox Code Playgroud)

如果像某些倡导者那样,我cfdisk用来创建类型为全盘的主分区b(或fdisk创建一个从块 2000 开始的分区),然后发出

sudo mkfs.vfat -n some_label /dev/sdf1
Run Code Online (Sandbox Code Playgroud)

那么 Windows 将无法识别文件系统(经过无数次的思考)。

如果我创建相同的分区,Linux 和 Windows 会很高兴地读取和写入 2GB 的数据,然后发出:

sudo mkfs.vfat -I -n some_label /dev/sdf
Run Code Online (Sandbox Code Playgroud)

但这使得全磁盘分区显示为可用空间cfdiskfdisk并且 Windows 不喜欢 16GB 驱动器。

我也试过使用parted,但 Windows 对我在 Linux 上创建的任何分区都不满意。

我担心,虽然驱动器似乎可以工作,但我可能会发现数据没有被忠实地传输。

我正在使用各种年龄、口味和大小的 SanDisk Cruzer 驱动器。

在 Windows 上格式化并忽略 cfdisk 和 fdisk 存在的问题的正确方法是正确的,还是有另一种正确的方法让每个人都对驱动器感到满意?

Rod*_*ith 9

Windows 经常以未分区的方式使用外部媒体,例如 USB 闪存驱动器——也就是说,没有分区表,文件系统被写入整个磁盘。如果你的磁盘是这样设置的,你应该/dev/sdf直接使用,如:

mount /dev/sdf /mnt
Run Code Online (Sandbox Code Playgroud)

您可以以类似的方式使用mkfsfsck和其他工具。您可以使用blkid来验证这一点,如blkid /dev/sdf. 如果它告诉你这/dev/sdf是一个 FAT(或其他)文件系统,那么我的假设是正确的。

如果磁盘要保留任何数据,并要在其上创建一个新的文件系统,你可以这样做整个磁盘上,或者您可以使用fdiskparted或者一些其他的工具来创建一个新的(空)分区表。在 中fdisk,您可以使用o主菜单中的命令执行此操作。这将擦除现有的“分区”(这可能只是fdisk解释 FAT 文件系统的第一个扇区的拼命尝试)并创建一个新的空分区表。然后,您将使用n来创建一个新分区,使用 保存更改w,并使用mkfsmkdosfs之外在fdisk上创建新的文件系统/dev/sdf1

请注意,Windows 仅识别包含分区表的 USB 闪存驱动器上的第一个分区。因此,如果您想要多个分区,请确保第一个分区是可从 Windows 访问的分区。

  • 使用类型为“b (Windows95)”的“fdisk /dev/sdf”(使用交互模式中显示的默认值)创建一个分区(使其键入“c (Windows95 (LBA))”,用于 16GB 驱动器 - 这就是 Windows确实)并使用`mkfs.vfat /dev/sdf1` 或在 Windows 中使用磁盘管理工具对其进行格式化(该工具在首次插入驱动器时将文件系统报告为“RAW”)。这两种方式都会导致 fdisk 报告一致的驱动器。请注意,这会导致分区不是“整个磁盘”,因此“/dev/sdf1”是要“挂载”的分区。 (3认同)