GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Sind verschiedene Linux/Unix-Kernel austauschbar?

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!).


Linux
  1. Umgang mit einer Linux-Kernel-Panik

  2. Linux – Was sind die verschiedenen Möglichkeiten zum Festlegen von Dateiberechtigungen usw. unter Gnu/Linux?

  3. Linux – Aufrufmethoden für Systemaufrufe im neuen Kernel?

  4. Hauptunterschiede zwischen Linux und UNIX-Kernel

  5. Warum ist Linux Unix-ähnlich, wenn sein Kernel monolithisch ist?

So wechseln Sie zwischen verschiedenen Linux-Kernels auf Arch Linux

Ist Linux ein Betriebssystem oder ein Kernel?

Unix- und Linux-Geschichte

Eingefrorenes Linux-System? Hier sind 3 Möglichkeiten, damit umzugehen

Linux gegen Unix

Warum unterscheiden sich Linux-Systemrufnummern in x86 und x86_64?