64-Bit-Architektur

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

  1. Installation von Programmen

  2. Bearbeiten von Paketquellen

  3. Ein Terminal öffnen

Inhaltsverzeichnis
  1. 64-bit Unterstützung prüfen
  2. Unterschiede zwischen ia64 und amd64
  3. 32-Bit-Programme erzwingen
    1. linux32
    2. chroot
    3. 32-Bit-Bibliotheken
    4. --force-architecture

Wiki/Icons/ubuntu64.png Die 64-Bit-Architektur ist bei fast allen neueren CPUs Standard. Ubuntu gibt es bereits seit Breezy Badger 5.10 als 64-Bit Version. Diese funktioniert auf allen 64-Bit-Prozessoren mit AMD64- oder Intel 64-Architektur. Seit 17.10 gibt es Ubuntu Desktop nur noch als 64-Bit Version, seit 18.04 gibt es ebenfalls Ubuntu Server nur als 64-Bit Version. Nur einzelne Derivate gibt es noch als 32-Bit Version.

64-bit Unterstützung prüfen

Ob die eigene CPU 64-Bit fähig ist kann man mit folgendem Befehl herausfinden[3]:

lscpu 

Wird dort gleich zu Beginn 64-bit neben 32-bit gelistet, dann bietet der Prozessor auch eine 64-Bit Unterstützung.

Hat der Prozessor keine 64-Bit Unterstützung findet man im Wikiartikel 32-Bit-Architektur weitere Informationen.

Unterschiede zwischen ia64 und amd64

Viele Benutzer sind verwirrt, da viele Intel-Prozessoren den amd64-Befehlssatz beherrschen. Dies hängt damit zusammen, dass dieser von AMD entwickelt und von Intel nur implementiert wurde. amd64 hatten anfangs nur der Athlon 64 Prozessor und entsprechende Opterons, später dann aber auch der Pentium 4 und dessen Nachfolger mit der Bezeichnung Intel 64.

ia64 haben nur die Intel-Itanium-Prozessoren. Auf solchen kann x86 im Emulationsmodus genutzt werden. Ein Itanium kann kein amd64 bzw. Intel 64. Man muss auf die 32-bit-Version von Ubuntu ausweichen.

32-Bit-Programme erzwingen

Es ist auch möglich, 32-Bit-Programme auf der 64-Bit-Ubuntu-Version ablaufen zu lassen - schließlich sind die oben genannten AMD64/EM64T-Architekturen lediglich 64-Bit-Erweiterungen der 32-Bit-Vorgänger (ein 32-Bit-Programm wird nicht über einen 32-Bit-Emulator transformiert).

Folgende Möglichkeiten zeigen, wie man 32-Bit-Anwendungen installieren bzw. nutzen kann.

linux32

Hinweis:

Man sollte diese Schritte nur durchführen, wenn es keine x64-Version der Software gibt, die man installieren möchte. Gerade bei Installationsskripten sollte Vorsicht geboten sein.

Der Befehl linux32 bietet die Möglichkeit, Programme zum Laufen zu bringen, die prüfen, ob sie auf einem 32-Bit-System installiert sind.

linux32 firefox 

Man setzt also einfach linux32 vor den Befehl, damit das nachfolgend aufgerufene Programm "denkt", es liefe auf einem 32-Bit-System.

chroot

Ein eleganterer, aber auch etwas komplexerer Lösungsansatz ist die Einrichtung einer 32-Bit chroot-Umgebung.

32-Bit-Bibliotheken

Manche der erfolgreich installierten (oder auch nur entpackten) 32-Bit-Programme brechen mit Fehlermeldungen ab, weil eine bestimmte Bibliothek nicht gefunden wurde, obwohl die Bibliothek in /usr/lib/ existiert. Hier ein Beispiel anhand des hypothetischen Programms foobar. Der Aufruf via:

./foobar 

führt zu einer Fehlermeldung:

./foobar: error while loading shared libraries: libmng.so.1: cannot open shared object file: No such file or directory

Der Grund dafür ist, dass die benötigte Bibliothek nicht in der 32-Bit-Version in /usr/lib32/ vorliegt. Wegen MultiArch-Unterstützung kann in der Regel das zugehörige 32-Bit-Paket parallel installiert werden. In dem Fall schaut mal also zu welchem Paket die benötigte Bibliothek gehört:

dpkg -S libmng.so.1 

libmng1:amd64: /usr/lib/x86_64-linux-gnu/libmng.so.1
libmng1:amd64: /usr/lib/x86_64-linux-gnu/libmng.so.1.1.0.10

Der Paketname ist in diesem Fall libmng1:amd64 (bzw. libmng1). Die Architektur ersetzt man nun durch i386 und installiert [1] das entsprechende Paket, hier libmng1:i386.

Unter Umständen muss MultiArch erst aktiviert werden:

sudo dpkg --add-architecture i386
sudo apt-get update 

Der in alten Anleitungen manchmal zu findende Tipp, stattdessen ia32-libs nachzuinstallieren, ist seit Ubuntu 13.10 nicht mehr möglich, da das Paket aus den offiziellen Paketquellen entfernt wurde.

--force-architecture

Im Normalfall wird beim Versuch, ein für einen 32-Bit-Prozessor kompiliertes Programm auf einem 64-Bit-Ubuntu zu installieren, keine Fehlermeldung ausgegeben, sondern die 32-Bit-Abhängigkeiten dank MultiArch passend installiert.

Wird man trotzdem mit einer Fehlermeldung konfrontiert, so deutet dies mit sehr hoher Wahrscheinlichkeit auf nicht gut gewartete Fremdpakete hin.

sudo dpkg -i paketname.deb 
dpkg: Fehler beim Bearbeiten von opera_9.01-20060728.6-shared-qt_en_i386.deb (--install):
 Paket-Architektur (i386) passt nicht zum System (amd64)
Fehler traten auf beim Bearbeiten von:
 opera_9.01-20060728.6-shared-qt_en_i386.deb

Bei Verwendung des Debian Paketmanagers dpkg kann man diese Fehlermeldung mit dem Parameter --force-architecture umgehen [3]:

sudo dpkg --force-architecture -i opera_9.01-20060728.6-shared-qt_en_i386.deb 
dpkg - Warnung: Problem wird übergangen, weil --force angegeben ist:
 Paket-Architektur (i386) passt nicht zum System (amd64)
Wähle vormals abgewähltes Paket opera.
dpkg: Ziehe Entfernen von opera-static zugunsten von opera in Betracht ...
dpkg: Ja, werde opera-static zugunsten von opera entfernen.
(Lese Datenbank ... 116778 Dateien und Verzeichnisse sind derzeit installiert.)
Entpacke opera (aus opera_9.01-20060728.6-shared-qt_en_i386.deb) ...
Richte opera ein (9.01-20060728.6) ...

Achtung!

Dieser Parameter ignoriert lediglich die Prüfung der korrekten Architektur. Es gibt keine Garantie, dass ein so installiertes Paket auch einwandfrei funktioniert!

Hinweis:

Der Paketbetreuer sollte auf diese Inkompatibilität hingewiesen werden.

Sollte das Ignorieren der Prüfung der korrekten Architektur nicht ausreichen, können die fehlenden Abhängigkeiten ebenfalls durch apt mit installiert werden, wenn zuvor 32-Bit aktiviert wurde:

sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt install PAKET 

Für PAKET ist hier entsprechend die Datei einzusetzen.