Lamentablemente mi mobo se estropeó y tengo que construir una nueva máquina desde cero. No recuerdo si cargué originalmente la versión de 32 o 64 bits del sistema operativo, (K)ubuntu 14.04.
Si monto el disco duro existente, ¿hay algún archivo que pueda examinar para determinar la arquitectura del sistema operativo? Debe ser algo más que la presencia de un ejecutable o una biblioteca de 64 bits, ya que estas no son formas confiables de determinar el sistema operativo en ejecución.
No puedo ejecutarlo uname -a
porque se trata de un disco montado, no de un sistema operativo en ejecución.
Respuesta1
Es trivial determinar si el sistema operativo host tiene un kernel de 32 o 64 bits ejecutando:
uname --machine
Una salida de i386
significa 32 bits y x86_64
significa 64 bits.
Es menos trivial, pero aún así factible, determinar si una aplicación está compilada para la arquitectura i386 o amd64, pero ninguna de ellas indicará la arquitectura del núcleo. Incluso la verificación /sbin/init
no es técnicamente suficiente ya que el programa init se puede personalizar en el momento del arranque.
La única manera infalible de determinar la arquitectura del kernel es arrancarlo. Afortunadamente, esto se puede hacer fácilmente usando qemu
.
Comience abriendo una terminal y navegando hasta /boot
el disco duro. Encontrará una o más imágenes del kernel comprimidas en el formato:
vmlinuz-[versión]-[tipo]
Por ejemplo, tengo vmlinuz-3.19.0-21-generic
presente en /boot
mi máquina. Ahora, suponiendo que tengas lasistema-qemu-x86paquete instalado, ejecute el siguiente comando, sustituyendo el nombre del archivo cuando corresponda:
qemu-system-i386 -kernel <path_to_kernel>
Si ve una pared de texto que se desplaza y eventualmente entra en pánico (porque falta el FS raíz), ha instalado un kernel de 32 bits. Si, en cambio, recibe un error similar al que se muestra a continuación, tiene un kernel de 64 bits (que no arrancará en una CPU x86).
Respuesta2
Estoy de acuerdo en que, en general, la mera presencia de un determinado tipo de ejecutable o biblioteca no es útil porque es posible tener objetos de más de una arquitectura instalados, pero hay algunos ejecutables de los que sólo se puede tener uno. file /mnt/usr/bin/dpkg
(reemplazando /mnt
con el lugar donde montó su sistema de archivos) le indicará si el administrador de paquetes principal es de 32 bits o de 64 bits, lo cual es un indicador preciso del resto del sistema a menos que esté en medio de una migración local. de uno a otro: ¡seguramente lo sabrías si lo fueras!
Respuesta3
Mire la organización de directorios desde la raíz de su antiguo disco duro, este método es análogo a buscar los directorios "Archivos de programa" y "Archivos de programa (x86)" si se trata de un sistema operativo Windows.
En Linux, si es de 64 bits, verá los directorios "lib32" y "lib64", mientras que si es de 32 bits solo encontrará el directorio lib (ahora no recuerdo si habría un directorio lib32 también).
Si no confía en el método sugerido o necesita más garantías, el comando "archivo" parece prometedor. Mirando la respuesta de @ColinWatson, personalmente, creo que /sbin/init es un mejor candidato, pero cualquiera de esos archivos (dpkg o init) coincidirá con el arco del Kernel.
Por ejemplo, la ejecución de file /sbin/init
proporcionará un resultado como este:
/sbin/init: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24
Simplemente reemplace la ruta a /sbin/init con el punto de montaje adecuado de su antigua partición raíz; si lo es ahora /media/oldroot
, la ruta completa se convierte en/media/oldroot/sbin/init