Est-il possible d'exécuter Raspberry Pi 3 avec un noyau 64 bits et un espace utilisateur 32 bits?


8

Je viens de mettre la main sur un Raspberry Pi 3 et je voudrais commencer à l'expérimenter, en particulier en ce qui concerne le jeu d'instructions 64 bits.

Je connais bien les avantages et les inconvénients du jeu d'instructions 32 bits par rapport au jeu d'instructions 64 bits, veuillez donc vous en tenir à la question d'origine: est-il possible d'exécuter un noyau 64 bits en utilisant les applications actuelles de l'espace utilisateur 32 bits ?

Il suffit de compiler le noyau avec un compilateur 64 bits et de télécharger l'image sur RasPi ou y a-t-il d'autres étapes que je devrais connaître? Pourriez-vous me donner un aperçu de haut niveau de ce que je devrais considérer comme une feuille de route? Comme, les modules / pilotes qui pourraient / se casseraient si j'installe le noyau 64 bits. Dois-je tout recompiler?

En naviguant sur Internet, je sais que c'est possible pour d'autres classes d'appareils, et qu'en général, l'exécution de cette configuration "hybride" briserait les gestionnaires de paquets, mais je ne suis pas inquiet par la facilité de gestion pour le moment. Donc, même si cela casse les gestionnaires de paquets et que c'est un enfer à entretenir, j'aimerais comprendre comment c'est fait.

Sachez que j'apprends toujours à compiler le noyau, mais j'ai encore de l'expérience en développement d'applications C / C ++ depuis longtemps. C'est mon projet favori d'avoir une compréhension approfondie de l'architecture Linux et des internes du noyau.


Le dragonboard 410c utilise le même processeur arm64 bit et possède un ubuntu personnalisé par linaro.

Réponses:


3

Est-il possible d'exécuter Raspberry Pi 3 avec un noyau 64 bits et un espace utilisateur 32 bits?

Oui. Certaines images prédéfinies sont prêtes à l'emploi:

exécuter généralement cette configuration "hybride" briserait les gestionnaires de paquets, mais je ne suis pas inquiet par la gérabilité pour le moment. Donc même si ça casse les gestionnaires de paquets et c'est un enfer de maintenir

Il n'est pas pratique d'utiliser multiarch avec Raspbian car il n'a pas de paquets en amont 64 bits, et le parent 64 bits le plus proche (Debian arm64) a des versions de paquets incompatibles. Pour exécuter des programmes 64 bits sous Raspbian, vous pouvez utiliser des binaires statiques, des conteneurs (LXC, systemd-nspawn) ou chroot [1] . Un tel isolement évite les conflits de packages typiques inhérents à mutiarch.

Vous n'avez pas besoin de recompiler quoi que ce soit car les binaires pour tout ce qui précède (Raspbian 32 bits userland, noyau 64 bits, Debian arm64 userland packages) sont facilement disponibles.

Comme, les modules / pilotes qui pourraient / se casseraient si j'installe le noyau 64 bits.

Au moment de la rédaction de la caméra SoC, le décodage vidéo accéléré avec MMAL et la prise en charge USB haute vitesse (via FIQ) étaient connus pour être rompus sous les noyaux Raspberry Pi 64 bits.

[1] Voir OS 64 bits sur Raspberry Pi 4 pour des instructions sur la façon de créer un tel chroot.


2

Bien sûr, c'est possible. Les systèmes d'exploitation 64 bits le font tout le temps *. Cela se produit lorsque vous utilisez un système d'exploitation 64 bits et que vous ouvrez une application 32 bits (également appelée application d'espace utilisateur 32 bits).

Mais parfois, il peut y avoir des problèmes avec les bibliothèques / dépendances. J'ai rencontré une fois une erreur sur un PC , quelque chose wrong ELF class. Résolu en installant la bibliothèque 32 bits appropriée ia32-libs.

Je ne sais pas trop comment cela se comporterait sur une machine ARM car il n'y a pas encore de noyau 64 bits officiel pour le Pi avec lequel je peux jouer.

De plus, on ne compile pas simplement le noyau avec un compilateur 64 bits pour le télécharger sur le Pi. Si c'était aussi simple, nous exécuterions déjà le Pi 3 avec un noyau 64 bits.


+1 Windows rend cela très évident avec la division des fichiers programme. Les applications 64 bits sont stockées dans C:\Program Fileset les applications 32 bits sont stockées dans C:\Program Files (x86).
Jacobm001

1
@ Jacobm001 Il y a une différence plus subtile avec Windows. Sous Linux, vous aviez simplement besoin des bibliothèques 32 bits appropriées. Pour Windows, il existe techniquement deux versions de Windows installées sur votre PC: la version 32 bits, qui est stockée dans SysWOW64, et la version 64 bits, qui est stockée dans system32. Windows identifie l'exécutable et fait en sorte que l'application 32 bits voit SysWOW64comme system32. La même chose se produit avec Program Fileset le registre. Les applications 32 bits sont C:\Program Files (x86)tout simplement évidentes, C:\Program Filesmais toutes les modifications y sont apportées C:\Program Files (x86).
PNDA

1
@ Jacobm001 Je m'amuse lors des fêtes.
PNDA

2

Vous avez besoin des deux ensembles de bibliothèques et des deux architectures compilés avec les bonnes bibliothèques, donc 2 environnements de construction. Recherchez multi arch et votre bsse préféré pour obtenir des pointeurs. Comme

https://wiki.debian.org/MultiarchCrossToolchainBuild

Vous auriez donc besoin de faire quelque chose comme ça, mais dans l'espace Rasbian. Donc, construire un noyau arm64 et un terrain utilisateur armhf et les deux ensembles de bibliothèques correctement liés pour chacun.

Ici, vous pouvez voir quelqu'un le faire sur un autre tableau:

https://groups.google.com/forum/#!topic/linux.debian.ports.arm/ankucgztcI8

Et voyez leurs expériences.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.