Wiki

64bit-Architektur

64bit-Architektur

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

Was heißt 64 Bit?

Viele frisch gebackene Besitzer eines Rechners mit 64-Bit-CPU haben bisher nur eine grobe Vorstellung, was "64 Bit" eigentlich bedeutet. Meist wird 64 = 2 * 32 gleichgesetzt. Dass dies nicht (immer) stimmt, macht ein einfaches Beispiel deutlich: auch wenn die Autobahn doppelt so breit ist, wird mein Käfer trotzdem nicht schneller und kommt nicht früher ins Ziel. :-)

Denn genau dies heißt 64 Bit: der Prozessor bietet "breitere" Wege für die interne Datenübertragung. Ob ein Lastwagen (Programm) damit nun mehr Ware (mehr Daten/Leistung) in der gleichen Zeit transportieren kann, hängt davon ab, ob er den breiteren Weg (64 statt 32 Bit) auch zusätzlich nutzen kann.

Konkret heißt das für Computerprogramme: Wenn man seine Daten nicht nur in 32-Bit-, sondern auch in 64-Bit-Häppchen aufteilen kann, dann kann man auf einmal (= in einem Taktzyklus) doppelt so viele Daten transportieren (bzw. damit rechnen) wie vorher. Insofern gilt hier die theoretisch richtige Formel 64 Bit = 2 * 32 Bit, also doppelt so schnell. In der Realität muss aber auch mal ein kleiner Laster mit ein paar Kisten Äpfeln über die Autobahn, d.h. die Autobahn wird nicht in voller Breite ausgenutzt und damit nur ein Teil der 64 Bit geliefert - der Laster transportiert die gleiche Menge in der gleichen Zeit auf beiden Autobahnen (32 und 64 Bit). In diesen Fällen bringt 64 Bit keinen Vorteil. Zusätzlich zur Steigerung der Geschwindigkeit bietet 64 Bit aber auch einen größeren Adressraum, d.h. es kann statt 232 = 4 GB nun 264 = 16 Milliarden GB = 16 EB (ExaByte) Speicher adressiert werden (Merke: jedes zusätzliche Bit verdoppelt den Adressraum!). Aktuell nutzen die Prozessoren jedoch "nur" 248 = 256 Terabyte.

64 Bit bietet somit theoretisch die doppelte Leistung von 32 Bit. Dazu müssen aber alle Programme komplett auf 64 Bit optimiert sein und selbst dann wird es nie zu einer Verdopplung der Leistung kommen, da z.B. 2 * 2 auch in 64 Bit nicht schneller gerechnet wird (siehe Apfel-LKW). Es kommt somit auf die Programme (Fahrzeuge) an, wie gut sie die 64 Bit (doppelt so breite Straße) ausnutzen. Besonders rechenintensive Programme aus den Bereichen Fraktalberechnung {en} , Raytracing {en} , BOINC etc., deren Hauptaufgabe die Berechnung mathematischer (physikalischer) Modelle ist, können in einer entsprechend optimierten 64-Bit-Variante praktisch doppelt so schnell werden. Für andere Programme im Büroalltag (E-Mail, Browser, Textverarbeitung etc.) liegt der Leistungszuwachs irgendwo zwischen 0 und 100%.

Wer sollte Ubuntu 64-bit installieren?

Früher gab es viele Programme, die nicht in einer 64-Bit-Version zur Verfügung standen, sodass die Arbeit mit dem Betriebssystem nur eingeschränkt möglich war. Es gibt zwar, wie unten zu sehen, auch Möglichkeiten 32-Bit-Programme in einem 64-Bit-System auszuführen, aber nicht immer führt dieser Weg zum gewünschten Ziel. In den letzten Jahren hat sich aber einiges getan, sodass man heute kaum noch Abstriche machen muss, wenn man ein 64-Bit-System installiert. Allerdings existiert immer noch die eine oder andere Schwachstelle.

