由于hibernate,无法装入Windows(NTFS)文件系统

每当我启动Ubuntu时,我都会收到一条消息,说它无法挂载我的Windows分区,我可以选择等待,跳过或手动挂载。

当我尝试通过Nautilus进入我的Windows分区时,我收到一条消息,说这个分区已经hibernate,我需要进入文件系统并正确关闭它,我做的事情没有问题,所以我不知道为什么会发生这种情况。

这是我的分区表,如果需要更多数据,请告诉我。

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 

已经提交了一个关于Nautilus对话框的错误 ,因为它建议使用可能导致数据丢失的潜在危险选项。 除非您要删除已保存的Windows会话并且可能丢失未保存的工作,否则请不要在此对话框中运行该命令。

说明:为什么Linux无法打开hibernate的Windows分区:

您看到此错误是因为您hibernate了Windows而不是以正常方式关闭它(在较新版本的Windows中,hibernate可能是默认选项)。

  • hibernate将当前状态信息保存到硬盘,然后关闭计算机。
  • 在关闭计算机电源之前,关闭计算机会关闭所有程序并结束所有正在运行的进程。

当你通过hibernate来关闭Windows时,你实际上是暂停系统并保存所有这些信息(进入一个名为hiberfil.sys的大文件)这样当你从hibernate状态恢复时,所有的应用程序和文件都将是你离开的方式他们。 它还在hiberfil.sys设置了一个标志,让其他操作系统知道Windows已经hibernate。

在Windows( ntfs )分区处于hibernate状态时对其进行更改可能会很危险 – 它可能导致Windows无法从hibernate状态恢复或在恢复后崩溃。 因此,如果看到hibernate标志,则挂载(打开)分区的工具( ntfs-3g )将不会以读写模式挂载它。 因此,默认文件浏览器Nautilus将无法自动打开此分区 – 因此您看到的错误消息 – 因为它试图以读写模式打开它。

所有Windows版本的解决方法:

安装hibernateWindows分区有三种方法:

  1. 启动进入Windows并通过完全关闭系统来关闭系统电源。 然后,您可以启动回Ubuntu,当您在Nautilus中打开它时,分区将自动以读写模式挂载。 请注意,默认情况下,“关机”选项可能不是开始菜单中显示的选项。 您可能需要单击它旁边的按钮才能看到更多选项。

  2. 以只读模式手动挂载文件系统。

    • 使用以下命令检查文件夹/media中的Windows分区是否有挂载点(用于挂载分区的文件夹):

      ls /media

    • 如果没有看到Windows分区的文件夹,则应使用以下命令创建一个文件夹:

      sudo mkdir /media/windows

    • 接下来,使用以下命令将分区以只读模式挂载到此文件夹:

      mount -t ntfs-3g -o ro /dev/sda3 /media/windows

      请注意,如果您的mountpoint被调用,则应更改/media/windows

    • 现在,您将能够使用Ubuntu中的任何程序查看/打开Windows分区上的文件。 但是,您将无法写入分区或修改任何文件,因为它处于只读模式。
  3. 如果您需要以读写模式挂载分区,并且无法或不愿意启动到Windows并完全关闭它,则有第三个选项。 但是,它不包含在此处,因为它完全删除了 hiberfil.sys并且会导致您丢失已hibernate的Windows程序中所有未保存的信息。 以下是man ntfs-3g关于将用于执行此操作的选项的引用。

     remove_hiberfile Unlike in case of read-only mount, the read-write mount is denied if the NTFS volume is hibernated. One needs either to resume Windows and shutdown it properly, or use this option which will remove the Windows hibernation file. Please note, this means that the saved Windows session will be completely lost. Use this option under your own responsibility. 

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

Windows 8中有一项名为Fast Startup的新function。 如果启用此function(默认情况下),则在选择关闭时Windows 8实际上不会完全关闭。 相反,它会进行“混合关闭”。 这就像冬眠; 它使启动Windows 8的速度更快。 因此,您需要禁用此function才能正常关闭它,并能够安装Windows分区。 为此,请启动Windows 8并执行以下操作:

注意 :禁用快速启动很可能会使Windows 8需要更长的时间才能启动。 没有“确切”的数字,但是假设如果你花了10秒钟启动进入Windows 8,那么在禁用此function后现在需要50秒。

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

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

如果仍然无法安装而不会出现错误,则可能需要完全关闭hibernate模式。 打开提升的命令提示符(右键单击快捷方式,单击“以管理员身份运行”),然后输入:

 powercfg /h off 

