Infelizmente minha mobo estragou e tenho que construir uma nova máquina do zero. Não me lembro se carreguei originalmente a versão de 32 ou 64 bits do sistema operacional, (K)ubuntu 14.04.
Se eu montar o HDD existente, há algum arquivo que possa examinar para determinar a arquitetura do sistema operacional? Precisa ser algo mais do que a presença de um executável ou biblioteca de 64 bits, pois essas não são formas confiáveis de determinar o sistema operacional em execução.
Não consigo executar uname -a
porque este é um disco montado e não um sistema operacional em execução.
Responder1
É trivial determinar se o sistema operacional host tem um kernel de 32 ou 64 bits executando:
uname --machine
Uma saída i386
significa 32 bits e x86_64
significa 64 bits.
É menos trivial, mas ainda viável, determinar se um aplicativo é compilado para a arquitetura i386 ou amd64, mas nenhum deles indicará a arquitetura do kernel. Mesmo a verificação /sbin/init
não é tecnicamente suficiente, uma vez que o programa init pode ser personalizado durante a inicialização.
A única maneira infalível de determinar a arquitetura do kernel é inicializá-lo. Felizmente, isso pode ser feito facilmente usando qemu
.
Comece abrindo um terminal e navegando até /boot
o disco rígido. Você encontrará uma ou mais imagens de kernel compactadas no formato:
vmlinuz-[versão]-[tipo]
Por exemplo, estou vmlinuz-3.19.0-21-generic
presente /boot
na minha máquina. Agora, supondo que você tenha oqemu-sistema-x86pacote instalado, execute o seguinte comando, substituindo o nome do arquivo quando apropriado:
qemu-system-i386 -kernel <path_to_kernel>
Se você vir uma parede de texto rolando e eventualmente entrar em pânico (porque o FS raiz está faltando), você instalou um kernel de 32 bits. Se, em vez disso, você receber um erro semelhante ao exibido abaixo, você tem um kernel de 64 bits (que não inicializa em uma CPU x86).
Responder2
Concordo que em geral a mera presença de um determinado tipo de executável ou biblioteca não é útil porque é possível ter objetos de mais de uma arquitetura instalados, mas existem alguns executáveis dos quais você só pode ter um. file /mnt/usr/bin/dpkg
(substituindo /mnt
por onde você montou seu sistema de arquivos) informará se o gerenciador de pacotes principal é de 32 ou 64 bits, o que é um indicador preciso do resto do sistema, a menos que você esteja no meio de uma migração local de um para o outro - você certamente saberia se estivesse!
Responder3
Observe a organização dos diretórios a partir da raiz do seu disco rígido antigo, este método é análogo a procurar os diretórios "Arquivos de Programas" e "Arquivos de Programas (x86)" se for um sistema operacional Windows.
No Linux, se for de 64 bits, você verá os diretórios "lib32" e "lib64", enquanto se for de 32 bits, você encontrará apenas o diretório lib (não me lembro agora se haveria um diretório lib32 também).
Se você não confia no método sugerido ou precisa de mais garantias, o comando “file” parece promissor. Olhando para a resposta do @ColinWatson, pessoalmente, acho que /sbin/init é um candidato melhor, mas qualquer um desses arquivos (dpkg ou init) corresponderá ao arco do Kernel.
Por exemplo, a execução de file /sbin/init
fornecerá uma saída como esta:
/sbin/init: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24
Basta substituir o caminho para /sbin/init pelo ponto de montagem adequado da sua partição raiz antiga, se for agora /media/oldroot
, o caminho completo se tornará/media/oldroot/sbin/init