Autor Thema: Linux application loader  (Gelesen 2602 mal)

mdjr

  • Gast
Linux application loader
« am: 01. Juli 2007, 12:00:03 »
Hallo Leute.

Ich habe gerade mit einem Tool angefangen, das (dynamisch gelinkte) Linux-Binaries unter Solaris ausführen können soll. (Auf die Idee hat mich der fehlende AcrobatReader für Solaris/x86 gebracht.)

Die Idee, die ich habe, ist, dass fast alle Solaris-Befehle identisch zu Linux-Befehlen sind, aber lediglich in anderen .so-Dateien definiert sind. Systemaufrufe werden in beiden System i.d.R. nur von libc.so gemacht.

Meine Idee ist daher, "einfach" (ok - nicht ganz so einfach) die Linux-Binary zusammen mit dynamischen Bibliotheken (Linux & Solaris) und Wrapper-Libraries in den Speicher zu laden und das Programm zu starten.

Die Wrapper-Libraries sollen Befehle, die in beiden Systemen unterschiedlich arbeiten aufeinander matchen:
int linux_open(const char *filename, int mode, int access)
{
    int solaris_mode;
    if((mode&MASK)==LINUX_O_RDONLY) solaris_mode=O_RDONLY;
    // ...
    return open(filename,solaris_mode,access);
}

In der erste Version müssen alle benötigten Bibliotheken von Hand angegeben werden; es werden wohl nur einfach Applikationen (also kein AcrobatReader :-[) laufen.

1) Was haltet ihr davon - brauchbar / unbrauchbar?
2) Ist das ganze überhaupt machbar ?

Martin

sonnenblen.de - Das unabhängige Sun User Forum

Linux application loader
« am: 01. Juli 2007, 12:00:03 »

Offline Drusus

  • Sobl Master
  • ****
  • Beiträge: 424
  • Intentionally left blank
Re: Linux application loader
« Antwort #1 am: 01. Juli 2007, 15:57:35 »
Moin,

gibts schon - nennt sich lxrun. Siehe http://www.ugcs.caltech.edu/~steven/lxrun/.

Alternativ gibt es inzwischen BrandZ womit man ein 32Bit Linux (allerdings afaik nur 2.4er Kernel) unter Solaris laufen lassen kann (in einer Zone). Siehe dazu: http://opensolaris.org/os/community/brandz/

Tschau,
  Drusus.

mdjr

  • Gast
Re: Linux application loader
« Antwort #2 am: 01. Juli 2007, 16:45:41 »
Moin,

gibts schon - nennt sich lxrun. Siehe http://www.ugcs.caltech.edu/~steven/lxrun/.

Alternativ gibt es inzwischen BrandZ womit man ein 32Bit Linux (allerdings afaik nur 2.4er Kernel) unter Solaris laufen lassen kann (in einer Zone). Siehe dazu: http://opensolaris.org/os/community/brandz/

Tschau,
  Drusus.
Hallo.

"lxrun" kannte ich bereits, bevor ich mit dem ganzen begonnen habe. Der Hauptunterschied liegt darin, dass lxrun (wohl auch BrandZ) einen Linux-Kernel emuliert und die ganzen ".so"-Dateien (sowie eine Menge Dateien aus /etc) von Linux auf der Solaris-Partition vorhanden sein müssen.

An dieser Tatsache scheiterte bei mir der Versuch, AcrobatReader 5 für Linux auf Solaris laufen zu lassen.

Martin