Kernel

O kernel é a parte mais importante do Linux, pois é o responsável por controlar os hardwares e os softwares. Este se encontra entre a camada de hardware e o GNU e é responsável pelo gerenciamento das tarefas em 4 áreas gerais do sistema:

TAREFA

DESCRIÇÃO

Gerenciamento de Processos

Determina quais processos tem permissão para usar a CPU

Gerenciamento de Memória

Ajuda a monitorar toda a memória - que parte será alocada no momento para um processo em particular, que parte deve ser compartilhada entre os processos e que parte está livre

Device Drivers

Atua como uma interface entre o hardware (por exemplo, um disco) e os processos. Normalmente, operar o hardware é uma tarefa do kernel

Chamadas de Sistema e Suporte

Os processos normalmente usam chamadas de sistema (syscall) para se comunicar com o kernel

NOTA: Nas Chamadas de Sistema e Suporte, temos duas chamadas importantes para entender como os processos são inicializados:

  • fork() = Quando um processo chama fork(), o kernel cria uma cópia praticamente idêntica ao processo.

  • exec() = Quando um processo chama exec(programa), o kernel inicia programa, substituindo o processo corrente.

Boot Loader

Geralmente o Kernel está localizado em /vmlinuz ou em /boot/vmlinuz. Um boot loader (carregador de boot) carrega esse arquivo na memória e o coloca em ação quando o sistema é inicializado. Depois que o boot loader executar e colocar o kernel em ação, o principal do Kernel não será mais utilizado pelo sistema em execução. Entretanto você encontrará muitos módulos que o kernel pode carregar e descarregar por demanda durante o curso normal de operação do sistema. Eles são chamados de Módulos Carregáveis do Kernel e estão localizados em /lib/modules.

Informações Sobre Kernel

# Todas as informações
uname -a

# Nome do hardware da máquina (m), Kernel release (r) e nome do kernel (s)
uname -mrs

# Linux Release
cat /proc/version

# Áreas compartilhadas da memória
ipcs -m --human

rpm -q kernel

# Controle do Kernel
dmesg | grep Linux

ls /boot | grep vmlinuz-

# Ubuntu
cat /etc/lsb-release

# RedHat
cat /etc/redhat-release

CUIDADO: Manipular o Kernel pode deixar o SO inutilizável. Ao realizar por exemplo um PrivEsc, utilize o Kernel em último caso, para não correr o risco de comprometer o Linux.

Last updated