È possibile cambiare il kernel in un sistema UNIX / Linux?


16

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?


3
MacOSX è un kernel basato su BSD completamente conforme a POSIX. E a differenza di Linux, che afferma di non essere un sistema Unix, OSX È un sistema Unix (è certificato da The Open Group, proprietario del marchio Unix). Non è possibile eseguire app Linux su Mac e non è possibile eseguire app Mac su Linux anche se entrambi funzionano su CPU Intel (bene, tecnicamente AMD64)
— slebetman

Risposte:


21

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.


1
Mi piacerebbe sentire la tua opinione sul kernel MOOL , esiste già un sistema operativo che lo adatta, BOSS Linux.
— Sri Harsha Chilakapati,

Sarà interessante vedere cosa ne verrà fuori, ma non ho esaminato abbastanza per dire qualcosa di intelligente al riguardo.
— Bratchley,

1
Quindi, come dici tu, se voglio creare un sistema BSD basato su userland GNU, devo ricompilare tutto il software GNU per il kernel BSD. Ho ragione?
— Cambia il

1
Tutto ciò che utilizza gli ismi di Linux che sarebbe praticamente tutto. Potrebbe essere più facile iniziare con kFreeBSD e passare da lì.
— Bratchley,

16

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.


Potenzia per esempio la modifica della libreria C Runtime.
— Joshua,

2

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.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.