Puis-je prendre un noyau Linux et l'utiliser avec, disons, FreeBSD et vice versa (noyau FreeBSD dans, disons, un Debian)? Y a-t-il une réponse universelle? Quelles sont les limitations? Quelles sont les obstructions?
linux
kernel
bsd
architecture
RonJohn
la source
la source
/proc
autres cloches et sifflets spécifiques à Linux.Réponses:
Non, les noyaux de différentes implémentations de systèmes d'exploitation de style Unix ne sont pas interchangeables, notamment parce qu'ils présentent tous des interfaces différentes avec le reste du système (espace utilisateur) - leurs appels système (y compris les
ioctl
spécificités), les différents systèmes de fichiers virtuels qu'ils utilisent. ..Ce qui est interchangeable dans une certaine mesure, au niveau source, est la combinaison du noyau et de la bibliothèque C, ou plutôt, des API de niveau utilisateur que le noyau et les bibliothèques exposent (essentiellement, la vue à la couche décrite par POSIX, sans considérant que c'est en fait Posix). Des exemples de cela incluent Debian GNU / kFreeBSD , qui construit un système Debian au-dessus d'un noyau FreeBSD, et Debian GNU / Hurd , qui construit un système Debian au-dessus de Hurd.
Ce n'est pas tout à fait au niveau de l'interchangeabilité du noyau, mais il y a eu des tentatives de standardiser une interface binaire d'application commune, pour permettre aux binaires d'être utilisés sur divers systèmes sans avoir besoin de recompilation. Un exemple est l'Intel Binary Compatibility Standard , qui permet aux binaires qui s'y conforment de s'exécuter sur n'importe quel système Unix l'implémentant, y compris les anciennes versions de Linux avec la couche iBCS 2. Je l'ai utilisé à la fin des années 90 pour exécuter WordPerfect sur Linux.
Voir aussi Comment construire un chroot FreeBSD à l'intérieur de Linux .
la source
Certains noyaux ont une compatibilité binaire vous permettant de mélanger des programmes de l'espace utilisateur avec différents ABI (par exemple, freebsd peut fonctionner avec les binaires linux dans une certaine mesure) - cependant, les binaires de base (par exemple le programme init, le chargeur de module, les outils de configuration du pilote de périphérique, la bibliothèque C , les outils nécessaires à la configuration des systèmes de fichiers ...) auront en pratique trop de connaissances sur les interfaces au niveau du noyau pour démarrer un système avec un noyau étranger avec succès.
De plus, les systèmes de fichiers devraient être compatibles. De plus, les options de compatibilité binaire devraient être compilées "en dur" dans le noyau - tout ce qui est implémenté en tant que module du noyau voudrait échouer parce que vous ne pourriez pas exécuter le chargeur de module.
Comme mentionné, les environnements utilisateur ont tendance à être quelque peu portables si vous êtes prêt à recompiler - comme les systèmes debian basés sur freebsd, ou à configurer le système netbsd pkgsrc sur linux (absolument non trivial, mais pris en charge et possible!).
la source