O que é o kernel do Linux?
Para usuários casuais e fãs menos que hardcore, Linux é um sistema operacional. Para os puristas, no entanto, o título Linux está reservado para o kernel que alimenta o sistema operacional.
Modos
Antes de explicarmos o que é um kernel, é importante entender os termos modo de usuário e modo kernel. O modo de usuário ocorre quando a execução do código não tem capacidade de acessar diretamente o hardware ou a memória de referência. Para obter acesso ao hardware e à memória, o código em execução no modo de usuário deve delegar instruções às interfaces de programação de aplicativos do sistema. O modo kernel ocorre quando o código em execução tem acesso irrestrito a todo o hardware - é reservado para as funções mais confiáveis de um sistema operacional.

O que é um kernel?
Todo sistema operacional possui um kernel. Janelas, Mac OS, iOS, Android, Chrome OSe o Linux tem, cada um, um sistema de baixo nível que é responsável por fazer a interface de todos os aplicativos com o hardware físico do computador. Sem o kernel, nenhum de seus aplicativos seria capaz de fazer uso do computador físico; aplicativos como Firefox, Chrome, LibreOffice ou Outlook não funcionariam. O kernel também é responsável por permitir que os processos troquem informações usando o que é chamado de comunicação entre processos.
Existem (em geral) três tipos de grãos:
- Kernels monolíticos: Esses kernels abrangem o CPU, memória, IPC, drivers de dispositivo, gerenciamento de sistema de arquivos e chamadas de servidor do sistema. Também é responsável por distribuir memória livre do sistema para aplicativos. Esses tipos de kernels são normalmente melhores no acesso a hardware e multitarefa.
- Microkernels: Os microkernels têm uma abordagem minimalista e gerenciam apenas a CPU, a memória e o IPC.
- Kernels híbridosObservação: Kernels híbridos têm a capacidade de decidir o que desejam executar no modo de usuário ou no modo de kernel. Embora isso forneça o melhor dos dois mundos, exige muito mais dos fabricantes de hardware a criação de drivers que sirvam para fazer a interface entre o código em execução e o hardware.
O Linux usa um kernel monolítico de código aberto, enquanto o macOS e o Windows usam Kernels híbridos. O kernel Linux foi concebido em 1991 por Linus Torvalds. Até hoje, Torvalds continua a ser o desenvolvedor líder no kernel do Linux, enquanto desenvolvedores de todo o mundo contribuem para o kernel do Linux. Na verdade, estima-se que cerca de 10.000 desenvolvedores, de mais de 1.000 empresas, contribuíram para o kernel do Linux desde o início do rastreamento em 2005.
Onde está o kernel?
Se você abrir uma janela de terminal e emitir o comando ls / boot, você verá um arquivo chamado vmlinuz-VERSION(Onde VERSION é o nome ou número do lançamento). O arquivo vmlinuz é o kernel Linux inicializável real, e o z indica que o kernel está compactado - então, em vez de vmlinux temos vmlinuz.

Nesse diretório / boot estão outros arquivos de kernel importantes, como initrd.img-VERSION, system.map-VERSION e config-VERSION (onde VERSION é um nome ou número de versão). Esses outros arquivos têm as seguintes finalidades:
- initrd: Usado como um pequeno RAMdisk que extrai e executa o arquivo kernel real.
- system.map: Usado para gerenciamento de memória, antes do carregamento do kernel.
- config: Instrui o kernel sobre quais opções e módulos carregar.
Módulos
Sem módulos, o kernel não seria muito útil. Os módulos ativam com eficácia os drivers necessários para se comunicar com o hardware sem consumir toda a memória do sistema. Os módulos também adicionam funcionalidades ao kernel, como comunicação com periféricos, gerenciamento de sistemas de arquivos, segurança, etc. Liste, adicione e remova módulos do kernel com os seguintes comandos:
- lsmod lista todos os módulos do kernel carregados atualmente.
- insmod carrega um módulo do kernel no kernel em execução.
- rmmod descarrega um módulo do kernel em execução.
Com a ajuda de alguns comandos simples, o kernel do Linux pode ser bastante flexível.
O Kernel Atual

O kernel do Linux é atualizado com freqüência, mas nem todas as distribuições do Linux incluirão o kernel mais recente.
Você está livre para baixar diferentes versões do kernel do Linux em kernel.org e compilar você mesmo. A compilação do kernel do Linux é uma tarefa que é melhor deixar para aqueles que realmente sabem o que estão fazendo. Um kernel compilado incorretamente pode tornar um sistema não inicializável. Portanto, a menos que você esteja pronto para mergulhar na desafiadora tarefa de compilar código neste nível, use o kernel padrão que vem e atualiza na distribuição de sua escolha.
Perguntas frequentes
-
Qual funcionalidade de hipervisor está embutida no kernel do Linux?
A máquina virtual baseada em kernel (KVM) é uma parte integrada do Linux que transforma o Linux em um software hipervisor que cria e executa máquinas virtuais. KVM é uma tecnologia de virtualização de código aberto que permite que o host Linux principal execute máquinas virtuais, que são ambientes virtuais também conhecidos como convidados.
-
Em que idioma o kernel do Linux está escrito?
O kernel do Linux é escrito na linguagem de programação C. C é usado para muitas necessidades de programação de propósito geral. C divide o programa em vários módulos, e cada módulo pode ser escrito separadamente ou em conjunto.
-
Como faço para verificar a versão do kernel do Linux?
Para descobrir qual versão do kernel do Linux você está executando, digite hostnamectl na linha de comando. A penúltima linha lerá Kernel: Linux e uma string numérica. O primeiro número é a versão principal do kernel, o segundo número é a versão de lançamento principal e o terceiro número é o nível de revisão secundária.