¿Cómo puedo cambiar una instalación de 32 bits a una de 64 bits?

54

Tengo una instalación de Ubuntu de 32 bits ejecutándose en hardware de 64 bits. Ahora que se ha implementado el arco múltiple , me gustaría cambiar a 64 bits sin tener que reinstalar el sistema operativo.

Esta es una de las historias de usuarios abordadas por la especificación :

Shawn instaló su sistema usando la versión de Ubuntu de 32 bits, pero su hardware es de 64 bits y quiere cambiar. Instala manualmente las versiones amd64 de dpkg y apt, reemplaza las versiones i386 y cambia la arquitectura que se usa por defecto; luego instala el paquete amd64 ubuntu-minimal; luego instala el paquete amd64 ubuntu-desktop. Con el tiempo, los paquetes i386 restantes se reemplazan automáticamente en la actualización.

Sin embargo, cuando trato de seguir las instrucciones allí, no puedo encontrar ninguna versión de dpkg o apt de 64 bits.

¿Esta historia de usuario se implementó de una manera diferente en la especificación final, o necesito hacer algo diferente?

En resumen, ¿cómo puedo cambiar mi instalación de 32 bits a 64 bits?

David Planella
fuente
3
Me doy cuenta de que la pregunta ya se ha hecho en askubuntu.com/questions/5018/… , pero eso fue antes de que se implementara el arco múltiple, por lo que la respuesta debería ser diferente.
David Planella

Respuestas:

36

Tal enfoque es muy complicado, y es poco probable que todos los paquetes sean la amd64versión en lugar de la i386versión. Solo los paquetes que realmente reciben actualizaciones probablemente cambiarán en la arquitectura, y probablemente solo si ningún otro paquete que no se actualiza dependerá de su i386arquitectura. Dado que algunos paquetes no recibirán ninguna actualización durante todo el ciclo de soporte de su versión de Ubuntu, es probable que nunca tenga un amd64sistema completo que utilice dicha técnica. Además, ciertamente no hay apoyo oficial para tal enfoque.

En su lugar, le recomendamos que reemplace su sistema Ubuntu existente con una nueva instalación de 64 bits.

Sin embargo, si desea intentar esta técnica, deberá descargar manualmente los .debarchivos para dpkgy apt. Puede encontrarlos dpkgen Ubuntu y apten las páginas de Ubuntu en Launchpad: expanda la última versión en "The Oneiric Ocelot" que está marcada como lanzamiento, seguridad y / o actualizaciones (pero probablemente no desee una versión marcada únicamente propuesto y / o backports, si alguna vez hay uno). Luego descargue los .debarchivos marcados amd64. Específicamente, los archivos que querrá son: este paradpkg (y los otros enumerados también, si tiene esos paquetes instalados) y esto y esto y esto y estoy esto para apt.

Antes de hacer algo con estos archivos, debe asegurarse de hacer una copia de seguridad de todos los documentos importantes en su sistema Ubuntu instalado y cualquier otro archivo importante (por ejemplo, música, libros electrónicos, videos), porque es bastante probable que intentar esta técnica resulte mal. y deja tu sistema Ubuntu completamente inutilizable.

Puede instalar todos estos paquetes colocándolos en una carpeta que no contenga nada más (suponga que se llama a la carpeta debsy está dentro de su Downloadsdirectorio), y luego ejecute este comando:

sudo dpkg -Ri ~/Downloads/debs

Por supuesto, una vez que los haya instalado, en realidad no se ejecutarán, porque sus ejecutables son de 64 bits y su sistema Ubuntu de 32 bits está ejecutando un núcleo de 32 bits (que solo ejecutará ejecutables de 32 bits). De hecho, es posible que ni siquiera terminen de instalarse, ya que pueden tener scripts posteriores a la instalación que invocan sus ejecutables de 64 bits no ejecutables.

Hay varias formas de intentar instalar un núcleo de 64 bits en un sistema de 32 bits, pero todas son extremadamente complicadas, por lo que le recomiendo que arranque desde un CD en vivo Oneiric de 64 bits (que a su vez ejecuta un disco de 64 bits kernel), inicie sesión en el sistema Ubuntu instalado y use el recientemente instalado 64-bit apty dpkgpara instalar un kernel de 64-bit.

