Posso prendere un kernel Linux e usarlo, ad esempio, con FreeBSD e viceversa (kernel FreeBSD in, ad esempio, una Debian)? Esiste una risposta universale? Quali sono i limiti? Quali sono gli ostacoli?
Risposta accettata:
No, i kernel di diverse implementazioni di sistemi operativi in stile Unix non sono intercambiabili, in particolare perché presentano tutti interfacce diverse con il resto del sistema (spazio utente) — le loro chiamate di sistema (incluso ioctl
specifiche), i vari file system virtuali che utilizzano...
Ciò che è intercambiabile in una certa misura, a livello sorgente, è la combinazione del kernel e della libreria C, o meglio, le API a livello utente che il kernel e le librerie espongono (essenzialmente, la vista al livello descritta da POSIX, senza considerando se lo è effettivamente POSIX). Esempi di questo includono Debian GNU/kFreeBSD, che costruisce un sistema Debian su un kernel FreeBSD, e Debian GNU/Hurd, che costruisce un sistema Debian su Hurd.
Questo non è proprio a livello di intercambiabilità del kernel, ma ci sono stati tentativi di standardizzare un'interfaccia binaria di un'applicazione comune, per consentire l'uso di binari su vari sistemi senza necessità di ricompilazione. Un esempio è l'Intel Binary Compatibility Standard, che consente ai binari conformi ad esso di essere eseguiti su qualsiasi sistema Unix che lo implementa, comprese le versioni precedenti di Linux con il livello iBCS 2. L'ho usato alla fine degli anni '90 per eseguire WordPerfect su Linux.