Est-il possible de changer le noyau dans un système UNIX / Linux?


16

Je voulais savoir s'il était possible de changer les noyaux, par exemple, en remplaçant le noyau Linux de Fedora par celui de FreeBSD.

Maintenant, il existait déjà Debian GNU / kFreeBSD . Est-il possible pour moi de personnaliser une distribution Linux pour contenir un noyau BSD?


3
MacOSX est un noyau basé sur BSD entièrement compatible POSIX. Et contrairement à Linux, qui prétend ne pas être un système Unix, OSX EST un système Unix (il est certifié par The Open Group qui possède la marque Unix). Vous ne pouvez pas exécuter d'applications Linux sur Mac et vous ne pouvez pas exécuter d'applications Mac sur Linux même si les deux fonctionnent sur des processeurs Intel (enfin, techniquement AMD64)
slebetman

Réponses:


21

Non, chaque noyau implémente ses propres fonctionnalités à sa manière. La compatibilité POSIX est importante, mais une fois que vous en êtes sorti, les exécutables doivent être compilés avec les mécanismes du noyau déjà en place. De nombreux projets contiennent du code source qui n'est compilé que si vous dites explicitement que vous compilez pour FreeBSD ou Linux. C'est essentiellement ce qu'est kFreeBSD. Les outils prennent en charge le noyau FreeBSD mais ils doivent être compilés pour cela.

Par exemple, si vous essayez d'utiliser epoll_createsur FreeBSD, les choses ne fonctionneront pas comme prévu.

Bien sûr, vous pouvez effectuer une compilation croisée des outils à partir d'un système BSD de style LFS, mais cela prendra probablement une éternité. Pas aussi simple que de simplement compiler un nouveau noyau.


1
J'aimerais avoir votre avis sur le noyau MOOL , il existe déjà un OS qui l'adapte, BOSS linux.
Sri Harsha Chilakapati

Ce sera intéressant de voir ce qui en sort, mais je n'y ai pas suffisamment réfléchi pour en dire quoi que ce soit d'intelligent.
Bratchley

1
Donc, ce que vous dites, si je veux créer un système BSD basé sur GNU userland, je dois recompiler tous les logiciels GNU pour le noyau BSD. Ai-je raison?
Changer

1
Tout ce qui utilise Linux-isms qui serait à peu près tout. Il pourrait être plus facile de commencer avec kFreeBSD et de partir de là.
Bratchley

16

FreeBSD n'utilise pas de noyau Linux - comme son nom l'indique, il utilise un noyau BSD.

Il est possible de remplacer un noyau Linux par un autre noyau Linux (que vous ayez construit vous-même ou extrait d'une distribution). N'oubliez pas que les programmes de l'espace utilisateur de votre distribution peuvent dépendre de fonctionnalités de noyau particulières à compiler et peuvent ne pas fonctionner correctement si vous les exécutez sur un noyau construit sans ces fonctionnalités. Par exemple, une distribution basée sur systemd nécessitera des cgroups dans le noyau.

Pour l'exemple que vous mentionnez, oui, une distribution GNU peut être construite pour un noyau Linux ou pour un noyau BSD. Dans de nombreux cas, il existe des différences de temps de compilation (par exemple #ifdef) entre les programmes compilés pour les deux, même si les noyaux annoncent le même ABI. Au minimum, les bibliothèques de bas niveau telles que la bibliothèque d'exécution C doivent prendre en charge les différentes ABI du noyau.


Boost pour mentionner la modification de la bibliothèque d'exécution C.
Joshua

2

Le noyau est la partie indépendante et est régulièrement remplacé lors des mises à jour du système d'exploitation. Certains pilotes propriétaires (NVIDIA, etc.) ont les scripts d'installation qui corrigent le pilote dans la source du noyau, construisent ce noyau et remplacent le noyau actuel par lui. Par conséquent, si vous développez votre propre version du noyau qui peut exécuter toutes les fonctionnalités requises, cela ne devrait pas être un gros problème de l'installer et de laisser le reste du système d'exploitation. Cependant, le plus souvent, un tel "nouveau noyau" est dérivé de la version officielle récente.

Le noyau Solaris a été porté de cette façon dans une certaine mesure, ce qui a donné lieu à OpenSolaris exécutant l'environnement Gnome.

Pourtant, mettre le noyau complètement différent est un effort important, car les interfaces doivent être pontées. Cela nécessitera probablement beaucoup de programmation C et ne concerne pas seulement le script de construction.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.