找回密码
 立即注册
搜索
查看: 5773|回复: 10

[XBOX] Xbox One 改 4TB 内置硬盘失败…不过努力没白费,结论很有意义

[复制链接]
     
发表于 2015-12-13 05:27 | 显示全部楼层 |阅读模式
本帖最后由 BoomerCE 于 2015-12-13 10:05 编辑

内置硬盘相比外接硬盘的优点还是很多的,具体就不赘述了。

最近美国开始铺货希捷睿品 4TB STDR4000100 移动硬盘了,买了一个二手的,拆开得到希捷三星 ST4000LM016 4TB 2.5 寸 SATA 硬盘一个。拆解方法和之前的 2TB 型号完全一样,所以在此也就不重复了。



这个硬盘的厚度是 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 的数据,超过的话就会导致启动失败
回复

使用道具 举报

     
发表于 2015-12-13 05:34 | 显示全部楼层
那么问题就来了,有9mm的2TB硬盘推荐吗?
回复

使用道具 举报

     
 楼主| 发表于 2015-12-13 05:36 | 显示全部楼层
rse43 发表于 2015-12-13 05:34
那么问题就来了,有9mm的2TB硬盘推荐吗?

不是有且仅有希捷三星的那一款吗…

西数什么的都是直接把 USB 接口做在电路板上了,天生就是废品,移动硬盘除了希捷我们什么也不认
回复

使用道具 举报

发表于 2015-12-13 08:18 来自手机 | 显示全部楼层
哥们帖子质量都很高,不过能别几家一起发么
回复

使用道具 举报

     
发表于 2015-12-13 08:46 | 显示全部楼层
装那么大硬盘要干嘛呢
回复

使用道具 举报

     
 楼主| 发表于 2015-12-13 08:48 来自手机 | 显示全部楼层
eulbelprup 发表于 2015-12-13 08:18
哥们帖子质量都很高,不过能别几家一起发么

主要是…这样的受众面窄的技术帖,又是发在流量比较小的论坛上,如果有需要的人没有看到,还是觉得比较可惜的…
回复

使用道具 举报

     
 楼主| 发表于 2015-12-13 08:50 来自手机 | 显示全部楼层
mcq_2 发表于 2015-12-13 08:46
装那么大硬盘要干嘛呢


玩游戏机不玩游戏…其实现在的 2TB 硬盘我都没用到 20%,主要是探索技术上的可能性
回复

使用道具 举报

发表于 2015-12-13 09:03 来自手机 | 显示全部楼层
不知道你这个结论是怎么得出来的,gpt的lba寻址并没有2t限制
回复

使用道具 举报

     
 楼主| 发表于 2015-12-13 09:37 | 显示全部楼层
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 分区支持很大的容量完全没有任何矛盾啊
回复

使用道具 举报

     
发表于 2015-12-13 10:59 | 显示全部楼层
LZ为啥不测试3TB的?2.5寸4TB的价钱都快半台XBOne了,我想没几个人有这需求吧
回复

使用道具 举报

     
 楼主| 发表于 2015-12-13 11:03 | 显示全部楼层
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 的都是浪费…
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|上海互联网违法和不良信息举报中心|网上有害信息举报专区|962110 反电信诈骗|举报电话 021-62035905|Stage1st ( 沪ICP备13020230号-1|沪公网安备 31010702007642号 )

GMT+8, 2025-8-26 19:02 , Processed in 0.087290 second(s), 7 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表