Acabei de colocar minhas mãos em um Raspberry Pi 3 e gostaria de começar a experimentá-lo, especialmente em relação ao conjunto de instruções de 64 bits.
Estou bem ciente dos prós e contras do conjunto de instruções de 32 bits versus o de 64 bits, portanto, fique com a pergunta original: É possível executar um kernel de 64 bits utilizando os aplicativos de espaço do usuário de 32 bits atuais ?
É suficiente compilar o kernel com o compilador de 64 bits e carregar a imagem no RasPi ou existem outras etapas envolvidas que eu deva estar ciente? Você poderia me dar uma visão geral de alto nível do que devo considerar como um roteiro? Como, módulos / drivers que podem / irão quebrar se eu instalar o kernel de 64 bits. Preciso recompilar tudo?
Navegando na Internet, sei que é possível para algumas outras classes de dispositivos, e que geralmente executar essa configuração "híbrida" quebraria os gerenciadores de pacotes, mas não estou preocupado com a capacidade de gerenciamento no momento. Portanto, mesmo que isso interrompa os gerenciadores de pacotes e seja um inferno para manter, eu gostaria de entender como isso é feito.
Esteja ciente de que ainda estou aprendendo a compilar o kernel, mas ainda tenho experiência no desenvolvimento de aplicativos C / C ++ por um longo tempo. Este é o meu projeto de estimação para ter uma compreensão profunda da arquitetura linux e das características internas do kernel.
fonte
Respostas:
Sim. Algumas imagens pré-construídas já estão prontas:
Não é prático usar multiarch com Raspbian, pois ele não possui pacotes upstream de 64 bits, e o parente mais próximo de 64 bits (Debian arm64) possui versões incompatíveis de pacotes. Para executar programas de 64 bits no Raspbian, você pode usar binários estáticos, contêineres (LXC, systemd-nspawn) ou chroot [1] . Esse isolamento evita conflitos típicos de pacotes inerentes ao mutiarch.
Você não precisa recompilar nada, pois os binários para todos os itens acima (terra do usuário Raspbian de 32 bits, kernel de 64 bits, pacotes Debian arm64 userland) estão prontamente disponíveis.
No momento da gravação da câmera SoC, a decodificação acelerada de vídeo com MMAL e o suporte USB de alta velocidade (via FIQ) são conhecidos por serem quebrados nos kernels do Raspberry Pi de 64 bits.
[1] Veja o SO de 64 bits no Raspberry Pi 4 para obter instruções sobre como criar um chroot.
fonte
Claro, é possível. Os sistemas operacionais de 64 bits fazem isso o tempo todo *. Isso acontece quando você está em um sistema operacional de 64 bits e abre um aplicativo de 32 bits (também conhecido como aplicativo de espaço do usuário de 32 bits).
Mas, às vezes, pode haver problemas com bibliotecas / dependências. Uma vez encontrei um erro em um PC , algo sobre
wrong ELF class
. Resolvido instalando a biblioteca de 32 bits apropriadaia32-libs
.Não tenho muita certeza de como isso se comportaria em uma máquina ARM, pois não há um kernel oficial de 64 bits para o Pi com o qual eu possa jogar (ainda).
Além disso, não basta compilar o kernel com um compilador de 64 bits e carregá-lo no Pi. Se fosse assim tão simples, já estaríamos executando o Pi 3 com um kernel de 64 bits.
fonte
C:\Program Files
e aplicativos de 32 bits são armazenadosC:\Program Files (x86)
.SysWOW64
, e a de 64 bits, que está armazenadasystem32
. O Windows identifica o executável e faz com que o aplicativo de 32 bits vejaSysWOW64
comosystem32
. O mesmo acontece comProgram Files
o registro. Os aplicativos de 32 bitsC:\Program Files (x86)
são simples,C:\Program Files
mas todas as alterações neleC:\Program Files (x86)
.Você precisa dos dois conjuntos de bibliotecas e das duas arquiteturas compiladas nas bibliotecas corretas, para que 2 criem ambientes. Procure multi-arch e seu bsse preferido para obter indicadores. Gostar
https://wiki.debian.org/MultiarchCrossToolchainBuild
Então, você precisaria fazer algo assim, mas no espaço Rasbian. Portanto, a construção de um kernel arm64 e de um usuário armhf e dois conjuntos de bibliotecas adequadamente vinculados para cada um.
Aqui você pode ver alguém fazendo isso em um quadro diferente:
https://groups.google.com/forum/#!topic/linux.debian.ports.arm/ankucgztcI8
E veja as experiências deles.
fonte