当前位置:首页>Linux>在Linux下读写Windows硬盘攻略——NTFS与exFAT硬盘挂载

在Linux下读写Windows硬盘攻略——NTFS与exFAT硬盘挂载

  • 2026-10-11 07:14:20
在Linux下读写Windows硬盘攻略——NTFS与exFAT硬盘挂载

大家好,我是冯哥的缓存。今天这篇我们来聊一下双系统用户最常见的一个需求:在Linux下读写Windows的硬盘。

💡提示:本文适用于双系统或多系统用户、希望在Linux上访问外接硬盘/U盘的用户,以及需要在Linux和Windows之间传数据的用户。

Windows默认用的是NTFS文件系统(C盘、D盘一般都是),U盘和SD卡常用exFAT。Linux本身的文件系统是ext4。

三个系统,三种格式,互相访问就需要"驱动支持":

文件系统

Linux读

Linux写

Windows读

Windows写

NTFS

✅ 支持(ntfs-3g/内核驱动)

✅ 支持(需ntfs-3g或内核5.15+)

✅ 原生支持

✅ 原生支持

exFAT

✅ 支持(内核5.4+内置)

✅ 支持

✅ 原生支持

✅ 原生支持

ext4

✅ 原生支持

✅ 原生支持

❌ 需安装第三方软件

⚠️ 不稳定

💡提示: Ubuntu 22.04(内核5.15)开始,NTFS已有更稳定的内核驱动,读写速度比ntfs-3g更快。本文覆盖两种方式。

先确认磁盘情况

插上硬盘或U盘后,先看系统识别到了什么:

#查看所有磁盘和分区

lsblk -f

输出示例:

NAME

FSTYPE

LABEL

UUID

MOUNTPOINT

sda

sda1

ntfs

Windows

XXXX-XXXX

sda2

ntfs

Data

XXXX-XXXX

sdb

sdb1

exfat

USB

XXXX-XXXX

·NAME:设备名(sda1、sdb1等)

·FSTYPE:文件系统类型(ntfs / exfat / ext4)

·MOUNTPOINT:当前挂载点(空=未挂载,需要手动挂载)

#另一个常用命令,显示更多分区信息

sudo fdisk -l

#只看NTFS分区

lsblk -f | grep ntfs

一、NTFS 硬盘的读写

安装 NTFS 支持

Ubuntu 22.04 内核(5.15)已内置 ntfs3驱动,但建议同时安装 ntfs-3g(用户空间驱动,兼容性更好):

sudo apt install ntfs-3g

两种驱动对比:

对比项

ntfs3(内核驱动)

ntfs-3g(用户空间驱动)

读写速度

⭐⭐⭐⭐⭐更快(内核级)

⭐⭐⭐较慢(FUSE层)

稳定性

⭐⭐⭐⭐

⭐⭐⭐⭐⭐更成熟

支持系统

Ubuntu   22.04+ / 内核5.15+

所有较新Linux

适用场景

日常高频读写

兼容性优先,老旧系统

故障恢复

一般

ntfsfix工具支持更好

💡提示:如果你的 Ubuntu 是22.04 或更新版本,可以优先用内核 ntfs3 驱动。如果是 Ubuntu 20.04,用 ntfs-3g 更稳妥。另外部分发行版(如RHEL/Fedora)因许可证原因未开启ntfs3,需使用ntfs-3g。

方式一:临时挂载(命令行,立即生效)

#创建挂载点目录

sudomkdir -p /mnt/windows_d

#挂载(使用 ntfs-3g 驱动,推荐)

sudo mount -t ntfs-3g /dev/sda2 /mnt/windows_d

#或者使用内核 ntfs3 驱动(Ubuntu 22.04+,更快)

sudo mount -t ntfs3 /dev/sda2 /mnt/windows_d

#验证挂载成功

ls /mnt/windows_d

临时挂载在重启后会失效,需要重新执行。适合偶尔需要访问的场景。

方式二:开机自动挂载(写入 /etc/fstab)

步骤一:获取分区 UUID(比设备名更稳定,不受插槽顺序影响)

sudo blkid /dev/sda2

输出示例:

/dev/sda2: UUID="ABCD1234ABCD1234" TYPE="ntfs" PARTLABEL="Basic data partition"

步骤二:创建挂载点

sudo mkdir -p /mnt/windows_d

步骤三:编辑 fstab

sudo nano /etc/fstab

在文件末尾追加一行(使用 ntfs-3g 驱动):

UUID=ABCD1234ABCD1234/mnt/windows_dntfs-3gdefaults,uid=1000,gid=1000,dmask=022,fmask=13300

或使用内核 ntfs3 驱动(速度更快):

UUID=ABCD1234ABCD1234/mnt/windows_dntfs3defaults,uid=1000,gid=1000,dmask=022,fmask=13300

