A mi me jode tener 2 discos duros en la consola... y mas tener un disco usb 3.0 externo dedicado a juegos que no puedo particionar.
He cambiado el disco original de 500gb por uno de 1Tb. Me llevé ayer toda la tarde investigando el tema y probando y he sacado varias conclusiones y una pregunta.
Primero lanzo la pregunta a los que lleven tiempo con el disco cambiado: Hay varias advertencias en hilos ingleses de que la consola en actualizaciones importantes detecta que las particiones del disco no son correctas y las formatea dando error, necesitando el disco original para volver a funcionar. Os ha pasado realmente a alguno esto?
Los sistemas para cambiar el disco:
A) La que finalmente usé y la forma más fácil. Necesitais el disco original de la consola y funcionando. Se realiza mediante la combinación Clonezilla live usb y Gparted live usb. 1º realizas el clonado 1:1 de los discos con clonezilla (ojo no confundáis los discos origen/destino y la liéis). 2º si el disco destino es de mayor capacidad que el orginal usamos Gparted para mover las particiones 3,4,5 al final del disco y la 2 que es la de contenidos hacerla más grande. Esto último puede tardar como 40 minutos. Y tal cual a la consola y a disfrutarlo. Todo funcionando a la primera.
B) Hay otra forma de hacerla, con los famosos scripts y usando linux sin necesidad de usar el disco original. Pero a mi sinceramente no me funciona.Este sistema por lo general solo particiona el disco, lo formatea y lo marca como de xbox. También le mete las actualizaciones osudt1 2 o 3 en la partición 4. Este sistema a mí no me funciono: La consola tardaba como 5 minutos en arrancar y cuando lo hacía no reconocía la tarjeta wifi, ni podía sincronizar los mandos, ni entrar en la configuración de red, ni arrancaba ningún juego de xbox one, los indie y juegos de 360 sí. Por cable sí se podía acceder a internet.
Se desarrolla en este Hilo. Ojo e informaros antes de empezar porque es un hilo antiguo:
http://team-xecuter.com/forums/threads/ ... -Drive-%21 Las páginas más interesantes son de la 12 a la 20
Tambén teneis un wiki con la información detallada en
https://github.com/JW0914/Wikis/tree/master/XboxOneEn todo caso un aviso importante.
Con el disco cambiado a otro de mayor capacidad nunca useis el Restablecer la consola ya que detectará las particiones como corruptas las borrará y dará error. Es también muy recomendable guardar a buen recaudo una copia de las particiones 1,3,4 del disco original.
Vuelvo a hacer la pregunta. Alguien lleva "Años" con el disco cambiado y sin problemas? Qué tal le va en las actualizaciones?
Parte 2 del HIlo.
Sigo haciendo mis pruebas y dejo documentado el proceso por si algún día alguien (o yo) lo necesita.
El backup del disco original de las particiones 1, 3, 4 recién reestablecida al inicio la consola ocupa unos 11GB comprimidos por el propio clonezilla, con lo que es bastante factible guardar copias de seguridad. He hecho el backup con clonezilla y otra con norton ghost por si acaso
Si las cosas van mal poniendo la estructura de la partición original, de 500gb, puesta en el disco duro de 1tb y grabando el contenido de este backup la consola funciona y puede incluso ser reestablecida al inicio con este disco.
!!!ADVERTENCIA!!! Esto que indicio abajo no pretende ser un tutorial. Solo pretendo contar mi experiencia y documentarlo por si alguien quiere guiarse pero no lo hagas si no sabes bien lo que estás haciendo. Si aun así decidieras hacerlo nunca lo abordes sin tener copia del disco original.
Para este proceso hago:
Si el disco destino no está limpio usar Gparted para borrar todas las particiones
Nos situamos en el directorio donde estén los script
Bajo linux ejecuto el script original: sudo python xboxonhdd.py sdX (donde X la letra que se le asignó linux al disco).
Modificamos mkxboxfs-500gb.sh y le indicamos que sdX debe usar (es importante o machacará otro disco).
Ejecutamos sudo bash mkxboxfs-500gb.sh
Usamos clonezilla para grabar las imagenes de las particiones 1, 3, 4 del disco original al nuevo
Volvemos a linux y marcamos el disco como de xbox con el script del principio, pero daría error porque la tabla de particiones no está expandida. Aquí teneis el modificado
Script modificado #!/usr/bin/env python
# Courtesy of GitHub user Juvenal1 (GitHub.com/Juvenal1/xboxonehdd)
import os
from stat import *
from os import path
import sys
import gptutil
DISK_GUID = 'DB4B34A2DED666479EB54109A12228E5'.decode('hex')
TEMP_CONTENT_GUID = 'A57D72B3ACA33D4B9FD62EA54441011B'.decode('hex')
USER_CONTENT_GUID = 'E0B59B865633E64B85F729323A675CC7'.decode('hex')
SYSTEM_SUPPORT_GUID = '477A0DC9B9CCBA4C8C660459F6B85724'.decode('hex')
SYSTEM_UPDATE_GUID = 'D76A059AED324141AEB1AFB9BD5565DC'.decode('hex')
SYSTEM_UPDATE2_GUID = '7C19B224019DF945A8E1DBBCFA161EB2'.decode('hex')
PARTITION_SIZES = [
44023414784,
0,
42949672960,
12884901888,
7516192768
]
def print_parted_commands(device):
temp_end = 1 + (PARTITION_SIZES[0]/1024/1024)
user_end = temp_end + (PARTITION_SIZES[1]/1024/1024)
sys_end = user_end + (PARTITION_SIZES[2]/1024/1024)
upt_end = sys_end + (PARTITION_SIZES[3]/1024/1024)
upt2_end = upt_end + (PARTITION_SIZES[4]/1024/1024)
f = open('mkxboxfs.sh', 'w')
f.write('#!/bin/bash\n')
f.write('DEV={0}\n'.format(device))
f.write('parted -s "$DEV" mktable gpt\n')
f.write('parted -s "$DEV" mkpart primary ntfs 1.00MiB {0}MiB\n'.format(temp_end))
f.write('parted -s "$DEV" name 1 "\\"Temp Content\\""\n')
f.write('mkntfs -q "${DEV}1" -f -L "Temp Content"\n')
f.write('parted -s "$DEV" mkpart primary ntfs {0}MiB {1}MiB\n'.format(temp_end, user_end))
f.write('parted -s "$DEV" name 2 "\\"User Content\\""\n')
f.write('mkntfs -q "${DEV}2" -f -L "User Content"\n')
f.write('parted -s "$DEV" mkpart primary ntfs {0}MiB {1}MiB\n'.format(user_end, sys_end))
f.write('parted -s "$DEV" name 3 "\\"System Support\\""\n')
f.write('mkntfs -q "${DEV}3" -f -L "System Support"\n')
f.write('parted -s "$DEV" mkpart primary ntfs {0}MiB {1}MiB\n'.format(sys_end, upt_end))
f.write('parted -s "$DEV" name 4 "\\"System Update\\""\n')
f.write('mkntfs -q "${DEV}4" -f -L "System Update"\n')
f.write('parted -s "$DEV" mkpart primary ntfs {0}MiB {1}MiB\n'.format(upt_end, upt2_end))
f.write('parted -s "$DEV" name 5 "\\"System Update 2\\""\n')
f.write('mkntfs -q "${DEV}5" -f -L "System Update 2"\n')
f.flush()
f.close()
os.chmod('mkxboxfs.sh', 0o777)
def fixup_header(hdr):
hdr.disk_guid = DISK_GUID
hdr.fix_crc()
def fixup_part_table(pt):
pt.partitions[0].part_guid = TEMP_CONTENT_GUID
pt.partitions[0].name = u'Temp Content'
pt.partitions[1].part_guid = USER_CONTENT_GUID
pt.partitions[1].name = u'User Content'
pt.partitions[2].part_guid = SYSTEM_SUPPORT_GUID
pt.partitions[2].name = u'System Support'
pt.partitions[3].part_guid = SYSTEM_UPDATE_GUID
pt.partitions[3].name = u'System Update'
pt.partitions[4].part_guid = SYSTEM_UPDATE2_GUID
pt.partitions[4].name = u'System Update 2'
if __name__ == '__main__':
if len(sys.argv) != 2:
print 'Usage:'
print '\t{0} [disk]'.format(sys.argv[0])
print 'Example:'
print '\t{0} sdf'.format(sys.argv[0])
print
sys.exit(-1)
# open the disk
_path = path.join('/dev', sys.argv[1])
disk = gptutil.Disk.from_path(_path)
partitions = disk.header.partition_table.active_partitions
# calculate user partition size to nearest GiB
total_size = int(open(path.join('/sys', 'class', 'block', sys.argv[1], 'size'), 'r').readline()) * 512
user_content_size = (total_size - sum(PARTITION_SIZES))/1024/1024/1024
PARTITION_SIZES[1] = user_content_size*1024*1024*1024
# verify partition count
if len(partitions) != 5:
print 'Disk must have 5 partitions'
print 'Create as follows:'
print '\t41 GiB NTFS'
print '\t{0} GiB NTFS'.format(user_content_size)
print '\t40 GiB NTFS'
print '\t12 GiB NTFS'
print '\t7 GiB NTFS'
print_parted_commands(_path)
print 'run ./mkxboxfs.sh to create the correct partitions'
sys.exit(-2)
# verify partition sizes
for i in range(5):
correct = PARTITION_SIZES[i]
actual = partitions[i].size
if correct != actual:
print 'Partition {0} must be EXACTLY {1} bytes!'.format(i, correct)
print 'It is {0} bytes'.format(actual)
print_parted_commands(_path)
print 'run ./mkxboxfs.sh to create the correct partitions'
s = raw_input("Quieres saltar esta advertencia y continuar 'yes' to continue: ")
if s != 'yes':
sys.exit(-3)
# confirm actions
print 'The actions performed CANNOT be reversed!'
print 'Are you SURE you want to convert {0} to an Xbox ONE Disk?'.format(_path)
s = raw_input("Enter 'yes' to continue: ")
if s != 'yes':
sys.exit(-4)
# change partition table and backup partition table
fixup_part_table(disk.header.partition_table)
# change header and backup header
fixup_header(disk.header)
print 'Writing changes to disk...'
diskf = open(_path, 'rb+')
disk.commit(f=diskf)
print 'Changes Written!'
Guardamos el link como xboxonhddMOD.py y ejecutamos sudo python xboxonhddMOD.py sdX (donde X la letra asignada a la unidad por linux) y contestamos que sí a las preguntas.
Bueno con esto ya tenemos el disco preparado para insertarlo en la consola. Debería arrancar sin más y no informar de ningún problema. También sería posible hacer un reestablecer o pasar una supuesta actualización que detectara la modificación del disco.
Pero claro tenemos un disco de 1tb declarado como de 500gb. Para cambiarlo ya usamos Gparted para pasar las particiones 5,4,3 al final del disco y aumentar la partición 2 hasta el máximo posible. Esto tardo en mi caso unos 40 minutos. Finalmente llegado a este punto no se debe usar reestablecer porque no funcionaría y daría error ya que detecta problema en las particiones, aunque a decir verdad no lo probé.