Aquí hay instrucciones específicas para hacerlo ... pero no tome esto como que estoy diciendo que funcionará. No he intentado esto. (Me conecté a los sistemas Ubuntu instalados desde CD en vivo y realicé la gestión de paquetes y otras operaciones, pero no he intentado las operaciones de arquitectura cruzada sugeridas aquí).

  1. En su sistema Ubuntu instalado, abra una ventana de Terminal ( Ctrl+ Alt+ T) y ejecútelo mount | grep ' on / '(pegándolo en el Terminal y presionando enter). Deberías ver algo así /dev/sda2 on / type ext4 (rw,errors=remount-ro,commit=0). La parte que le interesa es el nombre del dispositivo antes on(en este ejemplo, es /dev/sda2). Recuerda eso o escríbelo.

  2. El paso 1 le dio el nombre del dispositivo de la /partición. Si tiene una /bootpartición separada , también necesitará saber el nombre del dispositivo para eso. Entonces, en ese caso, corre mount | grep ' on /boot '. Verás algo así /dev/sda1 on /boot type ext2 (rw). Recuerde o escriba esto también.

  3. Arranque desde un CD en vivo Oneiric amd64 (es decir, 64 bits) y seleccione "Probar Ubuntu" en lugar de "Instalar Ubuntu".

  4. Vaya a un navegador web y asegúrese de que la conectividad a Internet sea completamente funcional. Si no es así, configúrelo.

  5. Abra una ventana de Terminal y ejecute sudo mount /dev/sda2 /mnt(reemplace /dev/sda2con el nombre del dispositivo que obtuvo en el paso 1, si es diferente).

  6. Si su sistema instalado tiene una /bootpartición separada , ejecute sudo mount /dev/sda1 /mnt/boot(reemplace /dev/sda1con el nombre del dispositivo que obtuvo en el paso 2, si es diferente).

  7. Ahora, ejecute estos comandos para hacer chroot en su sistema instalado:

    sudo mount --bind /dev /mnt/dev  
    sudo chroot /mnt  
    mount -t proc none /proc  
    mount -t sysfs none /sys  
    mount -t devpts none /dev/pts  
    
  8. Ejecute ping -c 4 launchpad.netpara ver si la conectividad a Internet funciona completamente desde dentro del chroot. Estás esperando algo como esto:

    PING launchpad.net (91.189.89.223) 56(84) bytes of data.
    64 bytes from launchpad-net.banana.canonical.com (91.189.89.223): icmp_req=1 ttl=41 time=141 ms
    64 bytes from launchpad-net.banana.canonical.com (91.189.89.223): icmp_req=2 ttl=41 time=143 ms
    64 bytes from launchpad-net.banana.canonical.com (91.189.89.223): icmp_req=3 ttl=41 time=142 ms
    64 bytes from launchpad-net.banana.canonical.com (91.189.89.223): icmp_req=4 ttl=41 time=140 ms
    
    --- launchpad.net ping statistics ---
    4 packets transmitted, 4 received, 0% packet loss, time 3003ms
    
  9. Si, en cambio, no pudo transmitir o recibir paquetes, entonces tendrá que configurar la conectividad a Internet en el chroot. Para hacerlo, ejecute estos comandos (para salir del chroot, copie los archivos de configuración relevantes del sistema de CD en vivo en el chroot y vuelva a ingresar el chroot):

    sudo cp /mnt/etc/resolv.conf /mnt/etc/resolv.conf.old  
    sudo cp /mnt/etc/hosts /mnt/etc/hosts.old  
    sudo cp /etc/resolv.conf /mnt/etc/resolv.conf  
    sudo cp /etc/hosts /mnt/etc/hosts
    

    Si bien generalmente debe detener este proceso si hay un error, no se preocupe si el primero y / o el segundo de esos cuatro comandos fallan, siempre que la forma específica en que falla es diciéndole que /mnt/etc/resolv.conf(o /mnt/etc/hosts) no existe .

    El chroot vuelve a entrar y vuelve a intentarlo:

    sudo chroot /mnt  
    ping -c 4 launchpad.net  
    
  10. Ejecute estos comandos para que su entorno chrooteado esté completamente listo para usar:

    export HOME=/root  
    export LC_ALL=C  
    
  11. Si no ha instalado los .debarchivos para las versiones de 64 bits de dpkgy apt, hágalo ahora. Si los instaló pero hubo errores de configuración, ejecute dpkg --configure -apara corregirlos. (Con suerte, eso funcionará ... podría ser mejor esperar para intentar instalarlos hasta que esté en el entorno de CD en vivo, en caso de que la instalación de 64 bits dpkgmientras se inicia en el sistema instalado deje dpkgen un estado inutilizable).

  12. Con las versiones de 64 bits dpkge aptinstaladas, suponiendo que instalen automáticamente paquetes de 64 bits, ahora puede eliminar todos los núcleos de 32 bits e instalar un núcleo de 64 bits. Para eliminar sus núcleos de 32 bits, ejecute dpkg -l | grep linux-. Esto enumera los paquetes instalados que comienzan con linux-. Que le interesan más específicamente en paquetes que comienzan como linux-generic, linux-image, linux-server, y / o linux-headers. Elimine estos archivos con apt-get purge ...donde ...se reemplaza con una lista separada por espacios de los paquetes que está eliminando.

  13. Ahora reinstale los paquetes que eliminó. (En realidad, para los paquetes que contienen números de versión en el nombre del paquete, como por ejemplo linux-image-3.0.0-13-generic, solo necesita instalar los últimos nombres de paquete versionados). Haga esto ejecutando apt-get install ...donde ...se reemplaza con una lista separada por espacios de los paquetes que está instalando .

  14. Actualice la configuración del cargador de arranque, desmonte algunos dispositivos y deje el chroot:

    update-grub  
    umount /proc || umount -lf /proc  
    umount /sys  
    umount /dev/pts  
    exit  
    sudo umount mnt/dev  
    
  15. Si corriste sudo cp /mnt/etc/resolv.conf /mnt/etc/resolv.conf.oldy no falló, ahora corre sudo cp /mnt/etc/resolv.conf.old /mnt/etc/resolv.conf.

  16. Si corriste sudo cp /mnt/etc/hosts /mnt/etc/hosts.oldy no falló, ahora corre sudo cp /mnt/etc/hosts.old /mnt/etc/hosts.

  17. Si su sistema instalado tiene una /bootpartición separada , desmonte eso:sudo umount /mnt/boot

  18. Desmonta la /partición de tu sistema instalado :sudo umount /mnt

  19. Salga de la ventana Terminal (ejecutar exit), luego reinicie (o apague) el sistema de CD en vivo y arranque en el sistema instalado.

  20. Vea si el sistema es utilizable y ejecuta un núcleo de 64 bits ( uname -mdebería decir que la arquitectura lo es x86_64).

