= Linux mit 64 Bit =

Da Linux ja sehr viele verschiedene Architekturen unterstützt, gibt es natürlich auch eine eigene Version für 64-Bit-PC-Systeme. Im Grunde sind die meisten heutzutage verkauften leistungsfähigen Prozessoren 64-Bit-Prozessoren, die jedoch immer auch unter 32-Bit laufen können.

Von Intel gibt es eine etwas ältere Architektur namens "ia64", die jedoch nicht mehr so bedeutend ist. Die meisten neueren Prozessoren laufen mit der "amd64"-Architektur. Dabei handelt es sich um alle 64-Bit-Prozessoren von AMD sowie um Intel-Prozessoren mit "EM64T".

Die breiteste Unterstützung für aussergewöhnliche Architekturen bieten sicherlich die [Debian Linux Ports|http://www.us.debian.org/ports/]. Dort gibt es auch eine [Seite zum amd64-Port|http://www.us.debian.org/ports/amd64/] (auch auf deutsch), die man lesen sollte.

Grundsätzlich kann man davon ausgehen, daß so gut wie alle Debian-Pakete, die nicht etwas speziell hardwarespezifisches machen, für alle Architekturen gleich existieren. Problemchen gibt es vor allem bei Hardwaretreibern (z.B. die berüchtigten proprietären Grafiktreiber von Nvidia und Konsorten) sowie bei prorietärer Software (z.B. dem Adobe Flash Player).

Die Besonderheit an der amd64-Architektur ist die Tatsache, daß man immer auch die Wahl hat, IA-32 (also 386er) Software laufen zu lassen. Während also z.B. ein PowerPC einfach kein Flash hat und Punkt, hat man mit einem amd64-System immer die Qual, daß man es zum Laufen bekommen kann, dies aber etwas Mühe macht.

Daher habe ich hier einige Besonderheiten aufgeführt, die sich weniger mit 64 Bit als in Wirklichkeit mit der Schnittstelle von 32- und 64-Bit-Software beschäftigen.


== Warum überhaupt? ==

Zuerst mal sollte man sich die Frage stellen, ob man wirklich amd64 braucht, wenn der Rechner auch als ia32 eingerichtet werden kann. Man erspart sich den Ärger mit o.g. Software und hat dafür vielleicht ein paar Prozent Performance mehr bei einigen wenigen Anwendungen. Wenn man es genau überlegt, macht die ganze Sache überhaupt keinen Sinn. Aber es gibt doch einen einzigen Grund für den echten Linuxer, warum man es doch machen sollte: '''Weil man es kann!'''. Wer diesen Grund für sich akzeptiert, kann hier weiterlesen...


== die Grundlage für 32-Bit-Software ==

Zuerst einmal muss der Kernel 32-Bit-Executables ausführen können. Das sollte bei jedem normalen Kernel eingeschaltet sein. Jetzt ist noch das Problem, daß ein 32-Bit-Programm zumeist auch passende Bibliotheken benötigt.


== die kleine Lösung: 32-Bit-Bibliotheken ==

Die Debian-Maintainer haben eine Schar von grundlegenden Bibliotheken zusammengefasst und in das Paket '''ia32-libs''' gepackt. Der Library-Loader ist in der Lage, selbständig 32-Bit-Executables zu erkennen und lädt dann die 32-Bit-Versionen z.B. der glibc aus einem entsprechenden Verzeichnis. Diese Lösung könnte dazu dienen, besondere Applikationen in einer 32-Bit-Version speziell einzubinden. Allerdings gibt es keine solchen als Debian-Paket. Da einige der angesprochenen Problemchen sich auf den Browser zurückführen lassen, waäre es schön, wenn es einen 32-Bit-Iceweasel/Firefox als Paket in der amd64-Distribution gäbe. Gibts aber nicht...


== die richtige Lösung: 32 Bit im chroot-Jail ==

Wer sich nicht auf die Suche nach immer anderen Bibliotheken für andere Distributionen machen will, installiert am besten direkt ein komplettes 32-Bit Linux-System in einem Verzeichnis und startet die dortigen Applikationen dann mittels ''chroot''. Dieser Ansatz löst im Grunde alle Probleme, die Userspace-Programme betreffen. Man muss einige Extras beachten, um die beiden Systeme, die man dann hat, auch richtig zu synchronisieren (damit sie z.B. auf das gleiche home-Verzeichnis zugreifen etc.). Leider haben die Debian-Maintainer auch hierfür kein fertiges Paket, allerdings gibt es im [Debian amd64 HOWTO|https://alioth.debian.org/docman/view.php/30192/21/debian-amd64-howto.html]  und in [diesem Wiki|http://ornellas.apanela.com/dokuwiki/pub:multiarch] Dokumentationen, wie man das am besten aufsetzt, ohne etwas zu vergessen.

Ich selber arbeite nach der zweiten Anleitung. Die dort beschriebenen Befehle lassen sich so zusammenfassen:

{{{
  # see http://ornellas.apanela.com/dokuwiki/pub:multiarch
  aptitude install debootstrap
  mkdir /ia32
  debootstrap --arch i386 --verbose etch /ia32 http://ftp.debian.org/debian

  # Netzwerk
  ln -sf ../amd64/etc/hostname /ia32/etc/hostname
  ln -sf ../amd64/etc/hosts /ia32/etc/hosts
  ln -sf ../amd64/etc/hosts.allow /ia32/etc/hosts.allow
  ln -sf ../amd64/etc/hosts.deny /ia32/etc/hosts.deny
  ln -sf ../amd64/etc/resolv.conf /ia32/etc/resolv.conf
  ln -sf ../amd64/etc/networks /ia32/etc/networks

  # Benutzerdatenbank
  ln -sf ../amd64/etc/passwd /ia32/etc/passwd
  ln -sf ../amd64/etc/shadow /ia32/etc/shadow
  ln -sf ../amd64/etc/group /ia32/etc/group
  ln -sf ../amd64/etc/gshadow /ia32/etc/gshadow

  # sonstige, von mir festgestellte Probleme beheben
  ln -sf ../amd64/lib/modules/ /lib/modules

  # create the startscripts before doing this:
  update-rc.d ia32S.sh start 99 S .
  update-rc.d ia32.sh defaults 99 1

  aptitude install dchroot
  echo "ia32 /ia32" >/etc/dchroot.conf
}}}

Vorher sollte man die beiden auf der Wiki-Seite abgedruckten Startskripte anlegen und ausführbar machen. In diesen beiden
muss man dann Dienste konfigurieren, die man im 32-Bit-System starten will. Wenn man nicht neu bootet, sollte man diese beiden Skripte einmal ausführen. In Zukunft werden Applikationen (wie z.B. Firefox) mit Hilfe des '''dchroot -d -c ia32 ...'''-Befehls gestartet.

== [Java]-Plugin ==

Wie bei den LUG-Treffen seit einigen Wochen diskutiert wird, gibt es kein anständiges Java Browser-Plugin für 64 Bit. Sun argumentiert, man könne ja das 386er-Plugin benutzen, obwohl sie für die normale Distribution sehr wohl einen echten 64-Bit-Port haben. Das gcj-Plugin, das standardmäßig unter Debian verwendet wird, kann erstens nur Java 1.4 und meckert zweitens immer, daß es unsicher ist, weil seine Security-Implementation noch nicht fertig sei. Nach einiger Suche bin ich dahintergekommen, daß in Debian Testing ein Paket namens '''ia32-sun-java6-bin''' die Lösung verheisst. Allerdings habe ich es nicht zum Laufen gebracht... Wer kann da mehr zu sagen?!?

Letztlich besteht meine Lösung nun aus obigem chroot-Jail, d.h. ich starte immer einen besonderen Browser, wenn ich Java benutzen will. Auf Dauer (wenn das funktioniert), werde ich wohl alle Links und Icons auf den 64-Bit-Browser ganz entfernen und durch ein Startskript für den 32-Bitter ersetzen.


== Flash ==

Flash läuft wohl wirklich nur im chroot-Jail (probiert habe ich es noch nicht).  Die freien Alternativen, die es gibt, haben mich alle nicht zufrieden gestellt und teilweise den Browser oder auch mein ganzes System lahmgelegt. Vielleicht ändert sich das ja mit der Zeit...


== [XEN] ==

Xen läuft ohne große Probleme unter amd64. Ich habe es jetzt seit einigen Wochen stabil mit mehreren Domains und ohne irgendwelche Probleme laufen. Paravirtualisierte (also "normale") Domains müssen auch immer amd64-Domians sein. Vollvirtualisierte (HVM-) Instanzen, wie sie auf speziellen (neueren) Prozessoren möglich sind, sind als 32- oder 64-Bit möglich. Auch dies ist ggf. eine Möglichkeit, Probleme mit 32-Bit-Software zu lösen.


== [QEmu] ==

Also mal grundsätzlich läuft qemu sehr gut und erlaubt es einem damit auch, 32 Bit-Systeme zu starten.

So richtig macht qemu natürlich nur Spass, wenn man auch das Kernel-Modul '''kqemu''' dazu nutzen kann. Zuerst war ich erschrocken, weil es das dazugehörige Modul-Paket nicht gab. Allerdings kann man sich dieses leicht mit dem '''module-assistant''' selber erzeugen. Den nächsten Schreck bekam ich, als ich merkte, daß beim Start von ''qemu'' dieses Kernelmodul nicht benutzt wurde. Aber auch da kam ich irgendwann dahinter, daß ich natürlich ''qemu-system-x86_64'' starten muss. Der kqemu auf einem amd64 kann also wieder nur einen amd64-PC virtualisieren.

QEmu läuft übrigens auch mit kqemu unter Xen. Viel habe ich damit nicht getestet, aber grundsätzlich war die Geschwindigkeit trotz der doppelten Virtualisierung immer noch sehr ansehnlich.

----
;Autor: ThomasBayen
[{Tag Linux Debian Java Virtualisierung}]