Inhaltsverzeichnis
run x86_64 auf ARM
Auf einer ARM CPU basierenden Computer wie z.B. den Raspberry Pi möchte ich x86_64Bit Anwendungen ausführen. Dafür benötigt man zunächst einen Raspberry Pi ab der Version 3, denn hier ist sicher ein 64 Bit CPU verbaut. Ausserdem wird ein 64 Bit OS benötigt. Suse hatte schon recht früh 64Bit für ARM angeboten nun gibt es das auch vom Raspberry Pi OS.
box64
Mit box64
x86_64 Anwendungen auf ARM ausführen. Hier am Bespiel der x86_64 Bit Anwendung guarda:
box64 guarda
Man kann vorher noch Umgebungsvariablen setzen um das Verhalten von box64
zu beeinflussen.
export BOX64_NOBANNER=0 export BOX64_NOPULSE=1
schroot
Mit schroot
wird einem ein Teil der Arbeit abgenommen, es übernimmt das Mounten der benötigten Verzeichnisse aus dem Hauptsystem. Die gemounteten Pfade können, falls benötigt, unter /etc/schroot/desktop/fstab
bearbeitet werden.
Die neuen Pakete schroot
, qemu
und debootstrap
installieren + weitere:
sudo apt install schroot qemu qemu-user qemu-user-static binfmt-support debootstrap binutils
Eine Datei für eine neue chroot
Umgebung anlegen:
sudo nano /etc/schroot/chroot.d/bullseye-amd64
Mit dem Inhalt:
[bullseye-amd64] description=chroot-bullseye-amd64 aliases=kryptowallets directory=/home/pi/chroot-bullseye-amd64 users=root,pi type=directory profile=desktop personality=linux preserve-environment=false
Zunächst einmal den Ordner anlegen wo die schroot-Umgebung innewohnt:
mkdir ~/chroot-bullseye-amd64
Den schroot Dienst neu-starten:
systemctl restart schroot
Dann probieren einzuloggen, musste sein bei meinen Tests, da wohl dann erst weitere Ordner unter ~/chroot-bullseye-amd64 angelegt werden:
schroot -c kryptowallets
Mit debootstrap
die x86_64 Umgebung anlegen:
sudo debootstrap --foreign --arch amd64 bullseye ./chroot-bullseye-amd64/ http://ftp.us.debian.org/debian
Separating the two stages is only needed if you are bootstrapping a distribution for a foreign architecture (CrossDebootstrap). See the description of the –foreign
option on the man page. For example, using a x86 machine to create a Debian/Ubuntu installation for an embedded ARM or PowerPC system.
The first stage downloads the needed .deb files and unpacks them into the directory you specify. The second stage runs all of the package configuration scripts, which must be done using the target architecture (or by using qemu-user-static to emulate the target architecture).
If you're not building an install for a foreign architecture, the stages are combined and you can ignore the –second-stage
option.
Den Kommando zunächst nicht ausführen:
sudo chroot ./chroot-bullseye-amd64/ /debootstrap/debootstrap --second-stage
Dann evtl. noch den Dienst binfmt-support.service
neustarten:
systemctl restart binfmt-support.service
Ab nun kann man den chroot
Container betreten, als root:
sudo schroot -c kryptowallets
oder als normaler Nutzer:
schroot -c kryptowallets
Bei Fehlern
Hinweis: Es kann vorkommen, dass die chroot
hängen bleibt. Um die gemounteten Ressourcen wieder
frei zu bekommen, könnten folgende Befehle hilfreich sein…
Zeigt alle Sessions an die noch laufen.
sudo schroot -l --all-sessions
Beendet normalerweise alle Sessions
sudo schroot -e --all-sessions
Alternativ
sudo raspi-config # enable OpenGL driver sudo apt install -y debootstrap schroot cat << EOF | sudo tee /etc/schroot/chroot.d/pi64 [pi64] description=VC4 arm64 testing type=directory directory=/srv/chroot/pi64 users=pi root-groups=root profile=desktop personality=linux preserve-environment=true EOF sudo debootstrap --arch arm64 stable /srv/chroot/pi64 sudo schroot -c pi64 -- apt install -y mesa-utils minetest sudo schroot -c pi64
First you need to run the command below:
sudo apt install -y raspbian-nspawn-64
You'll be prompted to enable 64-bit. Select Yes, hit Enter and reboot the system. Then you should be good to go and run: