[ 已解决 ] 无法挂载 Windows 分区及无法进入 Windows 8.1 系统

以前都是看贴,这次的问题谷歌都找不到,于是第一次发帖求助。

日常惯用 Windows 系统(win8.1 x64), 但每个月都会进 openSUSE 13.1 更新一下。今天更新之后,重启进入 Windows 系统,转圈时就提示错误 Critical Service Failed, 无法进入 win8.1。于是重又进入 openSUSE 准备谷歌一下解决方案,这时突然发现原本 goagent 所在的 Windows 分区 D 盘无法挂载(提示 unclean partition,百度之后了解到是 win8.1 快速启动 Cache 导致的无法挂载)。在我重启之前,这个 D 盘一直是可以挂载并从未出现过这个问题的。同时发现 Windows 的系统分区 C 盘也无法挂载,但其余两个 Windows 分区 F 盘和 G 盘均可挂载。这四个 Windows 分区均为 NTFS 格式。

现在我的问题是:

  1. 是不是在我更新 openSUSE 时的那次运行挂载了 D 盘(开 goagent 使用谷歌),对 Windows 分区产生了破坏导致现在无法进入 Windows 系统?
  2. 现在有没有办法修复 Windows 分区 C 盘和 D 盘使我能够再次进入 Windows 系统?
  3. 如果无法修复并进入 Windows 系统,怎么删除 Windows 系统并重装?

恳请赐教。

@iakuohz93

  1. 你是否在使用 g0agent 的过程中往 D 盘写了数据。包括但不限于缓存。
  2. 手动挂载提示什么错误

Sent from my iPhone 5s using Tapatalk

回复:

  1. 我的确改动了 goagent 的 proxy.ini 文件内容,在运行 goagent 的时候是否产生了缓存?

  2. 提示如下:

The disk contains an unclean file system (0, 0). Metadata kept in Windows cache, refused to mount. Failed to mount ‘/dev/sda5’: Operation not permitted The NTFS partition is in an unsafe state. Please resume and shutdown Windows fully (no hibernation or fast restarting), or mount the volume read-only with the ‘ro’ mount option.

另:之后第二天我制作了一个 win8 系统的恢复 U 盘,通过初始化设置把 win8 系统盘恢复出厂,现在可以进入 Windows 系统了,在 openSUSE 里可以挂载 C 盘和 D 盘了,但我连读取 Windows 分区文件都不敢了 - -。

没用过 win8,不过看着 cache 啥的,难道就没有相关的工具清理 cache 非得把系统干掉?

@iakuohz93

那问题就很清楚了:

  1. Windows 8.1 默认是启动了快速启动(fast startup)功能的,会缓存它关机的那个时刻全部使用中磁盘的元数据(metadata),并不算完全关机。即:Windows 8.1 默认情况下即使关机,它的 NTFS 盘还是在「使用中」的。
  2. Linux 下提供 NTFS 支持的程序叫做 ntfs-3g,这个程序是对 NTFS 磁盘格式逆向工程得来的(NTFS 是微软的私有格式,并未开放其原理和实现)。众所周知的问题就是它不能操作「使用中」的 NTFS 磁盘,会导致数据丢失或磁盘损坏,为什么我就不说了。

你上次关机的时候 C 盘肯定是在使用的,而 D 盘估计你也没有退出 g0agent 直接就关机了。

可以在 Windows 下以管理员身份运行

powercfg /h off

把快速启动功能关掉。

另外建议你在 Linux 磁盘里重新弄一套 g0agent。NTFS 磁盘在 Linux 下最好只读取不写入。

1赞

进不了 windows 系统又挂载不了 windows 分区,怎么从 opensuse 清理 windows 的 cache 呢?

理解了,多谢指教。