Es posible que haya paquetes adicionales que necesite instalar, como ia32_libsy / o la versión de 64 bits libc6, para que esto funcione. Para algunos de ellos, es posible que se le informe que los necesita al intentar instalar la versión de 64 bits de dpkgy / o apt. Para otros, es posible que no esté informado.

(Las instrucciones anteriores para realizar el chrooting y operar en el entorno chroot se basan en gran parte en este procedimiento relacionado pero diferente y también en algunas publicaciones mías de Launchpad Answers , especialmente # 6 aquí y # 6 aquí . Y un agradecimiento especial a Cesium por señalar que los archivos ejecutables dpkgy de 64 bits aptno se ejecutarán en un sistema que ejecute un núcleo de 32 bits).

Eliah Kagan
fuente
2
¿Se ejecutarán esos binarios bajo un núcleo de 32 bits, Eliah?
Cesio
@ Caesium Buena llamada. Por supuesto no. Editaría mi publicación para indicar cómo hacer que se ejecute el núcleo de 64 bits ... excepto que no tengo idea de cómo instalar un paquete de núcleo de 64 bits en un sistema Ubuntu de 32 bits (que se ejecuta en hardware de 64 bits, por supuesto) cuándo apty dpkgtodavía son de 32 bits y (presumiblemente) se negarán a instalar un paquete de kernel de 64 bits. (Construir el núcleo desde la fuente y usar la compilación cruzada funcionaría, pero esto es muy complicado y no quiero recomendarlo. Estoy seguro de que hay una manera mejor y más fácil. Si lo sabe, siéntase libre para editar mi o tu publicación o comentar al respecto.)
Eliah Kagan
@ Caesium En realidad, creo que sé cómo instalar el núcleo de 64 bits. Editaré mi publicación en breve para reflejar esto. Una vez que lo haga, si cree que mi técnica propuesta funcionaría, siéntase libre de copiarla y / o parafrasearla en su respuesta ... o, alternativamente, siempre que tanto la información en su respuesta que no está en la mía como la información en mi respuesta que no está en la tuya se conservan, puedes combinar nuestras respuestas en una sola respuesta. (Podría ser tu respuesta, eso está bien para mí. Publicaste un poco antes que yo. Luego borraría mi respuesta).
Eliah Kagan
@Ediciones de cesio completadas; Espero tus comentarios.
Eliah Kagan
Wow, buen trabajo :) En este punto has puesto mucho más esfuerzo que yo, así que no soñaría con copiar en mi respuesta, la tuya debe quedar por el crédito. Se aleja del objetivo original de usar la tecnología multiarch, pero me interesará saber si funciona :) Supongo que tendremos que esperar al póster original :)
Cesio
25

