Kann ich einen Linux-Kernel nehmen und ihn beispielsweise mit FreeBSD verwenden und umgekehrt (FreeBSD-Kernel beispielsweise in einem Debian)? Gibt es eine universelle Antwort? Was sind die Einschränkungen? Was sind die Hindernisse?
Akzeptierte Antwort:
Nein, Kernel von verschiedenen Implementierungen von Betriebssystemen im Unix-Stil sind nicht austauschbar, insbesondere weil sie alle unterschiedliche Schnittstellen zum Rest des Systems (Benutzerbereich) darstellen – ihre Systemaufrufe (einschließlich ioctl
Einzelheiten), die verschiedenen virtuellen Dateisysteme, die sie verwenden …
Was bis zu einem gewissen Grad auf Quellebene austauschbar ist, ist die Kombination des Kernels und der C-Bibliothek, oder besser gesagt, die APIs auf Benutzerebene, die der Kernel und die Bibliotheken bereitstellen (im Wesentlichen die Ansicht auf der Ebene, die von POSIX beschrieben wird, ohne überlegen, ob es ist eigentlich POSIX). Beispiele hierfür sind Debian GNU/kFreeBSD, das ein Debian-System auf einem FreeBSD-Kernel aufbaut, und Debian GNU/Hurd, das ein Debian-System auf Hurd aufbaut.
Dies ist nicht ganz auf der Ebene der Kernel-Austauschbarkeit, aber es gab Versuche, eine gemeinsame Binärschnittstelle für Anwendungen zu standardisieren, damit Binärdateien auf verschiedenen Systemen verwendet werden können, ohne dass eine Neukompilierung erforderlich ist. Ein Beispiel ist der Intel Binary Compatibility Standard, der es ermöglicht, Binärdateien, die ihm entsprechen, auf jedem Unix-System auszuführen, das ihn implementiert, einschließlich älterer Linux-Versionen mit der iBCS-2-Schicht. Ich habe dies Ende der 90er Jahre verwendet, um WordPerfect unter Linux auszuführen.