来源: 快速启动 – 在Windows 8中打开或关闭

编辑: 可能有危险的后果 ,Windows可能无法启动或破坏文件系统启动时。


即使您无法访问Windows,也请在终端中使用ntfsfix

 sudo ntfsfix /dev/sdXY 

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

ntfsfix修复一些基本的NTFS不一致性,重置NTFS日志文件并安排第一次启动到Windows的NTFS一致性检查。

如果要终止hibernate会话,请在终端中运行此命令(按Ctrl + Alt + T打开终端)

 sudo ntfsfix /dev/sdXY 

其中XY是分区。 例如: sda2sdb1

如果你无法进入Win8,这也有效。

我的解决方案是在/etc/rc.local调用mntwindows脚本。 此脚本将检查hibernate以及hibernate挂载是否为只读。 为了确保始终可以调用脚本,我将其放在/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 

这是因为Windows 8的快速启动function。

临时解决方案是返回Windows并重新启动系统(而不是关闭)。 永久解决方案是禁用快速启动。

您可以使用本指南禁用Windows 8中的快速启动: http : //itsfoss.com/solve-ntfs-mount-problem-ubuntu-windows-8-dual-boot/

Windows 8增加了“快速启动”function。 它确实使Windows在关机后启动得更快,但作为副作用,它最终会使您的文件系统处于hibernate状态。

要在Win 8中禁用此function,请在设置下搜索“选择电源按钮的function”,单击屏蔽以解锁复选框,然后可以从此处启用或禁用快速启动。

前面提到的警告,你想要真正关闭Windows而不是重新启动以便从Linux轻松访问,仍然适用。

对于Windows 10,我想出了如何关闭快速启动。 有一个截屏要解决这个问题。 转到“ 控制面板” >“ 硬件和声音” >“ 电源选项” >“ 系统设置”然后单击“更改当前不可用的设置”并从“打开快速启动”中删除勾选。 资料来源: http : //blog.shahariaazam.com/fast-startup-turn-on-or-off-in-windows-10

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

只是为了完成,这是另一个将分区挂载为只读的命令(对于hibernate的Windows分区很有用):

 udisksctl mount --block-device /dev/sda3 --options ro 

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

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

如果udisksctl不可用,那么也许是udisks 。 它有不同的参数,因此请查看联机帮助页。

  • 启动到windows os ,然后重新启动它。(不关闭)。

  • 在grub菜单中选择ubuntu并启动它。在ubuntu启动后,现在打开ntfs hard drive partition ,它会打开。

根据我的经验,上面的adempewolff流行且有用的答案是必要的,但还不够,允许我安装我的Windows NTFS分区以便用Ubuntu编写。 按照其他地方的指示,我在尝试安装Ubuntu之前关闭了Fast Startup,并且我也在“关闭”菜单上删除了Hibernate选项。

我仍然无法从Ubuntu写入我的Windows分区。

我发现我还必须启动Windows 8.1,启动Windows授权的命令行(右键单击左下角的Windows按钮以轻松获得此选项),允许它通过Windows授权框,然后输入命令:

 powercfg /h off 

您可以使用以下方法查看结果:

 powercfg /a 

进行此更改后,我可以从Ubuntu自由访问Windows 8.1分区,无论我是通过关闭还是重新启动来退出Windows。


我发现我以后能够反转这个并仍然访问分区(但是如上所述,始终保持Fast Startup未经检查,并且当然从不要求Windowshibernate)。 可以预见的是,反转它的命令:

 powercfg /h on 

我假设Windows安装中遗留了一些东西需要通过以这种特殊方式关闭hibernate启动来清除。

据我所知,应该没有理由撤消这样的第一步 – 它可以提供一些额外的安全性来powercfg /h off

有关更多信息,请参阅Windows NTFS处理程序的Ubuntu手册页 。

适用于Windows 8+

您需要禁用“快速启动”function。 引用How-To-Geek:

通过按Windows + X或右键单击“开始”菜单并选择“电源选项”来打开电源选项。 在“电源选项”窗口中,单击“选择电源按钮的function”。

在此处输入图像描述

如果这是您第一次使用这些设置,则需要单击“更改当前不可用的设置”以使“快速启动”选项可用于配置。

在此处输入图像描述

滚动到窗口底部,您会看到“启用快速启动(推荐)”

在此处输入图像描述

取消选中 “快速启动”框。

然后,关闭Windows 10,你应该能够从Ubuntu安装NTFS分区。


从这里采取的How-To-Geek报价。

