quinta-feira, 25 de junho de 2009

Entendendo o Kernel - Ínicio

Entendendo o Kernel

O Kernel é o núcleo do sistema que conversa diretamento com o hardware.
Além de trocar mensagens diretamento com o hardware ele("kernel") é responsável
por todo o gerenciamento dos recursos do sistema operacional, inclusive de definir as formas
de operações com todos o periféricos, gerenciamento de memória, interrupções e outros.

Suporte a Hardware no Linux

Para que um determinado software funcione corretamente, é necessário que o Kernel possua suporte ao mesmo.
O Kernel do linux pode suportar dispositivos de hardware das seguintes maneiras

-> Kernel (built-in)
: Desta maneira o código que disponibiliza o funcionamento do hardware é implementado diretamente ao código no Kernel.

-> Kernel (modular): O Kernel oferece suporte aos dispositivos de hardware através
de módulos, que podem ser ligado e desligado de acordo com sua necessidade de uso do tal
dispositivo. O Kernel de forma modular fica mais enxuto, ou seja, inicia somente o que você necessita deixando o sistema como um todo mais rápido e de até economia de energia.

Versões númericas do Kernel

Para verificar a versão atual do Kernel no sistema, é usado o comando uname -r para exibir as númerações da versão.
Cada número tem um significado que irá ser tratado com mais detales abaixo:

user@debian5:~$ uname -r
2.6.26-1-686
A B C D

Onde:
A – VERSION: Número principal (raramente muda).
B – PATCH LEVEL: Indica mudanças importantes no funcionamento do kernel do Linux. Se ímpar, indica um kernel experimental, se par, então é um kernel considerado estável (”de produção).
C – SUBLEVEL: Sua evolução indica o suporte a novos dispositivos, bem como correção de bugs e pequenos melhoramentos no sistema.
D – EXTRA VERSION: Usado quando desejamos diferenciar duas compilações de um kernel de mesma versão, afim de construírem de módulos separados.

Outras opções que podem ser utilizadas com o comando uname:

-a (lista todas as informações)
-s (lista o nome do kernel)
-n (lista o hostname)
-v (versão do kernel)
-m (lista a arquitetura do cpu)
-p (tipo do cpu)
-i (plataforma de hardware)
-o (sistema operacional)


Diretório dos módulos do sistema

Os módulos já compilados no Kernel são armazenados no diretório /lib/modules/
Neste diretório contém os módulos que estão organizados sob uma estrutura comum, Alguns arquivos e diretórios seguem a seguir:

->modules.alias - Possui uma lista dos módulos em relação aos dispositivos de hardware.
->modules.dep - Possui uma árvore de dependencias dos módulos.
->modules.pcimap - Armazena informações sobre todos os dispositivos PCI.
->modules.symbols - Possui a lista dos símbolos internos dos módulos.
->modules.usbmap - Armazena o mapa de dispositivos USB conhecidos.
Kernel/ - Contém todos os módulos compilado no sistema.
Kernel/Drivers/ - Contém todos os módulos que carregam os módulos de hardware.

Listando Módulos Carregados

lsmod - Exibe os módulos carregados pelo sistema.

Dica: Para ver o tamanho que o módulo ocupa na memória execute $ cat /proc/modules

Alguns módulos depende do outros módulos para funcionar, para ver se certo módulo possui depêndencias execute, $ lsmod |grep cdrom

Obter informações sobre o módulo
$ modinfo cdrom
ou para mostrar somente o local que está o módulo:
$ modeinfo -F filename cdrom

Descarregando Módulos
rmmod ide_cd
rmmod cdrom

Carregando Módulos
modprobe -v ntfs

Listando e pesquisando módulos disponíveis

modprobe -l - lista todos os módulos disponíveis
modprobe -l "*tcp*" - neste caso lista todos os módulos com o nome tcp

Mario Uzae
E-mail: mariouzae@gmail.com