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.
la source
Réponses:
Oui. Certaines images prédéfinies sont prêtes à l'emploi:
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.
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.
la source
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éeia32-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.
la source
C:\Program Files
et les applications 32 bits sont stockées dansC:\Program Files (x86)
.SysWOW64
, et la version 64 bits, qui est stockée danssystem32
. Windows identifie l'exécutable et fait en sorte que l'application 32 bits voitSysWOW64
commesystem32
. La même chose se produit avecProgram Files
et le registre. Les applications 32 bits sontC:\Program Files (x86)
tout simplement évidentes,C:\Program Files
mais toutes les modifications y sont apportéesC:\Program Files (x86)
.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.
la source