解决Linux无法读写U盘中的NTFS问题
1 问题描述
由于笔者因为某些需要把Windows
装在了U盘
上面(在这里建议一下如果有需要请使用固态U盘
),在Linux
下挂载时,能读取但并不能写。
2 尝试的解决方案
2.1 remount
一开始是因为没有读写权限,所以就重新挂载,命令如下:
mount -o rw,remount /dev/sda2
(/dev/sda2
是因为笔者的U盘
大小64G
,把Windows
直接装在了里面,默认分了两个分区,一个是启动分区/dev/sda1
,一个是系统分区/dev/sda2
)
但是还是不能写入。
2.2 ntfs-3g
首先安装了ntfs-3g
,然后再次尝试挂载:
sudo mount -t ntfs-3g /dev/sda2 /run/media/point
sudo ntfs-3g /dev/sda2 /run/media/point
还是不能写入。
2.3 ntfsfix
ntfsfix
能修复常见的错误以及NTFS
分区不一致的问题,尝试了一下:
sudo ntfsfix /dev/sda2
还是不能写入。
3 最终解决方案
再次查了一下资料(戳这里)发现这个可能是因为Windows
的快速启动导致的:
把快速启动关了就行。
但是这U盘
里面的快速启动貌似关闭不了。。。
最后在StackExchange
(戳这里)上找到了答案:
核心是remove_hiberfile
这个挂载选项,同时也查了一下man
:
在启动Linux
时,Windows
是有可能处于hibernate
状态的,该状态下是不能写的并且强制只读挂载,加入remove_hiberfile
参数后,去除了hibernation file
,这样在笔者的环境上测试就能正常写入了,但是要注意使用该参数可能会导致保存的Windows session
数据全部丢失:
所以最终挂载命令如下:
sudo ntfs-3g -o remove_hiberfile /dev/sda2 /run/media/point
测试了一下Windows
并没有任何损坏,因此如果出现上述的问题可以尝试加上remove_hiberfile
参数。