Volevo sapere se è possibile cambiare i kernel, ad esempio, sostituendo il kernel Linux di Fedora con quello di FreeBSD.
Ora, esisteva già Debian GNU / kFreeBSD . È possibile personalizzare una distro Linux per contenere un kernel BSD?
Volevo sapere se è possibile cambiare i kernel, ad esempio, sostituendo il kernel Linux di Fedora con quello di FreeBSD.
Ora, esisteva già Debian GNU / kFreeBSD . È possibile personalizzare una distro Linux per contenere un kernel BSD?
Risposte:
No, ogni kernel implementa le sue caratteristiche a modo suo. C'è una grande quantità di compatibilità POSIX ma una volta usciti da ciò gli eseguibili devono essere compilati con i meccanismi del kernel già in atto. Molti progetti contengono codice sorgente che viene compilato solo se dici esplicitamente che stai compilando per FreeBSD o Linux. Questo è essenzialmente ciò che è kFreeBSD. Gli strumenti supportano il kernel di FreeBSD ma devono essere compilati per questo.
Ad esempio, se provi ad usare epoll_create
su FreeBSD le cose non funzioneranno come previsto.
Ovviamente, puoi compilare in modo incrociato gli strumenti da un sistema BSD in stile LFS, ma probabilmente ci vorrà per sempre. Non è semplice come compilare un nuovo kernel.
FreeBSD non usa un kernel Linux - come suggerisce il nome, usa un kernel BSD.
È possibile sostituire un kernel Linux con un kernel Linux diverso (uno creato dall'utente o uno estratto da una distribuzione). Tieni presente che i programmi di spazio utente nella tua distribuzione potrebbero dipendere da particolari funzioni del kernel da compilare e potrebbero non funzionare correttamente se le esegui su un kernel creato senza tali funzionalità. Ad esempio, una distribuzione basata su systemd richiederà i cgroup nel kernel.
Nell'esempio citato, sì, è possibile creare una distribuzione GNU per un kernel Linux o per un kernel BSD. In molti casi, ci sono differenze nel tempo di compilazione (ad esempio #ifdef
) tra i programmi compilati per i due, anche se i kernel pubblicizzano lo stesso ABI. Come minimo, le librerie di basso livello come la libreria di runtime C devono adattarsi alle diverse ABI del kernel.
Il kernel è la parte indipendente e viene regolarmente sostituito durante gli aggiornamenti del sistema operativo. Alcuni driver proprietari (NVIDIA, ecc.) Hanno gli script di installazione che collegano il driver al sorgente del kernel, compilano quel kernel e sostituiscono il kernel corrente con esso. Quindi, se sviluppi la tua versione del kernel in grado di eseguire tutte le funzionalità richieste, non dovrebbe essere un grosso problema installarlo e lasciare in giro il resto del sistema operativo. Comunque molto spesso un tale "nuovo kernel" deriva dalla recente versione ufficiale.
Il kernel di Solaris è stato portato in qualche modo in questo modo, risultando in OpenSolaris con Gnome.
Tuttavia, mettere il kernel completamente diverso è uno sforzo significativo, poiché le interfacce devono essere collegate. Questo probabilmente richiederà molta programmazione in C e non riguarda solo lo script di compilazione.