Ubuntu – Ausführen von 32-Bit-Software auf einem 64-Bit-Server

Ubuntu – Ausführen von 32-Bit-Software auf einem 64-Bit-Server

Ich plane, eine Webanwendung auf einem 64-Bit-Dell-Server mit 32 GB RAM zu hosten. Ich plane, dort Ubuntu 10.04 LTS zu installieren. Das Problem ist, dass unsere Webanwendung einen Simulator verwendet, der nur im 32-Bit-Modus kompiliert und ausgeführt werden kann. Daher denke ich derzeit über zwei mögliche Lösungen nach:

  1. Installieren Sie 32-Bit-Ubuntu - der Simulator würde problemlos laufen, aber die Ressourcennutzung wäre möglicherweise nicht optimal
  2. Installieren Sie ein 64-Bit-Betriebssystem und eine weitere virtuelle 32-Bit-Ubuntu-Maschine. Lassen Sie Apache vom Hauptserver auf den „virtuellen“ Server umleiten.

Ich würde gerne mehr über die Vor- und Nachteile dieser beiden Techniken erfahren. Falls es eine bessere Alternative gibt, würde ich mich freuen, davon zu hören.

Ich habe hier bereits nach ähnlichen Themen gesucht und festgestellt, dass dies eng verwandt ist: Sollte ich 32-Bit- und 64-Bit-Produktionsanwendungen auf einem 64-Bit-Debian-Server ausführen?

Die dort angebotenen Lösungen konnten mich allerdings nicht ganz zufriedenstellen.

Abschließend muss ich gestehen, dass ich keine Ahnung von Virtualisierung habe. Die oben genannte Option Nr. 2 basiert auf dem, was ich über ein System weiß. Ich bin jedoch mehr als gespannt darauf, etwas über Virtualisierung zu lernen.

Antwort1

Deria32-libsPaket enthält eine große Sammlung von x86_32-Bibliotheken. Wenn Ihr Programm nur mit diesen Bibliotheken ausgeführt werden kann, sind Sie fertig. Es gibt auch 32-Bit-Entwicklungstools imgcc-multilibUndbinutils-multiarchPakete.

Wenn Sie darüber hinausgehen müssen, führen Sie ein 32-Bit-System in einem Chroot aus. Debian und Ubuntu verfügen über Tools, die dies erleichtern, vor allemschroot, Unddebootstrapzum Installieren.Richten Sie ein Schroot ein und installieren Sie Ihr 32-Bit-System darin. Der Aufruf schrootkümmert sich um den Aufruf von setpersonality(), was insbesondere return uname()und i686nicht x86_64. Die unameRückgabe eines unerwarteten Werts hat Ihre Anwendung wahrscheinlich verwirrt, als Sie versucht haben, sie direkt auf dem 64-Bit-System auszuführen. Denken Sie daran, Dienste im Chroot auszuschalten (die Anleitung, auf die ich verlinkt habe, erklärt, wie das geht) und Sicherheitsupgrades im Chroot durchzuführen (Sie werden dort keine Dienste ausführen, aber es könnten Fehler in den Bibliotheken vorhanden sein).

Eine virtuelle Maschine ist hier nutzlos. Sie hätten alle Wartungsprobleme eines Chroots, plus die der VM, plus die der Trennung (Speichernutzung, Festplattennutzung, …), plus die separate Apache-Instanz in der VM, plus die Umleitung auf dem Host, plus möglicherweise Leistungsprobleme.

Antwort2

An Ihrer Stelle würde ich ein PV Xen mit der 32-Bit-Version ausführen (was einfacher ist, als mit 32-Bit-Bibliotheken auf einem 64-Bit-System herumzuspielen). Und ich würde zu diesem Zweck eine AMD-Opteron-basierte Maschine verwenden (Intel emuliert 32 Bit, AMD führt es nativ aus).

verwandte Informationen