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, dass Binärdateien, die ihm entsprechen, auf jedem Unix-System ausgeführt werden können, 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.
Siehe auch Wie man eine FreeBSD-Chroot innerhalb von Linux erstellt.
Einige Kernel haben Binärkompatibilität, die es Ihnen ermöglicht, Userspace-Programme mit verschiedenen ABIs zu mischen (z. B. kann freebsd bis zu einem gewissen Grad mit Linux-Binärdateien arbeiten) - jedoch die Kern-Binärdateien (z. B. das Init-Programm, der Modullader, Gerätetreiber-Setup-Tools, die C-Bibliothek , die Tools, die zum Einrichten der Dateisysteme benötigt werden ... ) werden in der Praxis zu viel Wissen über Schnittstellen auf Kernelebene erfordern, um ein System mit einem fremden Kernel erfolgreich zu booten.
Außerdem müssten Dateisysteme kompatibel sein. Außerdem müssten binäre Kompatibilitätsoptionen "hart" in den Kernel kompiliert werden - alles, was als Kernelmodul implementiert wird, würde gerne fehlschlagen, weil Sie den Modullader nicht ausführen könnten.
Wie bereits erwähnt, neigen die Benutzerumgebungen dazu, etwas portabel zu sein, wenn Sie bereit sind, neu zu kompilieren - wie Freebsd-basierte Debian-Systeme oder das Einrichten des netbsd pkgsrc-Systems unter Linux (absolut nicht trivial, aber unterstützt und möglich!).