Zusätzlich ist ab einer Grenze von ca. 3-3,5 GB RAM eine 64-Bit-Version auch deswegen interessant, da ein 32-Bit-Prozessor nicht mehr Speicher ohne Weiteres adressieren kann. Es gibt zwar eine Abhilfe namens PAE (Physical Adress Extension), die probiert, den Speicherplatz bis 4 GB darüber wieder "anzukleben" (Memory Remapping), was jedoch nicht immer reibungslos funktioniert (siehe c't 2008/08, S. 112 ff. {de}). Des Weiteren stehen den erstellten Prozessen maximal jeweils 3 GB Speicher zur Verfügung.

Es sei aber darauf hingewiesen, dass man nicht zwingend die 64-Bit-Version von Ubuntu installieren muss, wenn man eine 64-Bit-CPU (heutzutage gibt es kaum mehr andere) im Rechner hat.

Ubuntu 64-Bit-Version

Wiki/Icons/ubuntu64.png Schon seit Version 5.10 (Breezy Badger) bietet Canonical eine 64 Bit-Variante von Ubuntu für PCs zum Download an. Diese funktioniert auf allen 64 Bit-Prozessoren mit AMD64-(AMD Athlon 64 und Phenom) oder EM64T-(Intel Core 2 und Core i7) Architektur.

Natürlich kann auf solchen Rechnern auch die herkömmliche 32 Bit-Version installiert werden. Dann läuft der Rechner aber in einem "32-Bit-Modus" - sowohl der Linux-Kernel als auch alle Softwarekomponenten (Programme, Bibliotheken etc.) werden dann in einer 32-Bit-Version installiert. 64-Bit-Programme funktionieren damit nicht.

Installation

Die Installation ist völlig identisch zur 32-Bit-Version, d.h. man lädt sich die passende CD herunter bzw. installiert einfach von der CD mit der Aufschrift "... for your 64-bit PC". Alles weitere sieht genauso aus wie bei der 32-Bit-Version.

So werden auch nachträglich Programme installiert, ohne spezielle Angaben für 64-Bit zu machen: Die Installationsprogramme (z.B. Synaptic oder apt-get) suchen automatisch nach der 64-Bit-Version des zu installierenden Paketes. Wenn dieses nicht vorhanden ist, wird ein entsprechender Fehler ausgegeben.

404NotFound.png

Hier sieht man, dass automatisch die 64-Bit-Version gesucht wurde (Unterverzeichnis binary-amd64), aber die Quelle keine 64-Bit-Versionen (Packages.gz) zur Verfügung stellt. Es steht jedoch fast jedes Programm - aus den offiziellen Paketquellen - auch in einer 64-Bit-Version zur Verfügung.

Unterschiede zur 32-Bit-Version

Naturgemäß läuft die 64-Bit-Version auf einem 64-Bit-Prozessor. Vergleicht man die 32-Bit-Version von Ubuntu mit der 64-Bit-Version auf der gleichen 64-Bit-CPU, so stellt man zunächst fest, dass die Verarbeitungsgeschwindigkeit der 64-Bit-Version teilweise merklich höher ist. Dies liegt an den eingangs erklärten Vorteilen einer 64-Bit-Architektur und den in 64-Bit kompilierten Komponenten (Kernel, Bibliotheken, Programme).

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). Im Normalfall wird man beim Versuch, ein in 32-Bit kompiliertes Programm auf einem 64-Bit-Ubuntu zu installieren, mit einer Fehlermeldung konfrontiert (das Beispiel ist nur zur Anschauung, von Opera existiert seit Version 9.5 auch ein 64-Bit-Paket):

sudo dpkg -i opera_9.01-20060728.6-shared-qt_en_i386.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

oder bei Verwendung des Paket-Installers:

WrongArchitecture.png

