由于休眠,无法挂载Windows(NTFS)文件系统。

每当我启动Ubuntu时,都会收到一个消息,说无法挂载我的Windows分区,我可以选择等待、跳过或手动挂载。
当我尝试通过Nautilus进入我的Windows分区时,会收到一条消息,说这个分区已经休眠,需要进入文件系统并正确关闭它,我以前没有遇到过这个问题,所以不知道为什么会发生这种情况。
这是我的分区表,如果需要更多数据,请告诉我。
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1            2048    20000767     9999360   83  Linux
/dev/sda2        20002814   478001151   228999169    5  Extended
/dev/sda3   *   478001152   622532607    72265728    7  HPFS/NTFS/exFAT
/dev/sda4       622532608   625141759     1304576   82  Linux swap / Solaris
/dev/sda5        20002816   478001151   228999168   83  Linux

你是将它休眠还是在看到错误消息之前关闭Windows?我也有这个问题,但我确信我关闭的是Windows 8 Release Preview而不是将其休眠。你使用哪个版本的Windows? - hgajshb
23个回答

关于您所看到的Nautilus对话框,已经提交了一个错误报告,因为它推荐了一个可能导致数据丢失的危险选项。请不要在此对话框中运行该命令,除非您想要删除保存的Windows会话并可能丢失未保存的工作。
解释:为什么Linux无法打开休眠的Windows分区:
您看到此错误是因为您将Windows休眠而不是正常关闭(在较新版本的Windows中,休眠可能是默认选项)。
休眠会将当前状态信息保存到硬盘,然后关闭计算机。
关闭计算机会在关闭之前关闭所有程序并结束所有正在运行的进程。
当您通过休眠方式关闭Windows时,实际上是暂停系统并保存所有信息(保存在一个名为hiberfil.sys的大文件中)。这样,当您从休眠中恢复时,所有应用程序和文件都将与您离开时完全一样。它还在hiberfil.sys中设置了一个标志,以让其他操作系统知道Windows处于休眠状态。
在Windows(ntfs)分区处于休眠状态时对其进行更改可能是危险的-它可能导致Windows无法从休眠中恢复或在恢复后崩溃。因此,挂载(打开)该分区的工具(ntfs-3g)如果检测到休眠标志,则不会以读写模式挂载它。因此,默认的文件浏览器Nautilus将无法自动打开该分区,因为它试图以读写模式打开它。

Windows的解决方法:

有三种方法可以挂载休眠的Windows分区:

1. 在Windows中启动并完全关闭系统。然后重新启动Ubuntu,当您在Nautilus中打开分区时,它将自动以读写模式挂载。请注意,“关机”选项可能不是默认显示在开始菜单中的选项。您可能需要点击旁边的按钮以查看更多选项。 2. 手动以只读模式挂载文件系统。 - 使用以下命令检查是否在/media文件夹中有用于挂载Windows分区的挂载点(文件夹): ls /media - 如果您没有看到用于Windows分区的文件夹,则应使用以下命令创建一个: sudo mkdir /media/windows - 接下来,使用以下命令将分区以只读模式挂载到此文件夹上: mount -t ntfs-3g -o ro /dev/sda3 /media/windows 请注意,如果您的挂载点被称为其他名称,请更改/media/windows
3. 现在,您可以使用Ubuntu中的任何程序查看/打开Windows分区中的文件。但是,由于它处于只读模式,您将无法向分区写入或修改任何文件。
4. 如果您需要以读写模式挂载分区,但无法或不愿意启动Windows并完全关闭它,还有第三个选择。但是,这里不包括该选项,因为它会完全删除hiberfil.sys文件,并导致您丢失所有未保存的休眠中的Windows程序中的信息。以下是关于使用此选项的man ntfs-3g引用: remove_hiberfile 与只读挂载不同,如果NTFS卷处于休眠状态,则拒绝读写挂载。您需要恢复Windows并正确关闭它,或者使用此选项将删除Windows休眠文件。请注意,这意味着保存的Windows会话将完全丢失。请自行承担使用此选项的责任。

解决方案(仅适用于Windows 8和10):

Windows 8中有一个名为快速启动的新功能。如果启用了此功能(默认情况下是启用的),当您选择关机时,Windows 8实际上并不完全关闭。相反,它进行了一种“混合关机”。这类似于休眠;它可以加快启动Windows 8的速度。因此,您需要禁用此功能才能正确关闭它,并能够挂载Windows分区。要做到这一点,请进入您的Windows 8并执行以下操作:

