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_createsu 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.