Folgende Möglichkeiten zeigen, wie man dennoch solche 32-Bit-Anwendungen installieren kann. Das folgende Beispiel verwendet die 32-Bit-Version von Opera, wobei es wie gesagt seit Opera 9.5 auch eine 64-Bit-Version gibt.

--force-architecture

Bei Verwendung des Debian Package Managers 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!

linux32

Das Paket linux32 kann einfach nachinstalliert werden (ab Ubuntu 8.04 Hardy Heron ist die Nachinstallation des Pakets linux32 nicht mehr notwendig) und bietet die Möglichkeit, Programme zum Laufen zu bringen, die prüfen, ob sie auf einem 32-Bit-System installiert sind. Zum Beispiel den Flashplayer (der inzwischen in Version 10 aber auch als 64-Bit-Version existiert (alpha!)):

cd install_flash_player_7_linux/
sudo linux32 ./flashplayer-installer 

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

chroot

Eine 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 anhand des Programmes ManDVD (das aber inzwischen auch als 64-Bit-Version vorhanden ist):

./mandvd 
./mandvd: 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. Hierfür gibt es die ia32-*-Pakete [1]:

  • ia32-java-gcj-compat (nur bis Gutsy verfügbar, universe, [2]) - GCJ-Java Laufzeitumgebung

  • ia32-libs (universe) - allgemeine Bibliotheken

  • ia32-libs-gtk (seit Feisty in universe, seit Gutsy im Paket ia32-libs enthalten) - GTK+-Bibliotheken für GNOME-Anwendungen

  • ia32-libs-kde (ab Feisty in universe und nur bis Gutsy verfügbar) - KDE-Bibliotheken

  • ia32-libs-openoffice.org (nur in Dapper in universe verfügbar) - Bibliotheken für OpenOffice.org, enthält die Datei libaudio.so (wird z.B. für Skype benötigt)

  • ia32-libs-sdl (universe, seit Gutsy im Paket ia32-libs enthalten) - SDL-Bibliotheken, häufig von Spielen und Multimedia-Anwendungen benutzt

  • ia32-sun-java5-bin (multiverse) - Die Java-Laufzeitumgebung von Sun in Version 5

  • ia32-sun-java6-bin (multiverse) - Die Java-Laufzeitumgebung von Sun in Version 6

32-Bit-Bibliotheken automatisch installieren

Hat man die Installation eines 32-Bit-Paketes auf einem 64-Bit-System erzwungen, so ist dieses zwar installiert, doch mit hoher Wahrscheinlichkeit lässt es sich nicht ausführen. Oft fehlen Bibliotheken, die auch in einer 32-Bit-Version auf dem System installiert sein müssten. Mit dem Programm getlibs kann man diese Bibliotheken schnell und bequem installieren.

Installationsanleitungen

Wiki/Icons/config.png Es gibt einige Programme, die nur als 32-Bit-Version vorhanden sind, aber auf einem 64-Bit-System laufen:

Bisher explizit nicht unterstützte Programme und Treiber

Wiki/Icons/button_cancel.png

Ausblick

Wiki/Icons/improvements.png Wie man dieser Anleitung ansieht, sind viele der Beispiele inzwischen veraltet, da die genannten Programme alle auch in 64-Bit-Versionen vorliegen. 64-Bit-Prozessoren und Betriebssysteme (hauptsächlich UNIXe wie Linux und damit auch Ubuntu) gibt es zwar schon seit einigen Jahren für den Massenmarkt, aber erst seit relativ kurzer Zeit werden auch die Programme nach und nach in speziellen 64-Bit-Versionen angeboten. In vielen Anwendungsbereichen wird eine wesentliche Leistungssteigerung gegenüber den 32-Bit-Versionen aber erst erreicht, wenn die Programme auch entsprechend für 64 Bit optimiert sind.

Diese Revision wurde am 2. Mai 2010 um 03:17 Uhr von BugFinder erstellt.
Dieser Seite wurden folgende Begriffe zugeordnet: System

Passwort vergessen?