注意:禁用快速启动很可能会使您的Windows 8启动时间变长。没有“确切”的数字,但假设您启动Windows 8需要10秒钟,禁用此功能后将需要50秒钟。

  1. 在小图标视图中打开控制面板,然后点击电源选项。(查看截图1
  2. 点击选择电源按钮的功能。(查看截图2
  3. 点击更改当前不可用的设置。(查看截图3
  4. 取消选择打开快速启动(推荐)。(查看截图4

点击保存更改。现在,关闭Windows 8并重新启动Ubuntu。

如果你仍然无法挂载而出现错误,可能需要完全关闭休眠功能。打开提权的命令提示符(右键点击快捷方式,点击“以管理员身份运行”),然后输入:

powercfg /h off

来源:Windows 8中的快速启动 - 开启或关闭


10对我来说,这些都不起作用。我能够在Ubuntu上挂载Win 8分区的唯一方法是在Windows中按下“重启”,然后启动Ubuntu。 - Yuri Ghensev
3你好,我按照你提到的方法更改了Windows 8.1的座位安排。但不幸的是,我仍然遇到了之前的错误信息。请帮助我解决这个问题。 - herr_azad
3这里有一个链接 http://www.tuxera.com/community/ntfs-3g-manual/#fastrestart 可能会很有用,它建议在Windows上执行命令 powercfg /h off - Rmano
4我已经禁用了"快速启动"选项,我总是通过重新启动Windows引导到Fedora,但它仍然显示"处于不安全状态",还有其他要做的事情吗? - arielnmz
3我遇到了和@arielnmz完全一样的问题。根据“解决方案(仅适用于Windows 8)”,我已经禁用了“快速启动”,但在Ubuntu 14中仍然无法以读写模式挂载它。我可以以只读模式挂载它,但不能以读写模式挂载。有任何想法为什么这对别人有效,但对我无效吗? - Bill The Ape
@arielnmz 我解决了这个问题,除了上述步骤之外,我还执行了一个额外的步骤:powercfg /h off - Bill The Ape
@ShahariaAzam 如果你愿意在这里单独回答并写出你的解决方案,我会给你提供一笔悬赏。 - adempewolff
@adempewolff 我会的。请稍后查看!这是解决方案的独立答案链接:http://askubuntu.com/questions/145902/unable-to-mount-windows-ntfs-filesystem-due-to-hibernation/706054#706054 - Shaharia Azam
谢谢你的解决方案。如果我没有看到你的帖子,我可能会把事情搞砸。 - Fokwa Best
谢谢,它对我有效。我再次进入并点击了“重新开始”。 - Jose Carlos Ramos Carmenates
如果在使用重置按钮后出现消息,那该怎么办呢?是真的需要先加载Windows,还是可以安全地放弃这个标志呢? - Qwertiy
它适用于第二种方法。感谢完美的答案。 - Coca Akat
啊啊啊!我可能早就知道了!我妻子一直在用这台笔记本电脑!当然没有正确关机,让它电池耗尽了。谢谢你拯救了我的晚上。 - Peter Perháč
在这里可以找到关于如何在Windows 10上关闭快速启动选项的详细图形用户界面(GUI)指南:链接。对我有效! - Xiaodong Qi
谢谢朋友,非常有用:powercfg /h off,我又可以访问我的NTFS Windows 10分区中的文件了。 - christianbueno.1
@adempewolff 我喜欢你的回答。在我的情况下,sudo mount -t -ntfs-3g -o ro /dev/sda2 /media/ubuntu/5C04866104863DD0/ 结果显示 mount: unknown filesystem type -ntfs-3g。我正在尝试使用Live CD。 - alhelal
@adempewolff 我这样做是为了获取位于Windows桌面上的文件。我不需要Windows分区中的其他任何内容,而且我的Windows系统已损坏且无法加载。 - alhelal
我以前已经按照这些步骤做过了,最近好老的Windows又把这些设置恢复成开启快速启动了。真是难以置信和令人沮丧。 - Caleb Stanford
我注意到这不仅适用于系统分区,而且适用于我在Windows中挂载的所有NTFS卷。我能以读写模式挂载它们吗?还是说这整个过程对于Windows挂载的每个卷都是至关重要的预防措施? - Llamageddon
除了丢失所有休眠数据之外,删除休眠文件还有其他特别危险的事吗? - Owen
1如果你不怕丢失休眠数据,你可以使用以下命令:sudo mount -t ntfs-3g -o remove_hiberfile /dev/sdxy /mnt - Vladimir S.
我尝试了remove-hiberfile选项,但是出现了`元数据保存在Windows缓存中,拒绝挂载。 无法挂载'/dev/sdc2':操作不允许。 NTFS分区处于不安全状态。请完全恢复并关闭Windows(不要休眠或快速启动),或者使用'ro'挂载选项以只读方式挂载卷。 - James Hirschorn
我真的不记得让我的Windows休眠了,但这确实是解决办法。 - testing_22
“解决方案(仅适用于Windows 8和10)”对我在Windows 11上也起作用了。 - BERA
remove_hiberfile选项对我有用。 - Trismegistos

编辑:这样做可能会产生危险后果,并且Windows可能无法启动或在启动时损坏文件系统。
在终端中使用ntfsfix,即使无法访问Windows。
sudo ntfsfix /dev/sdXY

其中 XY 是分区,例如 a2/dev/sda2)或 b1/dev/sdb1

ntfsfix 修复一些基本的 NTFS 不一致性,重置 NTFS 日志文件,并安排在首次启动进入 Windows 时进行 NTFS 一致性检查。


这是做什么的? - Kaz Wolfe
7稍微解释一下会很好 :-) 当然有man页,但既然你在这里写了,进一步改进一下并解释一下这个命令的作用会很好。 - Jendas
3我尝试过了,但仍然返回“Windows已休眠,拒绝挂载。重新挂载失败:操作不允许”。 - Marco Lackovic
3好的!这应该是被选中的答案... - so.very.tired
21绝对不要这样做。如果你在恢复休眠的Windows会话时这样操作,会导致文件系统损坏。 - psusi
13我同意@psusi的观点:这非常危险,可能导致所有数据丢失,就像这里所描述的那样。 - Fabby
请注意,在运行ntfsfix之前,您应该先卸载/dev/XY - patryk.beza
它对我起作用了。但是修复后,GParted无法挂载。我在/etc/fstab中重新添加了NTFS分区(因为我无法使用它启动时将其删除)。我重新启动了计算机,分区顺利挂载。 - Pierre Thibault
@psusi:这个回答应该被编辑、删除还是只是被投下反对票? - unforgettableidSupportsMonica
我做了这个操作,但是出现了一个错误:“Windows 正在休眠,拒绝挂载。 重新挂载失败:操作不允许。” - Erel Segal-Halevi
有时候这是唯一的选择,当Windows拒绝启动时。除非你有一个Windows恢复光盘并且可以从那里启动chkdsk。 - Dr_Zaszuś
就算不值一提,这是一个解决方案,当一个无法启动的NTFS驱动器拒绝挂载时起作用。系统也关闭了休眠功能,而ntfs-3g的强制、恢复和删除_hiberfile等功能都没有效果。我猜想即使在Windows使用"shutdown /p"命令结束后,附加的驱动器也没有得到很好的处理。 - Grant BlahaErath

如果你想终止休眠的会话,请在终端中运行以下命令(按下 Ctrl + Alt + T 可打开终端)。
sudo ntfsfix /dev/sdXY

其中XY是分区的代号。例如:sda2sdb1

如果你无法进入Win8,这个方法同样适用。


5我不确定在Ubuntu上修复NTFS分区对于休眠快速启动的Windows 8.1来说是否是一个好主意。相反,我从Windows 8.1内部解决了这个问题:powercfg /h off - Bill The Ape
1我做了这个并收到了一个错误消息:“Windows已休眠,拒绝挂载。 重新挂载失败:操作不允许”。 - Erel Segal-Halevi
@BillTheApe但是在我的情况下,我无法再访问我的Windows了。 - ricoms


2这对我来说正是问题所在,从Windows重新启动进入Linux而不是关机是验证这是否是正确解决方案的好办法。下面的ntfsfix解决方案对我无效,而这个方法有效。 - sage88
2在Windows 10上出现了相同的问题。 - Postadelmaga
重启Windows而不是关机解决了我的问题。ntfs-3g的标志remove_hiberfile没有起作用。 - bogec
你真的查看过是否取消了休眠吗? - Brian

我的解决方案是在/etc/rc.local中调用一个mntwindows脚本。该脚本将检查是否处于休眠状态,并以只读方式挂载。为了确保脚本始终可被调用,我将其放置在/bin目录下,并标记为可执行。脚本的内容如下:
sudo mount /dev/sda[Partition Number] /media/[Any existing folder name]

#Mounts Windows
if [ $? -eq 14 ]
then
  echo "Windows is sleeping, I'm mounting as read-only"
  sudo mount -o ro /dev/sda[Partition Number] /media/[Any existing folder name]
fi

很棒的解决方案。非常感谢。它对我在一台意外关机时被误删的古老eMachines E442上起了作用。+1 - Ian Lewis
2我相信没有必要在/etc/rc.local中创建单独的挂载脚本。对我来说,在/etc/fstab中的一行就解决了问题:/dev/sdaX /media/[mount-folder] ntfs-3g nofail,nodev,errors=remount-ro 0 0。起初,我以为errors=remount-ro是在Windows休眠时自动将驱动器挂载为只读的选项。但经过测试,在Linux Kernel 5.3+上,即使没有这个选项,它也能正常工作。 - ManSamVampire

Windows 8增加了一个“快速启动”功能。它确实可以在关机后更快地启动Windows,但副作用是将文件系统置于休眠状态。
要在Win 8中禁用此功能,请在设置中搜索“选择电源按钮的操作”,点击盾牌以解锁复选框,然后您可以从那里启用或禁用快速启动。
前面提到的注意事项仍然适用,即您希望真正关闭Windows而不是重新启动以便从Linux轻松访问。

我在我的Windows 8.1中禁用了“快速启动”。这没有帮助。我只能挂载为只读。这很奇怪。 - Bill The Ape

只是为了完整起见,这里有另一个命令可以将分区挂载为只读(对于休眠的Windows分区非常有用):
udisksctl mount --block-device /dev/sda3 --options ro

如果您有权限使用文件管理器挂载分区(例如,如果您是管理员),那么您应该能够在不使用sudo的情况下运行此命令。

这在最新的Ubuntu版本中可用(如13.04和13.10)。

如果udisksctl不可用,那么可能会有udisks。它有不同的参数,请查阅手册页。


1我喜欢这个! :D - Jeggy
1如果你不想重新启动Windows,这是一个很好的解决方案。 - Goddard
没错,这对我有效!我的Windows无法启动,所以这是唯一的解决办法 :) - jonsno

对于Windows 10,我找到了如何关闭快速启动的方法。我录制了一个屏幕演示来解决这个问题。打开控制面板 > 硬件和声音 > 电源选项 > 系统设置,然后点击“更改当前不可用的设置”,取消勾选“启用快速启动”。来源:http://blog.shahariaazam.com/fast-startup-turn-on-or-off-in-windows-10

变得更简单了(Windows 8+

在重新启动到Ubuntu操作系统之前,只需强制关机或者说完全关机您的Windows系统。

那我该怎么做呢?

非常简单:Shift + 关机

即,在Windows中点击关机按钮时按住Shift键,将其完全关闭。

当然,这会使您的Windows下次启动时稍微慢一些。:)


在Windows 8上这是正常的。 你需要通过cmd关闭Windows 8,输入shutdown /f /s /t 0然后它可能会起作用。

3我相信使用 shutdown /s /t 0 就足够了...没必要使用强制方式。 - Matthew Sainsbury
@Matt 我尝试了 shutdown /s /t 0,但是没有起作用。尽管在此之前我已经禁用了快速启动。我只能以只读模式挂载那个NTFS分区。 - Bill The Ape
@root shutdown /f /s /t 0也不起作用。自从这个答案发布以来,Ubuntu 14.04或Windows 8.1中肯定有些变化。 - Bill The Ape
1@BillTheApe 我继续在 Arch Linux 上使用这种技术,它是一个滚动发布的系统。我谦虚地建议你的问题可能出在其他地方。 - Matthew Sainsbury
2@Matt 你是对的。问题确实出在其他地方:禁用快速启动 + shutdown /f /s /t 0 对于Windows 7来说已经足够了。但对于Windows 8.1来说,这已经不再足够。除了Windows 7所需的步骤之外,Windows 8.1还需要另外一步:powercfg /h off - Bill The Ape