9879与硬盘

发布于

从 13 号装 windows 10  9879,让硬盘疑似挂掉,至今 30 号,终于终结了这场噩梦。

换了 SSD 之后,买了硬盘盒,但 SATA 转成 USB 口之后,就算在 Linux 下也都不出来,完全不认这玩意,找台台式机,接 SATA,在 LiveCD 下又能读出来了。于是坚持不懈的每天跟踪此问题,终于有人提到是 PUIS 的问题了,但还是没有解决方法。还有跑到微软论坛 发帖 ,果断无解。但还是每天去翻别人的答案。最终找到了彻底解决的方法:

简言之:硬盘支持 PUIS,但 bios 等识别不了,用一个叫 hdparm 的工具来关掉 PUIS,于是一切太平。

下面全部为引用:

表现:

故障硬盘丢失表现为任意电脑的BIOS、UEFI均不认故障硬盘或不通电,特定版本PE、Linux、Clove、第三方引导工具、热插拔、正确的Intel RST驱动有助于识别故障硬盘。 通过特定版本PE、Linux、Clove、第三方引导工具、热插拔、Intel RST驱动只能临时识别故障硬盘,重启后仍可识别,关机后失效。故障硬盘换到另一台电脑上不通过这些方法亦可能无法识别。

注:

  1. 正常硬盘能被BIOS、UEFI直接识别。
  2. 有升级到9879的用户,其硬盘可见,但分区表损坏或容量变为128GB,不在本帖汇总范围。但问题原因可能跟硬盘丢失是一致的,也可能是因为无响应的磁盘清理。

分布:

发生硬盘丢失的几乎都是机械硬盘,SSD未确认有丢失。 品牌无差异:截至目前,反馈的故障品牌有日立、西数、希捷,型号有稳定型号也有故障门型号。 BIOS+MBR、EFI+GPT均有出现。 最近一年反馈硬盘丢失的大部分是升级或安装Windows Technical Preview build 9879的用户。

目前反馈有效的临时找回硬盘的方案有:

任意电脑,关机后失效:

  • A、特定版本PE,找到故障硬盘后热重启;
  • B、Linux磁盘修复工具,运行一遍后热重启;
  • C、正常硬盘进入操作系统后,再插入故障硬盘(通过移动硬盘盒的请注意电流是否足够); 双硬盘的任意电脑,可以直接开机:
  • D、在正常硬盘上安装NTLDR或BOOTMGR以外的引导工具,如Clove,故障硬盘作为从盘; 双硬盘的Intel主板:
  • E、活动分区与操作系统安装在正常硬盘上,故障硬盘作为从盘,安装相符的Intel RST驱动。

注:楼主测试过的方案有 A、B、C,A 方案在 RS780M 主板上基于 2003、XP 的 PE 可用,基于 7、8、10 的 PE 不可用,在 nForce4 主板上均不可用,C 方案在 nForce4 主板上不可用

目前反馈有效的永久找回硬盘的方案有:

临时找回硬盘,进入 win10 ,关闭快速启动。提供方案的cui5853002,其电脑为单硬盘,通过Linux磁盘修复后,安装RST驱动,关闭快速启动,完全解决故障。注:楼主不能装RST驱动,只做前后两步,关机还是不行。 cui5853002补充反馈:关机还是失败

无效的尝试:

删除活动分区、重建MBR、PBR,重建分区表。有用户反馈有效,楼主测试无效。楼主的硬盘现在只有0扇区有数据,已重建,1-2048扇区以及100MB的保留分区已清零,故障未消失。不建议新手尝试。 关闭快速启动、关闭休眠、关闭混合睡眠、替换bootmgr。

最后:

可以确定,硬盘丢失的故障绝对不是因为用户操作不当。 此轮故障并未波及硬盘数据,可以通过前述临时方案找回数据,也可以等待微软出修复工具。 找到硬盘后只要不关机,随便重启硬盘都还在,这一点放在过去显得很扯淡,但现在确实发生了。

2014.11.26更新:

故障原因:

本次故障门是因为9879无视或没有正确识别电脑是否支持,直接开启了机械硬盘的PUIS (Power-up in standby, 待机上电) 功能。PUIS需要BIOS与硬盘同时支持。 如果硬盘启用PUIS,但系统的BIOS不支持PUIS,那么硬盘驱动器将会因为不通电而无法被系统检测,或者是检测到的容量大小为0。(来源:Michal Kozal)

SSD没有机械旋转部分,不存在PUIS功能,所以未被波及。

待机上电 (PUIS, Power-up in standby) 或 电源管理模式 2 (PM2,Power Management 2 Mode,西部数据特有)是一种SATA或PATA硬盘功能,其可以阻止硬盘驱动器自动旋转,并且允许其稍后在一个ATA标准的命令下启动。通常,只有硬 盘驱动器需要省电的时候,才会启动这项功能。

PUIS需要BIOS的支持。 如果 PM2 在驱动器上启动,但是系统的BIOS不支持这种功能,那么硬盘驱动器可能不会被系统检测,或者是检测到的容量大小为0。PUIS被大多数的RAID芯片支持。

PM2通常是通过硬盘上的驱动器跳线来设定的,不过也可以尝试用其他的方式启动(比如向特定存储器写入数据或者使用特定工具)

来源:http://zh.wikipedia.org/wiki/%E6%8C%89%E9%9C%80%E5%90%AF%E5%8A%A8

彻底修复方案:

