将USB驱动器格式化为NTFS,以便在Windows下使用。

当我在Windows下将驱动器格式化为NTFS并将其插入Ubuntu机器时,它可以完美地使用。但是当我在Ubuntu下使用Disks(删除所有分区并创建一个单一的NTFS分区)进行格式化时,插入Windows机器时它不会显示出来。
请注意,在这两种情况下,USB驱动器只包含一个主分区,格式为NTFS,例如:
- `/dev/sdb` - 实际设备 - `/dev/sdb1` - 唯一的主分区
我观察到这种行为不仅适用于固态USB闪存驱动器,也适用于外部USB磁盘驱动器。
如何在Ubuntu下重新格式化USB硬盘或U盘为NTFS,以便在Windows下可用?

看起来这个问题与此相关:https://askubuntu.com/questions/468675/ntfs-formatted-hard-disks-partitions-not-visible-in-windows-although-they-are我会检查建议,并稍后报告解决方案是否有效。 - Pawel Debski
2可能是将NTFS分区添加到Live USB的重复问题。 - George Udosen
4个回答

gparted(GNU分区编辑器)是一个很好的图形化工具,可以将驱动器格式化为各种不同的文件系统类型。您可以使用sudo apt-get install gparted命令进行安装。

就像在使用Disks时一样,请非常小心确保您正在对正确的设备进行更改。您可以按照以下步骤将设备格式化为NTFS:

  1. 从右上角的下拉选择器中选择正确的设备。
  2. 删除设备上已存在的任何分区。
  3. 使用所有可用空间创建一个新分区,并将类型设置为ntfs
  4. 点击“应用”按钮,等待操作完成。

如果Windows仍然无法识别设备,则可能是分区表的类型与MS-DOS类型不同(我认为Ubuntu默认使用gpt分区类型)。点击菜单中的“查看 >> 设备信息”以查看分区表类型。在这种情况下,使用“设备 >> 创建分区表”菜单选项将分区表类型更改为MS-DOS。您可能需要再次按照上述步骤创建NTFS分区。


我看到一个选项可以将现有分区格式化为NTFS。我应该删除它然后重新创建一个新的分区吗? - Chris Decker

使用mkntfs命令

安装ntfs-3g软件包,其中包含了mkntfs命令:

sudo apt-get install ntfs-3g

使用lsblk -fdf -Th命令查找您的USB驱动器的分区。假设它位于/dev/sdb1
使用umount /dev/sdb卸载驱动器,否则会出现错误。
/dev/sdb1 is mounted.
Refusing to make a filesystem here!

然后格式化分区:
sudo mkntfs --fast --label myUsbDrive /dev/sdb1

如果成功了,你会看到这样的信息:
Cluster size has been automatically set to 4096 bytes.
Creating NTFS volume structures.
mkntfs completed successfully. Have a nice day.

我用Homebrew安装了ntfs-3g,但是出现了sudo: apt-get: command not found的错误。有什么办法吗? - Mick
@Mich: apt-get 是安装程序的命令。如果你已经使用其他软件包管理器安装了 mkntfs,就不需要运行 apt-get - Matthias Braun

确实,Ubuntu磁盘实用程序使用错误的ID创建分区:

$ sudo fdisk /dev/sdc
欢迎使用fdisk(util-linux 2.27.1)。 更改将仅在内存中保留,直到您决定写入它们。 在使用写入命令之前要小心。
命令(输入m获取帮助):p 磁盘/dev/sdc:57.9 GiB,62109253632 字节,121307136 扇区 单位:扇区,1 * 512 = 512 字节 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘标签类型:dos 磁盘标识符:0xcee48da0
设备 启动 起始 结束 扇区数 大小 ID 类型 /dev/sdc1 2048 121307135 121305088 57.9G 83 Linux 命令(输入m获取帮助):q

使用GParted创建该分区时,分区将使用正确的ID创建,并且在Windows下可以完全显示:

$ sudo fdisk /dev/sdc
欢迎使用fdisk (util-linux 2.27.1)。 更改将仅保留在内存中,直到您决定写入它们。 在使用写入命令之前,请小心。
命令(m获取帮助):p 磁盘/dev/sdc:57.9 GiB,62109253632字节,121307136扇区 单位:每个1 * 512 = 512字节的扇区 扇区大小(逻辑/物理):512字节/512字节 I/O大小(最小/最佳):512字节/512字节 磁盘标签类型:dos 磁盘标识符:0x0bce1084
设备 启动 开始 结束 扇区数 大小 Id 类型 /dev/sdc1 2048 121307135 121305088 57.9G 7 HPFS/NTFS/exFAT 命令(m获取帮助):q $

使用fdisk始终可以更改分区类型,但结论是最好始终使用GParted。

也许我们应该向Disks开发人员提交一个错误报告?


3如果你有兴趣和精力去做,那么是的,把这个问题带给开发人员是一个好主意(而且通过提交错误报告来实现)。 - sudodus

  • 我已经用 gparted 成功完成了这个任务,正如之前建议的那样。

  • 你也可以使用 mkusb 创建一个 持久化 live 硬盘(带有标准版 Ubuntu 或社区版本:Kubuntu、Lubuntu...Xubuntu)。在这个过程中,分区 #1 会被创建为一个 NTFS 分区,用于与 Windows 共享数据。

  • $ sudo lsblk -o model,name,size,fstype,label,mountpoint /dev/sdd
    MODEL            NAME    SIZE FSTYPE  LABEL                     MOUNTPOINT
    DT Workspace     sdd    29.1G                                   
                     ├─sdd1   14G ntfs    usbdata                   
                     ├─sdd2    1M                                   
                     ├─sdd3  244M vfat    usbboot                   
                     ├─sdd4  893M iso9660 Lubuntu 16.04.1 LTS amd64 
                     └─sdd5   14G ext4    casper-rw                 
    
    $ sudo parted /dev/sdd print        Model: Kingston DT Workspace (scsi)
    Disk /dev/sdd: 31.2GB
    Sector size (logical/physical): 512B/512B
    Partition Table: gpt
    Disk Flags: 
    
    Number  Start   End     Size    File system  Name     Flags
     2      1049kB  2097kB  1049kB               primary  bios_grub
     3      2097kB  258MB   256MB   fat32        primary  boot, esp
     4      258MB   1194MB  936MB                primary
     5      1194MB  16.2GB  15.0GB  ext2         primary
     1      16.2GB  31.2GB  15.0GB  ntfs         primary  msftdata
    
    • 分区 #1 位于驱动器的末尾,但是在分区表中的编号决定了 Windows 是否能够看到它。
    • 如果你使用 GUID 分区表(GPT),根据 parted 的输出列表,有一个 msftdata 标志会很有帮助。
    • 当 Windows 第一次检测到 USB 闪存盘时,可能会想要修复它。选择是,让它尝试修复。Windows 将会回应类似"未发现错误"之类的信息,但它确实会执行一些操作,可能会在某个地方写入标记,表示已经识别到该分区并标记为 "良好",因此下次不再需要修复。

    • 你可以在以下链接中找到更多详细信息:


  • 相关问题