É possível alterar o kernel em um sistema UNIX / Linux?

16

Eu queria saber se é possível mudar os kernels, por exemplo, substituindo o kernel Linux do Fedora pelo do FreeBSD.

Agora, já existia o Debian GNU / kFreeBSD . É possível personalizar uma distribuição Linux para conter um kernel BSD?

Interruptor
fonte
3
O MacOSX é um kernel baseado em BSD, totalmente compatível com POSIX. E, ao contrário do Linux, que afirma não ser um sistema Unix, o OSX é um sistema Unix (é certificado pelo The Open Group, proprietário da marca comercial Unix). Você não pode executar aplicativos Linux no Mac e você não pode executar aplicações Mac no Linux mesmo que ambos executados em processadores Intel (bem, tecnicamente AMD64)
slebetman

Respostas:

21

Não, cada kernel implementa seus próprios recursos à sua maneira. Há uma grande quantidade de compatibilidade com POSIX, mas uma vez que você sai disso, os executáveis ​​precisam ser compilados com os mecanismos do kernel já existentes. Muitos projetos contêm código fonte que só é compilado se você disser explicitamente que está compilando para FreeBSD ou Linux. Isso é essencialmente o que é o kFreeBSD. As ferramentas suportam o kernel do FreeBSD, mas precisam ser compiladas para ele.

Por exemplo, se você tentar usar epoll_createno FreeBSD, as coisas não funcionarão como o esperado.

Obviamente, você pode compilar de forma cruzada as ferramentas de um sistema BSD no estilo LFS, mas isso provavelmente levará uma eternidade. Não é tão simples quanto compilar um novo kernel.

Bratchley
fonte
11
Gostaria de ouvir sua opinião sobre o kernel do MOOL , já existe um sistema operacional que o adapta, o BOSS linux.
Sri Harsha Chilakapati
Será interessante ver o que acontece, mas eu não examinei o suficiente para dizer algo inteligente sobre isso.
Bratchley
11
Então, qual é o seu ditado, se eu quiser criar um sistema BSD baseado em usuário do GNU, devo recompilar todo o software GNU para o kernel do BSD. Estou correcto?
Comute
11
Qualquer coisa que utilize Linux-isms seria praticamente tudo. Pode ser mais fácil começar com o kFreeBSD e partir daí.
Bratchley
16

O FreeBSD não usa um kernel Linux - como o próprio nome sugere, ele usa um kernel BSD.

É possível substituir um kernel Linux por um kernel Linux diferente (um que você construiu ou extraiu de uma distribuição). Esteja ciente de que os programas de espaço do usuário em sua distribuição podem depender de determinados recursos do kernel a serem compilados e podem não funcionar corretamente se você executá-los em um kernel construído sem esses recursos. Por exemplo, uma distribuição baseada em systemd exigirá cgroups no kernel.

Para o exemplo que você mencionou, sim, uma distribuição GNU pode ser criada para um kernel Linux ou BSD. Em muitos casos, existem diferenças no tempo de compilação (por exemplo #ifdef) entre os programas compilados para os dois, mesmo que os kernels anunciem a mesma ABI. No mínimo, as bibliotecas de baixo nível, como a C Runtime Library, precisam acomodar as diferentes ABIs do kernel.

Toby Speight
fonte
Impulso para mencionar a alteração da biblioteca de tempo de execução C.
Joshua
2

O kernel é a parte independente e é rotineiramente substituído durante as atualizações do sistema operacional. Alguns drivers proprietários (NVIDIA, etc) possuem os scripts de instalação que corrigem o driver na fonte do kernel, criam esse kernel e substituem o kernel atual por ele. Portanto, se você desenvolver sua própria versão do kernel que pode executar todas as funcionalidades necessárias, não deve ser um grande problema para plantá-la e deixar o resto do sistema operacional por perto. No entanto, na maioria das vezes, esse "novo kernel" é derivado da versão oficial recente.

O kernel Solaris foi portado dessa maneira em algum grau, resultando no OpenSolaris executando o ambiente Gnome.

Ainda assim, colocar o kernel completamente diferente é um esforço significativo, pois as interfaces precisam ser conectadas. É provável que exija muita programação C e não se trata apenas do script de construção.

h22
fonte