它变得更加简单(Windows 8 +

只需强制关机,或者你可以说在重启到Ubuntu OS之前完全关闭你的windows系统。

那我该怎么做?

很简单: Shift + Shutdown

i,当您单击Windows中的“ 关机”按钮以完全关闭它时,按住Shift键。

当然它会让你的窗口下次启动速度变慢。 🙂

您可以将它以只读模式挂载对于它,首先必须创建一个目录作为挂载点:

 sudo mkdir /media/*youruser*/newdisk 

稍后,安装驱动器:

 sudo mount -t "ntfs" -ro "uhelper=udisks2,nodev,nosuid,uid=1000,gid=1000,dmask=0077,fmask=0177" "/dev/sda4" "/media/*youruser*/newdisk" 

用您的用户名更改带*单词。 /dev/sda4也可能不同,具体取决于分区是安装Windows 8的分区。

请注意,args值是针对您的特定错误消息采取的,对于其他用户,请使用错误消息,通过-ro更改-o并键入相应的用户名。

另请注意,使用此方法,您无法在Windows驱动器中编辑,编写或创建新文件。

要添加答案,您可以进入Windows 7或Windows 8(W8:这是默认的关机操作,在某种意义上它不是真正的关机),打开具有超级用户权限的命令行并键入powercfg -h off

需要注意的是,Windows计算机根本无法进行hibernate。 但是,您可以在不对其进行手术的情况下安装Windows分区。

这种情况发生的可能性很大,因为您从Windows 8系统启动。 他们所做的就是让你在关闭计算机时真正进入hibernate状态,以便在再次打开计算机时更快启动。

您需要做的是进入Windows 8的“控制面板”部分,导航到电源选项并禁用快速启动选项,这样当您关闭时,您实际上将关闭系统并因此关闭文件在分区上将能够访问和编辑。

@abhishek正确安置,我不仅有ntfs挂载问题,从Windows 8.1重启到Ubuntu后wifi也无法正常工作。 最佳解决方案是在Windows 8.1中关闭快速启动。 转到电源管理并按“选择电源按钮的function” – >更改当前不可用的设置 。 然后向下看窗口,找到一个标志“打开快速启动(推荐)”并关闭。 单击保存更改 ,现在您不会遇到此问题!

我通过删除hiberfil.sys解决了这个问题(在Windows 10中)

 powercfg /h off 

然后把它转回来

 powercfg /h on 

我尝试了第一个答案并且它有效,但是 – 重新启动后问题又回来了

最后,我可以通过遵循Arch Wiki中的配方来解决它:

  • 启动到Windows
  • 作为管理员,请powercfg /h off
  • 关闭Windows

我还将/etc/fstab更改为UUID以引用NTFS分区,在第一次尝试失败后,我没有使用powercfg命令但通过单击GUI禁用它。 不确定,为什么使用UUID应该有所不同(在Wiki中,没有进一步解释)。 但至少它再次起作用。


来源:Arch Wiki( NTFS-3G:保存在Windows缓存中的元数据,拒绝挂载 ):

问题是由于Windows 8中引入的一项称为“快速启动”的function。 启用快速启动后,所有已安装分区的部分元数据将恢复到上次关闭时的状态。 因此,Linux上的更改可能会丢失。 在Windows 8或10下选择“关闭”或“hibernate”时,任何NTFS分区都会发生这种情况。但是,选择“重新启动”离开Windows显然是安全的。

要启用写入其他操作系统上的分区,请确保禁用快速重新启动。 这可以通过以管理员身份发出命令来实现:

  powercfg /h off 

您可以在Control Panel > Hardware and Sound > Power Options > System Setting > Choose what the power buttons do上查看当前设置。 Turn on fast startup的框应该被禁用或丢失。

如果即使遵循本指南也无法挂载NTFS分区,请尝试在/ etc / fstab中使用UUID而不是设备名称来表示所有NTFS分区。 这是一个fstab示例 。

Windows 10和Windows 8都很有趣地关闭了。 删除Windows中的快速启动选项,如果使用Windows 10,请确保从Windows 8重新安装看起来像房子的主页选项。然后使用它来关闭,而不是重新启动,当您想要进入Linux时,或者错误将继续弹出,在Linux中你无法访问一个驱动器……或者我的系统上有多个Windows驱动器……因为我有一个驱动器用于在Linux和Windows之间共享文件。

我解决了我的问题

 $ sudo apt-get install ntfs-config 

 $ sudo mount -o rw /dev/sdXY 

用你的Windows分区替换sdXY,例如sda3