Ich habe gerade einen Raspberry Pi 3 in die Hände bekommen und möchte damit experimentieren, insbesondere mit dem 64-Bit-Befehlssatz.
Ich bin mir der Vor- und Nachteile des 32-Bit-Befehlssatzes gegenüber dem 64-Bit-Befehlssatz bewusst. Halten Sie sich daher bitte an die ursprüngliche Frage: Ist es möglich, einen 64-Bit-Kernel unter Verwendung der aktuellen 32-Bit-User-Space-Anwendungen auszuführen? ?
Es reicht aus, den Kernel mit einem 64-Bit-Compiler zu kompilieren und das Image auf RasPi hochzuladen, oder sind andere Schritte erforderlich, die ich beachten sollte? Könnten Sie mir einen umfassenden Überblick darüber geben, was ich als Roadmap betrachten soll? Wie Module / Treiber, die kaputt gehen könnten / werden, wenn ich den 64-Bit-Kernel installiere. Muss ich alles neu kompilieren?
Surfen im Internet Ich weiß, dass es für einige andere Geräteklassen möglich ist und dass das Ausführen dieser "Hybrid" -Konfiguration normalerweise die Paketmanager beschädigen würde, aber ich bin im Moment nicht besorgt über die Verwaltbarkeit. Selbst wenn es Paketmanager kaputt macht und es eine Hölle ist, es aufrechtzuerhalten, würde ich gerne verstehen, wie es gemacht wird.
Bitte beachten Sie, dass ich noch lerne, wie man den Kernel kompiliert, aber ich habe noch lange Erfahrung in der Entwicklung von C / C ++ - Anwendungen. Dies ist mein Lieblingsprojekt, um ein tiefes Verständnis der Linux-Architektur und der Kernel-Interna zu erlangen.
quelle
Antworten:
Ja. Einige vorgefertigte Bilder haben Folgendes bereit:
Es ist nicht praktisch, Multiarch mit Raspbian zu verwenden, da es keine 64-Bit-Upstream-Pakete enthält und der nächste 64-Bit-Verwandte (Debian arm64) inkompatible Paketversionen hat. Um 64-Bit-Programme unter Raspbian auszuführen, können Sie statische Binärdateien, Container (LXC, systemd-nspawn) oder chroot [1] verwenden . Eine solche Isolation vermeidet typische Paketkonflikte, die dem Mutiarchen innewohnen.
Sie müssen nichts neu kompilieren, da Binärdateien für alle oben genannten (Raspbian 32-Bit-Userland-, 64-Bit-Kernel-, Debian arm64-Userland-Pakete) leicht verfügbar sind.
Zum Zeitpunkt des Schreibens der SoC-Kamera ist bekannt, dass die beschleunigte Videodecodierung mit MMAL und die Hochgeschwindigkeits-USB-Unterstützung (über FIQ) unter Raspberry Pi 64-Bit-Kerneln fehlerhaft sind.
[1] Anweisungen zum Erstellen einer solchen Chroot finden Sie unter 64-Bit-Betriebssystem auf Raspberry Pi 4 .
quelle
Sicher ist es möglich. 64-Bit-Betriebssysteme tun dies ständig *. Dies passiert, wenn Sie ein 64-Bit-Betriebssystem verwenden und eine 32-Bit-App (auch bekannt als 32-Bit-User-Space-Anwendung) öffnen.
Manchmal kann es jedoch Probleme mit Bibliotheken / Abhängigkeiten geben. Ich habe einmal einen Fehler aufgetreten ist auf einem PC , etwas über
wrong ELF class
. Gelöst durch Installation der entsprechenden 32-Bit-Bibliothekia32-libs
.Ich bin mir nicht ganz sicher, wie sich dies auf einem ARM-Computer verhalten würde, da es (noch) keinen offiziellen 64-Bit-Kernel für den Pi gibt, mit dem ich spielen kann.
Außerdem kompiliert man den Kernel nicht einfach mit einem 64-Bit-Compiler, um ihn auf den Pi hochzuladen. Wenn es so einfach wäre, würden wir den Pi 3 bereits mit einem 64-Bit-Kernel ausführen.
quelle
C:\Program Files
und 32-Bit-Anwendungen in gespeichertC:\Program Files (x86)
.SysWOW64
, und die 64-Bit -Version, in der gespeichert istsystem32
. Windows identifiziert die ausführbare Datei und macht sie so, dass die 32-Bit-AppSysWOW64
als siehtsystem32
. Gleiches passiert mitProgram Files
und der Registrierung. 32-Bit-Apps werdenC:\Program Files (x86)
als einfach angesehen,C:\Program Files
aber alle Änderungen werden vorgenommenC:\Program Files (x86)
.Sie benötigen beide Bibliotheksgruppen und beide Architekturen, die für die richtigen Bibliotheken kompiliert wurden, also 2 Build-Umgebungen. Suchen Sie nach Multi Arch und Ihrem bevorzugten BSSE, um Zeiger zu erhalten. Mögen
https://wiki.debian.org/MultiarchCrossToolchainBuild
Sie müssten also so etwas tun, aber im rasbianischen Raum. Erstellen Sie also einen arm64-Kernel und ein armhf-Benutzerland und beide Bibliotheksgruppen, die für jede ordnungsgemäß verknüpft sind.
Hier können Sie jemanden sehen, der es auf einem anderen Board macht:
https://groups.google.com/forum/#!topic/linux.debian.ports.arm/ankucgztcI8
Und sehen Sie ihre Erfahrungen.
quelle