#也可以用’umask=022‘ 代替‘dmask=022,fmask=133‘

步骤四:验证 fstab 配置是否正确

#测试挂载(不重启)

sudo mount -a#如果报错,说明fstab配置有误,修正后再重启。

#查看挂载结果

df -h | grep windows_d

⚠️注意:/etc/fstab写错会导致系统无法启动!务必先用 sudo mount -a测试,确认没有报错再重启。如果 mount -a报错,立刻用 sudo nano /etc/fstab回去改正。

Windows 快速启动(Fast Startup)导致 NTFS 只读

这是双系统用户最常遇到的问题!

症状: NTFS 分区挂载后只能读,写入时报错 Read-only file system。

原因: Windows 的"快速启动"功能(Hibernate to disk)让系统处于类似于休眠,但只关闭用户会话而非彻底关机。NTFS 分区在"脏"状态下,Linux 只能以只读模式挂载,防止数据损坏。

现象

原因

mount报 Windows is   hibernated

快速启动开启,Windows  未完全关机

NTFS 以只读模式挂载

Linux 保护机制,防止损坏睡眠状态的NTFS

ntfsfix提示 volume dirty

同上

解决方法(二选一):

方法A(推荐):在Windows里彻底关闭快速启动

在 Windows 中:控制面板 → 电源选项 → 选择电源按钮的功能 → 关闭"启用快速启动"

方法B(临时解除,不推荐长期用):

#强制挂载(有风险,仅偶尔使用)

sudo ntfsfix /dev/sda2

sudo mount -t ntfs-3g /dev/sda2 /mnt/windows_d

⚠️注意:如果 Windows 处于休眠状态,ntfsfix强制挂载可能导致Windows 下次启动后文件系统错误。强烈建议从根本上关闭快速启动。

NTFS 挂载参数说明

参数

含义

uid=1000

挂载后文件所属用户(用 id命令确认你的uid)

gid=1000

挂载后文件所属用户组

dmask=022

目录权限掩码(目录权限=755)

fmask=133

文件权限掩码(文件权限=644,不设可执行位)

defaults

读写权限、自动挂载等默认选项

nofail

设备不存在时不报错(U盘、移动硬盘推荐加上)

noatime

不记录访问时间(提升性能)

0 0

最后两个数字:不自动dump、不自动fsck

💡提示:uid=1000是第一个普通用户的默认 uid。如果不确定,运行 id命令查看 uid=后面的数字。

二、exFAT 硬盘(U盘/SD卡)的读写

安装 exFAT 支持

Ubuntu 22.04 内核5.4+ 已内置 exFAT 驱动,一般直接就能用。但建议安装工具包:

sudo apt install exfat-fuse exfatprogs

💡提示:旧版 Ubuntu(20.04以前)需要安装 exfat-fuse + exfat-utils。Ubuntu 22.04 只需 exfatprogs。

临时挂载

#挂载exFAT 设备

sudomkdir -p /mnt/usb

sudo mount -t exfat /dev/sdb1 /mnt/usb

#或者让系统自动识别类型

sudo mount /dev/sdb1 /mnt/usb

开机自动挂载(可移除设备不推荐强制开机挂载)

对于U盘/移动硬盘,建议加nofail参数(设备不在时不阻止开机):

UUID=XXXX-XXXX/mnt/usbexfatdefaults,uid=1000,gid=1000,nofail00

三、图形界面自动挂载

如果不想手动挂载,Nautilus(GNOME文件管理器)会在插入设备时自动挂载,左侧出现设备图标,点击即可访问:

·挂载点路径:/media/用户名/卷标名/(如 /media/feng/Windows_D/)

·弹出(卸载):右键 → 弹出,或点击侧边栏图标旁的弹出按钮

对于双系统内置硬盘,Nautilus 也能识别,但需要注意 Windows 快速启动的问题(同上)。

四、格式化和文件系统建议

如果你有一块新硬盘或想重新格式化,该选哪种文件系统?

使用场景

推荐格式

理由

只在Linux内部使用

ext4

Linux原生,性能最好,支持日志

Linux +   Windows 共享数据

NTFS

Windows和Linux都能读写,支持大文件

U盘/SD卡(跨系统传文件)

exFAT

最通用,Windows/Linux/macOS/电视/相机均支持

树莓派/嵌入式设备

ext4 /   FAT32

FAT32兼容性最广,但单文件≤4GB

格式化命令:

#格式化为NTFS

sudo mkfs.ntfs -f /dev/sdb1

#格式化为exFAT

sudo mkfs.exfat /dev/sdb1

#格式化为ext4

sudo mkfs.ext4 /dev/sdb1

⚠️注意:格式化会清空所有数据!务必确认设备名(lsblk)再执行,不要搞错 sda(系统盘)和 sdb(外接盘)!

