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?
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?
Respostas:
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_create
no 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.
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.
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.