Como se indicó anteriormente, hice:

echo foreign-architecture amd64 | sudo tee /etc/dpkg/dpkg.cfg.d/multiarch
sudo apt-get update
sudo apt-get install linux-image:amd64
sudo apt-get install gcc-multilib
sudo update-grub

Funcionó. Puedo ejecutar mi tierra de usuario de 32 bits con kernel de 64 bits, en Ubuntu 12.04.

VJ-
fuente
55
Esta respuesta es genial. Puedo confirmar que todavía funciona con salsas. La única diferencia es que el procedimiento de agregar una arquitectura ha cambiado: use sudo dpkg --add-architecture amd64en su lugar. Te gritará si lo haces de otra manera. Necesitaba hacer esto para poder pasar a una instalación de 64 bits desde una (anteriormente) de 32 bits y funcionó exactamente como se esperaba sin problemas.
Wug
Intenté esto en Mint, pero tengo algunos problemas, ¿hiciste algo más? Detalles: superuser.com/q/927830/150718
Dr. Hannibal Lecter
Además del cambio de Wug, también debe usar linux-image-generic:amd64Ubuntu 16.04. Funcionó bien para, incluso sin los dos últimos comandos.
qznc
6

Aunque la pregunta es similar a ¿Es posible "actualizar" de una instalación de 32 bits a una de 64 bits? (Si no lo has leído antes, te animo a que lo pruebes. La respuesta siempre que sea buena). También te recomiendo leer los siguientes enlaces:

Para un mejor rendimiento, ¿debo instalar 32 bits o 64 bits?

¿Cómo puedo cambiar una instalación de 32 bits a una de 64 bits?

¿Cuáles son las diferencias entre 32 bits y 64 bits, y cuál debo elegir?

¿Es posible? Sí

¿Es fácil: NO!

Si su problema es con la memoria, entonces debe saber que Ubuntu 32 Bit puede leer más de 4 GB de RAM (hasta 64 GB). Entonces, usar la última versión de Ubuntu 32 Bit con una computadora que tenga una arquitectura de 32 Bit o 64 Bit y poner más RAM no será un problema. Simplemente leerá la RAM adicional y funcionará.

Luis Alvarado
fuente
5

Estas respuestas están algo desactualizadas. La clasificación cruzada ahora está documentada para Debian en la wiki de Debian , pero aún no se recomienda.

Instalar un kernel desde una arquitectura diferente ahora es tan fácil como se describe allí, pero el nuevo 'apt' no reconocerá los paquetes de una arquitectura anterior, por lo que todos sus front-end pueden informar muchos paquetes rotos. Esto requiere cambiar todas las dependencias a la otra arquitectura, o revertir apt y dpkg a 32 bits.

