Xbox One 改 4TB 内置硬盘失败…不过努力没白费,结论很有意义
本帖最后由 BoomerCE 于 2015-12-13 10:05 编辑内置硬盘相比外接硬盘的优点还是很多的,具体就不赘述了。
最近美国开始铺货希捷睿品 4TB STDR4000100 移动硬盘了,买了一个二手的,拆开得到希捷三星 ST4000LM016 4TB 2.5 寸 SATA 硬盘一个。拆解方法和之前的 2TB 型号完全一样,所以在此也就不重复了。
http://ww3.sinaimg.cn/large/61b70b9ejw1eyxkujhcvvj20j60eb0vx.jpg
这个硬盘的厚度是 15mm,不过 Xbox One 的内置硬盘架的设计余量很大,安装起来毫无问题。
软件上,还是和之前一样的做法,按精确的尺寸划分 5 个分区,格式化成 NTFS,再把之前的 2TB 硬盘数据完整地复制到新硬盘。装回去开机,直接报错 E200 000000EF 00000000。
仔细复查了步骤,完全没有错误之处…为了排查故障,直接把原 2TB 硬盘的分区结构和数据 1:1 复制到新的 4TB 硬盘(即只分配前 2TB 容量,后面的容量不分配),开机直接成功。
这个时候就要动脑筋了…
经过观察发现,在 4K - 512e(硬盘物理分配单元 4096 字节,逻辑分配单元 512 字节)的条件下,2TB 硬盘的 LBA 没有超过 2^32 - 1,而 4TB 硬盘的 LBA 远远超过了这个值。
尤其是,Xbox One 操作系统所在的虚拟磁盘文件目前是在第 4 个分区。如果完全分配 4TB 硬盘的容量的话,这个分区的开始 LBA 就会远远超过 2^32 - 1。所以,猜测这个故障是因为 Xbox One 目前版本(Windows 10 TH2 build 10586.1024)的 UEFI 启动代码无法支持从 LBA 超过 2^32 - 1 处读取系统数据。
为了验证这个想法,首先,把第 4 个分区(存放操作系统的虚拟磁盘文件)移动到 LBA 2 ^ 32 - 1 之后,其他分区不变,开机加载一会之后黑屏。但是,这种情况下,按电源键正常关机这样的操作却能正常完成,说明系统的基础部分(位于第 3 个分区)已经加载成功。然后,再把第 3 个分区也移动到 LBA 2 ^ 32 - 1 之后,再开机就直接报错了,除强制断电以外,没有任何反应。
实际上,到了这一步,几乎可以确定,Xbox One UEFI 的启动代码中,读取系统数据的 LBA 不能超过 2 ^ 32 - 1。
接下来,严格地在 0 ~ 2^32 - 1 的 LBA 范围内划分分区,并且相应地复制原硬盘的文件。装好硬盘,开机,系统正常启动。所以,没有特别的意外的话,上面的猜测是完全成立的。
但是,这样分配 4TB 的硬盘空间,Xbox One 系统内的可用容量几乎没有得到提升;2TB 硬盘完全分配之后,系统显示的可用容量是 1.6TB,而 4TB 硬盘在不溢出的情况下分配,系统显示的容量是 1.8TB。所以,目前给 Xbox One 安装 4TB 内置硬盘,几乎没有任何实际意义。
当然,这个问题绝对不是无解的。
如果未来有 4Kn(物理分配单元和逻辑分配单元均为 4096 字节)的 2.5 寸 SATA 硬盘上市的话,在相同的容量下,4Kn 的分配单元数量只有 512e 的 1/8,那么同样的 LBA 上限,可用容量会变成 8 倍;当然,也需要 Xbox One UEFI 支持 4Kn 硬盘,但是 Xbox One 初版就已经是 Windows 8 系统了,所以问题应该不大。
或者,如果微软推出官方的内置 4TB 硬盘的 Xbox One 主机,使用的还是 512e 硬盘,那就肯定会把 UEFI 的代码更新,支持大于 2^32 - 1 的 LBA,那么问题也是迎刃而解。
不过说实话,上述两点,在 Xbox One 退市之前,也不知道能不能实现…看目前的趋势,指望 4Kn 硬盘上市大致还靠谱一点。
一句话总结:Xbox One UEFI 当中的启动代码,不能读取 LBA 超过 2^32 - 1 的数据,超过的话就会导致启动失败 那么问题就来了,有9mm的2TB硬盘推荐吗? rse43 发表于 2015-12-13 05:34
那么问题就来了,有9mm的2TB硬盘推荐吗?
不是有且仅有希捷三星的那一款吗…
西数什么的都是直接把 USB 接口做在电路板上了,天生就是废品,移动硬盘除了希捷我们什么也不认 哥们帖子质量都很高,不过能别几家一起发么 装那么大硬盘要干嘛呢 eulbelprup 发表于 2015-12-13 08:18
哥们帖子质量都很高,不过能别几家一起发么
主要是…这样的受众面窄的技术帖,又是发在流量比较小的论坛上,如果有需要的人没有看到,还是觉得比较可惜的… mcq_2 发表于 2015-12-13 08:46
装那么大硬盘要干嘛呢
玩游戏机不玩游戏…其实现在的 2TB 硬盘我都没用到 20%,主要是探索技术上的可能性 不知道你这个结论是怎么得出来的,gpt的lba寻址并没有2t限制 zatsuza 发表于 2015-12-13 09:03
不知道你这个结论是怎么得出来的,gpt的lba寻址并没有2t限制
所以 Xbox One 外置硬盘可以支持到 16TB 容量,也就是 NTFS 单个卷使用 4KB 分配单元的上限
我当时就想过了,而且简单地实验验证了一下,就是先把第 4 个分区(存放操作系统的虚拟磁盘文件)移动到 LBA 2 ^ 32 - 1 之后,其他分区不变,开机之后黑屏,但是这种情况下对于正常关机这样的操作反而有反应;再把第 3 个分区(存放系统辅助文件)也移动到 LBA 2 ^ 32 - 1 之后,再开机就直接报错了,必须强制断电。
实际上,几乎可以确定,Xbox One UEFI 的启动代码中,读取操作系统虚拟磁盘的数据的 LBA 不能超过 2 ^ 32 - 1;这一点和 GPT 分区支持很大的容量完全没有任何矛盾啊 LZ为啥不测试3TB的?2.5寸4TB的价钱都快半台XBOne了,我想没几个人有这需求吧 f.w. 发表于 2015-12-13 10:59
LZ为啥不测试3TB的?2.5寸4TB的价钱都快半台XBOne了,我想没几个人有这需求吧
因为出货量极少,3TB 的 2.5 寸裸盘比 4TB 的带希捷原装 UASP 硬盘盒的反而贵 50%…
另外,(2^32 - 1) * 512 大约是 2.2TB,所以就算用 2.5TB 的都是浪费…
页:
[1]