目前可以通过Linux、Windows下的 hdparm 或DOS环境下的 HDAT2 关闭硬盘的PUIS。Linux hdparm由于不用切换IDE/AHCI/SATA模式,不用关闭secure boot,兼容性更好。

故障盘可以接到其他电脑上修复。

9879在开机和关机时各开启一次PUIS,造成故障盘再次丢失。所以在修复故障盘后,如果不想再次被失踪,在微软有动作之前,目前的唯一通用办法只有放弃9879。

Linux hdparm方案(推荐):

  1. 准备一张Linux启动盘,如Ubuntu、Fedora、Lubuntu,用 UltraISO 写入 U盘。 教程:http://www.ultraiso.net/review/uplus.htm,第二节,启动U盘制作
  2. 开机从U盘引导
  3. 选择不安装直接运行(“Try Linux/Ubuntu/xxx without installation”之类)
  4. 启动进入Linux之后,打开终端模拟器(Terminal,或者含有Term字样的图标)
  5. 输入以下命令关闭PUIS:
    sudo hdparm -s0 /dev/sd?

    注:-s后面是零,不是字母O。 它会尝试关闭所有硬盘的PUIS,消息如下:

    /dev/sda:
    spin-up: setting power-up in standby to 0 (off)
    
    /dev/sdb:
    spin-up: setting power-up in standby to 0 (off)
    HDIO_DRIVE_CMD(powerup_in_standby) failed: Input/output error

    上述消息中,/dev/sda 成功关闭;/dev/sdb 关闭失败,因为该硬盘不支持 PUIS。每台电脑的硬盘序号不一样。 如果没有上述消息,将命令改为下面一条:

    sudo hdparm -s0 /dev/hd?
  6. (可选)如果要检查是否关闭成功,输入:
    sudo hdparm -iI /dev/sd?

    将会列出当前所有磁盘的信息,格式如

    /dev/sda:
    ……
    ATA device, with non-removable media
    Model Number:       Hitachi HTS545050B9A300
    ……
    Commands/features:
    Enabled        Supported:
    ……
    *        Advanced Power Management feature set
    <span style="color: #008000;">Power-Up In Standby feature set</span>
    *        SET_FEATURES required to spinup after power up
    ……

    “Power-Up In Standby feature set” 前有 * 表示开启了 PUIS,无 * 表示关闭。

  7. 重启reboot

(方案来源: http://answers.microsoft.com/en-us/windows/forum/windows_tp-windows_install/build-9879-hard-drive-disaster-read-this/7da0cd97-3ebc-4eb3-ae23-9873672e4e6d Michal Kozal 发现:bx5fU7DUcH62dbX )

Windows hdparm方案:

基本与Linux hdparm相同,不过windows版不支持?与*通配符,/dev/sd?需要改成/dev/sda、/dev/sdb、/dev/sdc……a、b、c分别指第一、二、三个磁盘驱动器,不是指分区。

  1. 下载附件 hdparm-win.zip (969.3 KB) ,解压
  2. 以管理员身份运行命令提示符cmd,导航到hdparm解压的位置
  3. (可选)输入以下命令查询硬盘型号: 第一块硬盘
    hdparm -iI /dev/sda

    第二块硬盘

    hdparm -iI /dev/sdb

    第三块……依次类推

    hdparm -iI /dev/sdc
  4. 输入以下命令关闭PUIS:

    第一块硬盘

    hdparm -s0 /dev/sda

    第二块硬盘

    hdparm -s0 /dev/sdb

    第三块……依次类推

    hdparm -s0 /dev/sdc

    注:-s后面是零,不是字母O。 回显消息如下:

    /dev/sda:
    spin-up: setting power-up in standby to 0 (off)
    
    /dev/sdb:
    spin-up: setting power-up in standby to 0 (off)
    HDIO_DRIVE_CMD(powerup_in_standby) failed: Input/output error

    上述消息中,/dev/sda 成功关闭;/dev/sdb关闭失败,因为该硬盘不支持 PUIS。每台电脑的硬盘序号不一样。 如果没有上述消息,将命令中的 /dev/sd? 改为 /dev/hd?,即:

    do hdparm -s0 /dev/hda
    do hdparm -s0 /dev/hdb
  5. 退出。 另,直接以管理员身份运行“关闭硬盘PUIS(以管理员身份运行).cmd”亦可
HDAT2方案:
  1. 下载hdat2,下载地址: http://www.hdat2.com/download.html 有 dos 环境 的下载 HDAT2_50.EXE,放进你的 dos 环境支持的 U盘里。 没有dos环境或者不知道怎么弄的,下载 HDAT2ISO_50_LITE.EXE,运行后解压出 hdat2_v50_lite.iso,用 UltraISO 将解压后的 hdat2_v50_lite.iso 写入 U盘。
  2. 关机,从U盘启动 对于预装系统为 Win 8 的电脑,可能需要从“高级启动(Advance Starup)”里关机、关闭 secure boot 才能从U盘启动。
  3. 输入
    HDAT2_50 /w

    HDAT2 /w

    解释:/W 参数是 Wake Up 唤醒的意思,即关闭 PUIS。

  4. 修复完成后,将会列出当前的硬盘列表,按Esc退出,然后按电源键关机。
  5. 开机正常,修复结束。如开机仍不正常,请参考 手动关闭PUIS切换到IDE模式

文章来源:http://bbs.pcbeta.com/forum.php?mod=viewthread&amp;tid=1559943

方案来源:Michal Kozal

发现:jjjian