Entonces, el mejor enfoque puede ser primero guardar los resultados de dpkg --get-selections, strip: i386 de eso, y descargar un paquete amd64 para cada una de las dependencias en la caché:

apt-get --download-only install perl:amd64 python3:amd64 python3-gi:amd64 xorg:amd64...

En el mejor de los casos, es probable que sea lento y lento resolver las dependencias.

Cedric Knight
fuente
5

Estas instrucciones hacen que su sistema arranque con un núcleo de 64 bits pero no cambia la mayoría de los programas de usuario.

Después de actualizar mi sistema con CPU de 64 bits, también quería instalar un kernel de 64 bits en mi Ubuntu 14.04.2 de 32 bits (nombre en clave: Trusty). Para hacer esto, ingresé los siguientes comandos como usuario root :

dpkg --add-architecture amd64   
apt-get update
apt-get install linux-generic-lts-utopic:amd64

Notas:

  1. Esto podría eliminar su núcleo de 32 bits como confiable, de forma predeterminada, se entrega con un núcleo actualizado (el núcleo de utopic), consulte las Notas de la versión 14.04 . En este caso, su núcleo actual entra en conflicto con el núcleo de 64 bits que se va a instalar y, por lo tanto, se elimina. Si no le gusta esta idea, es posible que desee probar el antiguo paquete de kernel de 64 bits "linux-generic-lts-trusty: amd64".

  2. El comando "--add-architecure" es esencial. Sin él, el sistema de paquetes no admite paquetes de diferentes arquitecturas, consulte Multiarch-HowTo

  3. Para ver qué apt-getle hará a su sistema, ejecútelo con las opciones -Vsque habilitan el "modo de simulación detallado". Esto imprimirá todos los paquetes que se instalarán y eliminarán.

  4. Si su sistema arranca usando el nuevo núcleo depende de la grubconfiguración. Como usuario root , ejecute update-grubpara actualizar grub e imprima la configuración de arranque actual. La primera imagen de la lista se iniciará por defecto.

  5. Para seleccionar una imagen del núcleo diferente, me quita la línea GRUB_HIDDEN_TIMEOUT=0de /etc/default/gruby corrió como usuario root update-grub . En el momento del arranque, ahora puede seleccionar un núcleo diferente (tiene 10 segundos para presionar cualquier tecla; de lo contrario, grub continuará con el núcleo predeterminado).

  6. La respuesta con la mayor cantidad de votos es de 2011 y, en mi opinión, está desactualizada irremediablemente. Multiarch le permite instalar paquetes de biblioteca de múltiples arquitecturas en la misma máquina sin mucha dificultad.

Daniel K.
fuente
Ese es un buen consejo simple que casi funcionó para mí en 14.10 (Utopic) (sin embargo, lo hice, apt-get install linux-generic:amd64lo que no debe ser muy importante para el experimento). Si utilizo la opción de arranque de "rescate", el sistema se ejecuta, pero X no usa el nouveaucontrolador de video y demás. Si inicio normalmente, el inicio se rompe en algún momento y el sistema se reinicia. (Pero la primera vez, pude arrancar con éxito). No estoy seguro de si el problema es con el controlador de video durante el arranque "normal" o algo más.
imz - Ivan Zakharyaschev
El controlador de video y X resultaron no estar (estadísticamente) relacionados con mis bloqueos / reinicios con el kernel amd64. Es solo un misterio por ahora: bugs.launchpad.net/ubuntu/+source/upstart/+bug/1495116 .
imz - Ivan Zakharyaschev
2

Quizás, como me enfrento al mismo problema, esto funcionará, es lo que estaba planeando hacer:

Obtenga una versión de 64 bits del sistema operativo, instálela en una partición, cuando complete la copia de los documentos y otras cosas de la instalación de 32 bits, cuando todo esté copiado de manera segura, puede formatear el resto de la unidad y usarla.

ubuntufan
fuente
2

Sí, la línea de arquitectura extranjera es definitivamente vital para instalar CUALQUIER paquete de arcos cruzados. Pero después de eso, haga lo que otros usuarios mencionaron:

