sonnenblen.de - Das unabhängige Sun User Forum

Betriebssysteme => Solaris/x86 und OpenSolaris => Thema gestartet von: mdjr am 01. Juli 2007, 12:00:03

Titel: Linux application loader
Beitrag von: mdjr 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
Titel: Re: Linux application loader
Beitrag von: Drusus am 01. Juli 2007, 15:57:35
Moin,

gibts schon - nennt sich lxrun. Siehe http://www.ugcs.caltech.edu/~steven/lxrun/ (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/ (http://opensolaris.org/os/community/brandz/)

Tschau,
  Drusus.
Titel: Re: Linux application loader
Beitrag von: mdjr am 01. Juli 2007, 16:45:41
Moin,

gibts schon - nennt sich lxrun. Siehe http://www.ugcs.caltech.edu/~steven/lxrun/ (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/ (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