如何挂载Windows分区至Linux:新手到高手的完整指南
📖 目录导读
- 为什么需要挂载Windows分区? —— 理解跨系统数据共享的价值
- 前期准备:确认分区与工具 —— 检查磁盘、安装必要驱动
- 手动挂载Windows分区(NTFS/FAT32) —— 一步步命令行操作
- 自动挂载:让Linux开机即读Windows盘 —— 修改fstab永久配置
- 常见问题与解决方案 —— 挂载失败、中文乱码、权限错误怎么办?
- 问答环节 —— 提炼核心疑问,一次讲透
为什么需要挂载Windows分区?
许多Linux用户采用双系统(Windows + Linux)工作流,你可能有这样一个场景:在Windows下下载的文档、图片或游戏存档,重启进入Linux后发现无法直接访问,这是因为Linux默认不识别Windows的NTFS或FAT32文件系统。

挂载(Mount) 本质上是将Windows分区“接入”Linux的目录树,让Linux能像读取本地文件夹一样读取Windows磁盘内容,这样做能避免反复重启切换系统,大幅提升工作效率。
前期准备:确认分区与工具
1 查看磁盘分区信息
在Linux终端输入:
sudo fdisk -l
或更友好的版本:
lsblk
你会看到类似输出:
/dev/sda1 * 2048 409600 NTFS Windows恢复环境
/dev/sda2 409600 4096000 NTFS Windows C盘
/dev/sda3 4096000 5000000 NTFS D盘数据分区
记下你希望挂载的分区设备名(如 /dev/sda2 或 /dev/nvme0n1p3)
2 安装必要驱动(NTFS-3G)
大多数现代Linux发行版自带NTFS支持,但老系统或精简版可能缺失:
# Debian/Ubuntu sudo apt install ntfs-3g # Fedora/RHEL sudo dnf install ntfs-3g # Arch Linux sudo pacman -S ntfs-3g
FAT32/FAT16通常无需额外驱动。
手动挂载Windows分区
1 创建挂载点
挂载点是Linux中的一个空目录,用于访问分区内容,例如挂载到 /mnt/windows_c:
sudo mkdir -p /mnt/windows_c
2 执行挂载命令
sudo mount -t ntfs-3g /dev/sda2 /mnt/windows_c
参数说明:
-t ntfs-3g:指定文件系统类型(FAT32使用vfat)/dev/sda2:你的Windows分区设备名/mnt/windows_c:挂载点
3 验证挂载
ls /mnt/windows_c
你会看到熟悉的 Users, Program Files, Windows 等文件夹,若出现乱码,则需添加编码参数(见第5节)。
4 卸载分区
用完记得安全卸载:
sudo umount /mnt/windows_c
自动挂载:让Linux开机自动读取Windows盘
手动挂载每次重启后失效,要想永久挂载,需修改系统的文件系统表 /etc/fstab。
1 获取分区的UUID(推荐)
使用UUID而非设备名,因为设备名可能因磁盘顺序变化而改变:
sudo blkid /dev/sda2
输出示例:
/dev/sda2: UUID="7A8B9C0D1E2F" TYPE="ntfs" PARTUUID="12345678-01"
记下 UUID="7A8B9C0D1E2F" 部分。
2 编辑fstab文件
用你熟悉的编辑器打开:
sudo nano /etc/fstab
在文件末尾添加一行:
UUID=7A8B9C0D1E2F /mnt/windows_c ntfs-3g defaults,uid=1000,gid=1000,umask=022,locale=zh_CN.UTF-8 0 0
参数解读:
defaults:使用默认挂载选项uid=1000,gid=1000:将文件所有者设为你的用户(用户ID 1000通常是第一个普通用户),避免权限不够umask=022:赋予读写权限(022表示所有者rwx,组和其他用户r-x)locale=zh_CN.UTF-8:解决中文文件名乱码- 末尾两个
0 0:分别表示不做dump备份、不检查文件系统错误
3 测试fstab配置
在保存前,先测试挂载是否正常:
sudo mount -a
若无错误提示,说明配置正确,重启后分区将自动挂载。
常见问题与解决方案
❌ 问题1:挂载后中文文件名显示为乱码
原因:挂载时未指定正确的字符编码。
解决:手动挂载时添加 iocharset=utf8 或 locale=zh_CN.UTF-8:
sudo mount -t ntfs-3g /dev/sda2 /mnt/windows_c -o locale=zh_CN.UTF-8
❌ 问题2:提示“permission denied”或“只读文件系统”
原因:Windows启用了快速启动(Fast Startup)或休眠(Hibernation),导致文件系统处于“非干净”状态。 解决方法(二选一):
- 在Windows中禁用快速启动:进入Windows电源选项 → 禁用“快速启动”,然后正常关机。
- 强制读写挂载(不推荐长期使用):
sudo mount -t ntfs-3g /dev/sda2 /mnt/windows_c -o remove_hiberfile
此命令会删除Windows休眠文件,请确保Windows已完全关机。
❌ 问题3:挂载后Windows系统分区无法写入
原因:Windows系统分区(C盘)可能带有“系统保护”属性。 解决:在Windows中取消C盘的“仅限于读取”属性,或仅挂载数据盘(D/E盘)进行读写,系统盘保持只读模式更安全。
❌ 问题4:fstab配置后开机卡住或无法进入桌面
可能原因:分区UUID写错、挂载点目录不存在、文件系统损坏。
急救方案:进入恢复模式后,用 mount -o remount,rw / 重新挂载根目录,然后注释掉或修改错误行。
问答环节
Q1:挂载后,Linux下修改的文件Windows能识别吗?
A:只要挂载时使用标准的ntfs-3g驱动,修改会直接写入磁盘,Windows能正常读取,但注意Linux的权限系统(如文件所有者、执行权限位)在Windows下可能无法保留。
Q2:FAT32分区挂载方式相同吗?
A:基本一致,只需把文件系统类型改为 vfat,并添加 uid=1000,gid=1000 保证全用户可读写。
sudo mount -t vfat /dev/sdb1 /mnt/usb -o uid=1000,gid=1000,umask=000
Q3:如何在桌面环境直接挂载?
A:大多数Linux桌面(GNOME、KDE、XFCE等)在文件管理器中单击Windows分区即可自动挂载,位置通常在“其他位置”或侧边栏的“设备”列表,自动挂载点位于 /media/用户名/分区标签。
Q4:挂载后无法删除Windows中的文件怎么办?
A:通常是因为Linux用户没有Windows文件的所有权,有两种方式:
- 在挂载时使用
uid=你的用户名,让所有文件归属为你。 - 或者用
sudo rm -rf强制删除(请谨慎操作,避免误删系统文件)。
Q5:双系统下,C盘被Windows标记为“脏”分区怎么办?
A:在Windows中完整启动一次并正常关机(不是休眠或快速启动),然后运行 chkdsk /f 检查修复,在Linux中可尝试:
sudo ntfsfix /dev/sda2
注意:ntfsfix仅修复元数据,无法代替Windows的chkdsk。
最佳实践建议
- 数据盘与系统盘分开:将个人数据存在D/E盘,C盘保持只读挂载,避免误删Windows系统文件。
- 优先使用UUID:设备名(
/dev/sda2)可能因磁盘序号改变,UUID更稳定。 - 备份fstab:修改前备份
/etc/fstab:sudo cp /etc/fstab /etc/fstab.bak。 - 测试再重启:每次修改后执行
sudo mount -a验证,再重启。
通过以上步骤,你应该能彻底掌握Windows分区在Linux下的挂载技术,遇到具体错误时,请先检查 dmesg | tail 输出日志,或访问Ubuntu中文论坛、Arch Linux Wiki获取更深入帮助。