sudo apt-get update
sudo apt-get install linux-image:amd64
sudo apt-get install linux-modules:amd64
sudo init 6 #reboot into new kernel
sudo apt-get install apt:amd64
sudo apt-get install ubuntu-desktop:amd64

Eso debería hacerlo ...

realkstrawn93
fuente
¿Lo intentaste? realmente no funciona, tengo problemas una vez que comienza a reemplazar dpkg y perl por sus contrapartes amd64
Janus Troelsen
2

Mi receta para Ubuntu 16.04 Xenial, probado en Ubuntu VM de 32 bits recién instalado con sistema estándar y servidor SSH pero sin GUI:

sudo -s
dpkg --get-selections > pkg1
dpkg --add-architecture amd64
apt update
apt install linux-image-generic:amd64 thermald 

(de lo contrario, instalaría thermald: amd64 y no podría reiniciarlo en un kernel de 32 bits)

reboot

después de reiniciar con kernel de 64 bits:

sudo -s
unset LANG
apt install apt:amd64 apt-utils:amd64

escribe "Sí, haz lo que te digo" cuando se le pregunte, va a ser seguro

mkdir /tmp/upgrade 
cd /tmp/upgrade
pkgs() { dpkg -l | awk '$4=="'$1'"{print $2}' | awk -F: '{print $1}' | sort -u
}
apt download $(comm -23 <(pkgs i386) <(pkgs amd64))
while ls *amd64*deb
do dpkg -i *amd64*deb
   dpkg -l | awk '$1=="ii" && $4=="amd64" {print $2}' | awk -F: '{print $1}' |
   while read a
   do [ -f ${a}_*amd64*deb ] && rm ${a}_*amd64*deb
   done
done

En el bucle anterior, eliminamos los archivos .deb que se han instalado correctamente y obtuvieron el estado 'ii' en la lista dpkg.

necesitamos repetir dpkg -icarreras, ya que no tiene éxito desde el primer intento

reboot

ahora, con el kernel de 64 bits y el espacio de usuario, los paquetes i386 restantes se pueden eliminar:

dpkg --purge $(dpkg -l | awk '$4=="i386"{print $2}')

la lista que ha guardado en un pkgs1archivo que puede usar para cualquier otra necesidad.

Wladimir Mutel
fuente
Eso es un poco mágico, pero me ayudó a hacer una transición de 32 a 64 bits a través de SSH en una PC remota.
user271872
1

Buena pregunta. He tenido una búsqueda y aparte de la historia de usuario que cita, no puedo encontrar ningún detalle sobre cómo hacer esto. Toda la documentación indica que es solo para ejecutar aplicaciones de 32 bits en un sistema operativo ya de 64 bits.

Sin embargo, si está dispuesto a experimentar, puede intentar lo siguiente (derivado de mi enlace en [1])

 echo foreign-architecture amd64 | sudo tee /etc/dpkg/dpkg.cfg.d/multiarch
 sudo apt-get install linux-image:amd64

Creo que tendrá que comenzar con un núcleo amd64, ya que el de 32 bits no podrá ejecutar ningún binario de 64 bits. Sin embargo, el de 64 bits debe ejecutar binarios de 32 bits (si está instalado ia32-libs?).

Si obtiene el núcleo de 64 bits instalado y arrancado, puede ir desde allí para instalar apt: amd64, luego siga la historia del usuario como se citó anteriormente, ubuntu-minimal, ubuntu-desktop, etc.

Después de instalar apt: amd64, creo que puede eliminar la línea de arquitectura foránea ya que esencialmente ha cambiado en ese punto.

Descargo de responsabilidad: no tengo un sistema de 32 bits para probar, así que todo esto es conjetura. ¡Buena suerte!

[1] https://wiki.ubuntu.com/OneiricOcelot/TechnicalOverview/Beta1#Improved_handling_of_32-bit_compatibility_on_amd64_systems

Cesio
fuente
1

La clasificación cruzada (actualización a una arquitectura diferente) aún no es compatible.

planta rodadora
fuente