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