五、Wine 游戏放在 NTFS 分区上能跑吗?

💡提示:这是之前评论区读者提到的问题,顺便在这里补充说明。

可以,但有一个权限问题:

NTFS 分区挂载后,所有文件都显示为 -rwxrwxrwx(全权限),但这是 NTFS 驱动"虚报"的——实际上 Linux 无法对 NTFS 文件单独设置执行权限。

对 Wine 的影响:

启动方式

是否受影响

wine   /mnt/windows_d/game/game.exe(命令行)

✅ 正常,Wine绕过Linux执行权限检查,直接读取NTFS文件

双击 .exe文件

⚠️可能失败,取决于文件管理器和桌面关联

通过 Lutris /   Bottles 启动

✅ 正常,管理器绕过权限检查

建议:游戏放 NTFS 分区完全可行,使用命令行或 Lutris/Bottles 来管理和启动。如果游戏需要频繁写文件(存档、缓存),建议先测试写入是否正常(touch /mnt/windows_d/test.txt)。

常见报错速查

报错现象

原因

解决方法

mount: /mnt/xxx:   can't read superblock

文件系统损坏

ntfsfix /dev/sdXX(NTFS)或 fsck.exfat /dev/sdXX(exFAT)。ntfsfix  只能修复部分简单问题,如果无效,需进入Windows运行   'chkdsk /f'。

Windows is   hibernated, refused to mount

Windows未完全关机(快速启动)

关闭Windows快速启动;临时用 ntfsfix

Read-only file   system

NTFS处于只读模式(快速启动或驱动问题)

同上

mount: unknown   filesystem type 'ntfs'

ntfs-3g未安装

sudo apt install   ntfs-3g

mount: unknown   filesystem type 'exfat'

exFAT驱动未安装

sudo apt install   exfat-fuse exfatprogs

挂载后文件无法写入,权限被拒

uid参数未设置

fstab加 uid=1000,gid=1000

系统启动变慢/卡在启动画面

fstab配置错误(设备不存在时卡死)

加 nofail参数;或启动时按 e进grub临时修改

NTFS分区挂载为只读,ntfsfix无效

磁盘有坏块或分区表问题

进Windows运行 chkdsk /f修复后再挂载

快速挂载命令速查表

操作

命令

查看所有磁盘分区

lsblk -f

查看磁盘详情

sudo fdisk -l

获取分区UUID

sudo blkid   /dev/sdXX

创建挂载点

sudo mkdir -p   /mnt/目录名

挂载NTFS(ntfs-3g)

sudo mount -t   ntfs-3g /dev/sdXX /mnt/目录名

挂载NTFS(内核驱动,22.04+)

sudo mount -t ntfs3   /dev/sdXX /mnt/目录名

挂载exFAT

sudo mount -t   exfat /dev/sdXX /mnt/目录名

卸载分区

sudo umount /mnt/目录名

测试fstab是否正确

sudo mount -a

NTFS修复工具

sudo ntfsfix   /dev/sdXX

exFAT检查

sudo fsck.exfat   /dev/sdXX

写入测试

touch /mnt/目录名/test.txt

实战练习

按顺序操作,完整走一遍NTFS挂载流程:

# 1. 插入U盘或外接硬盘,查看设备名

lsblk -f

# 2. 确认文件系统类型(NTFS/exFAT/ext4)

# 根据 lsblk -f 输出找到FSTYPE 列

# 3. 创建挂载点

sudomkdir -p /mnt/mydata

# 4. 临时挂载(把 sdb1 替换成你实际的设备名)

sudo mount -t ntfs-3g /dev/sdb1 /mnt/mydata

# 5. 验证挂载成功、可以读取

ls /mnt/mydata

df -h | grep mydata

# 6. 写入测试

ls -la#查看一下目录文件,确认读写权限,避免因快速启动导致测试失败困惑。

touch/mnt/mydata/test_linux.txt

ls/mnt/mydata/test_linux.txt

# 7. 获取UUID(准备写入fstab)

sudo blkid /dev/sdb1

# 8. (可选)卸载

sudo umount /mnt/mydata

小结

要点

说明

NTFS驱动

Ubuntu   22.04+ 用内核ntfs3(快)或ntfs-3g(稳),二者均可

exFAT驱动

Ubuntu   22.04内核内置,安装exfatprogs即可

临时挂载

mount -t ntfs-3g   /dev/sdXX /mnt/目录即可

永久挂载

写入 /etc/fstab,用UUID而不是设备名

最大坑

Windows快速启动!关掉它,NTFS只读问题80%消失

移动设备fstab

加 nofail参数,防止设备不在时卡死启动

下篇预告:我们讲Linux下高分屏的缩放问题——字太小看不清,该怎么设置。

最新文章

随机文章