Acabo de tener en mis manos una Raspberry Pi 3 y me gustaría comenzar a experimentar con ella, especialmente con respecto al conjunto de instrucciones de 64 bits.
Soy consciente de los pros y los contras del conjunto de instrucciones de 32 bits versus el conjunto de instrucciones de 64 bits, por lo que debe atenerse a la pregunta original: ¿es posible ejecutar un núcleo de 64 bits utilizando las aplicaciones de espacio de usuario actuales de 32 bits? ?
Es suficiente compilar el kernel con un compilador de 64 bits y cargar la imagen en RasPi o ¿hay algún otro paso involucrado que deba tener en cuenta? ¿Podría darme una descripción general de alto nivel de lo que debería mirar como una hoja de ruta? Al igual que los módulos / controladores que podrían / se romperán si instalo el kernel de 64 bits. ¿Necesito recompilar todo?
Navegando por Internet, sé que es posible para algunas otras clases de dispositivos, y que, por lo general, ejecutar esta configuración "híbrida" rompería los administradores de paquetes, pero en este momento no me preocupa la capacidad de administración. Entonces, incluso si rompe los administradores de paquetes y es un infierno mantenerlo, me gustaría entender cómo se hace.
Tenga en cuenta que todavía estoy aprendiendo cómo compilar el núcleo, pero todavía tengo experiencia desarrollando aplicaciones C / C ++ durante mucho tiempo. Este es mi proyecto favorito para tener una comprensión profunda de la arquitectura de Linux y los elementos internos del kernel.
fuente
Respuestas:
Si. Algunas imágenes preconstruidas tienen esto listo para usar:
No es práctico usar multiarch con Raspbian, ya que no tiene paquetes ascendentes de 64 bits, y el pariente más cercano de 64 bits (Debian arm64) tiene versiones de paquetes incompatibles. Para ejecutar programas de 64 bits en Raspbian, puede usar binarios estáticos, contenedores (LXC, systemd-nspawn) o chroot [1] . Tal aislamiento evita los típicos conflictos de paquetes inherentes a la mutiarca.
No necesita volver a compilar nada porque los binarios para todo lo anterior (Raspbian 32-bit userland, 64-bit kernel, Debian arm64 userland paquetes) están fácilmente disponibles.
Al momento de escribir la cámara SoC, se sabe que la decodificación de video acelerada con MMAL y el soporte USB de alta velocidad (a través de FIQ) están rotos bajo los núcleos Raspberry Pi de 64 bits.
[1] Consulte el sistema operativo de 64 bits en Raspberry Pi 4 para obtener instrucciones sobre cómo crear tal chroot.
fuente
Claro que es posible. Los sistemas operativos de 64 bits lo hacen todo el tiempo *. Ocurre cuando estás en un sistema operativo de 64 bits y abres una aplicación de 32 bits (también conocida como aplicación de espacio de usuario de 32 bits).
Pero a veces, puede haber problemas con las bibliotecas / dependencias. Una vez encontré un error en una PC , algo sobre
wrong ELF class
. Se solucionó instalando la biblioteca de 32 bits adecuadaia32-libs
.No estoy muy seguro de cómo se comportaría esto en una máquina ARM ya que no hay un kernel oficial de 64 bits para el Pi con el que pueda jugar (todavía).
Además, uno no solo compila el núcleo con un compilador de 64 bits, sino que lo carga en el Pi. Si fuera así de simple, ya estaríamos ejecutando el Pi 3 con un núcleo de 64 bits.
fuente
C:\Program Files
y las aplicaciones de 32 bits se almacenan enC:\Program Files (x86)
.SysWOW64
, y la de 64 bits, que está almacenadasystem32
. Windows identifica el ejecutable y lo hace para que la aplicación de 32 bits veaSysWOW64
comosystem32
. Lo mismo sucede conProgram Files
el registro. Las aplicaciones de 32 bits se venC:\Program Files (x86)
como simples,C:\Program Files
pero cualquier cambio se aplicaC:\Program Files (x86)
.Necesita ambos conjuntos de bibliotecas y ambas arquitecturas compiladas en las bibliotecas correctas, por lo que 2 entornos de compilación. Busque múltiples arcos y su bsse preferido para obtener punteros. Me gusta
https://wiki.debian.org/MultiarchCrossToolchainBuild
Entonces necesitarías hacer algo así pero en el espacio Rasbian. Por lo tanto, la construcción de un kernel arm64 y la tierra de usuario armhf y ambos conjuntos de bibliotecas correctamente vinculados para cada uno.
Aquí puedes ver a alguien haciéndolo en un tablero diferente:
https://groups.google.com/forum/#!topic/linux.debian.ports.arm/ankucgztcI8
Y ver sus experiencias.
fuente