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?
linux
kernel
bsd
architecture
Tomasz
quelle
quelle
/proc
oder andere Linux-spezifische Schnickschnack macht .Antworten:
Nein, Kernel aus verschiedenen Implementierungen von Betriebssystemen im Unix-Stil sind nicht austauschbar, insbesondere, weil sie alle unterschiedliche Schnittstellen zum Rest des Systems (Benutzerbereich) aufweisen - ihre Systemaufrufe (einschließlich
ioctl
Besonderheiten) und die verschiedenen von ihnen verwendeten virtuellen Dateisysteme. ..Auf der Quellebene ist die Kombination aus Kernel und C-Bibliothek bzw. den APIs auf Benutzerebene, die der Kernel und die Bibliotheken bereitstellen, teilweise austauschbar (im Wesentlichen die Ansicht auf der von POSIX beschriebenen Ebene, ohne sie) Überlegen Sie, ob es sich tatsächlich um POSIX handelt. Beispiele hierfür sind Debian GNU / kFreeBSD , das ein Debian-System auf der Basis eines FreeBSD-Kernels erstellt, und Debian GNU / Hurd , das ein Debian-System auf der Basis des Hurd erstellt.
Dies ist nicht ganz auf der Ebene der Austauschbarkeit des Kernels. Es wurde jedoch versucht, eine gemeinsame Anwendungs-Binärschnittstelle 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 , mit dem kompatible Binärdateien auf allen Unix-Systemen ausgeführt werden können, die ihn implementieren, einschließlich älterer Linux-Versionen mit der iBCS 2-Schicht. Ich habe dies in den späten 90ern verwendet, um WordPerfect unter Linux auszuführen.
Siehe auch So erstellen Sie eine FreeBSD-Chroot in Linux .
quelle
Einige Kernel sind mit Binärdateien kompatibel, sodass Sie Userspace-Programme mit verschiedenen ABIs mischen können (z. B. kann freebsd bis zu einem gewissen Grad mit Linux-Binärdateien arbeiten), die Kern-Binärdateien jedoch (z. B. das Init-Programm, der Modul-Loader, 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 Kernel-Level-Interfaces haben, um ein System mit einem fremden Kernel erfolgreich zu starten.
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 ist, würde gerne fehlschlagen, da Sie den Modullader nicht ausführen könnten.
Wie bereits erwähnt, sind die Benutzerumgebungen eher portabel, wenn Sie bereit sind, neu zu kompilieren - wie freebsd-basierte Debian-Systeme oder das netbsd pkgsrc-System unter Linux einzurichten (absolut nicht trivial, aber unterstützt und möglich!).
quelle