Udev - Funcionamento e Regras

Este artigo tem como objetivo entender o UDEV e aplicar regras utilizando o mesmo.

[ Hits: 48.162 ]

Por: Perfil removido em 22/10/2012


Detecção e ativação de dispositivos e a função do udev nesse processo



Introdução

Udev (Userspace devfs) é um sistema de arquivos presente desde o kernel 2.6 e substitui o devfs completamente.

É responsável por gerenciar os arquivos de dispositivos do diretório /dev, criando e removendo os mesmos dinamicamente. O udev também tem função do hotplug, trabalhando em conjunto com o HAL (Hardware Abstraction Layer), adicionando os dispositivos conforme são instalados na máquina. Sem ele, seria impossível acessar seu pendrive, webcam e impressora, por exemplo, quando conectados.

Funcionamento

Entendendo como os dispositivos são detectados e adicionados no sistema GNU/Linux.

O sistema GNU/Linux faz uso do kernel e de serviços para detectar e adicionar dispositivos ao sistema, para que os mesmos fiquem disponíveis para uso do usuário e do próprio sistema.

Abaixo, é mostrada a hierarquia no processo de detecção e adição de dispositivos:
Linux: Udev - Funcionamento e Regras
Como visto na figura acima, existe todo um processo até os dispositivos estarem disponíveis para uso do sistema e/ou usuários, que vai desde a detecção do device pelo kernel até a criação de um arquivo de dispositivo no diretório /dev pelo udev.

Todo processo começa com o kernel detectando os dispositivos e exportando informações sobre os mesmos para o sistema de arquivos virtual Sysfs (que está montado no diretório /sys) e ao mesmo tempo, enviando um evento para o daemon do serviço udev.

O evento informa ao udev uma ação no dispositivo, esta ação pode ser um adição, remoção ou alteração de um dispositivo conectado à máquina.

Quando o udev é informado pelo kernel sobre o evento, trata de usar as informações do diretório /sys para identificar o device conectado, carregar o módulo correto e criar um arquivo especial no diretório /dev com exceção da placa de rede que é tratada no kernel.

Aí você pergunta: E o HAL?

Simples, o HAL é um serviço que informa aos programas do sistema se um dispositivo está disponível, foi alterado ou removido a todo tempo.

Na verdade, o HAL já não é essencial para este trabalho, pois algumas distribuições atualmente, conseguem fazer todo este trabalho somente pelo udev, ou em conjunto com o serviço D-Bus. No entanto, para outras distribuições, isso torna-se essencial.

É importante destacar que todo este processo de detectar e ativar os devices explicado anteriormente, não só acontece em Hotplug, ou seja, os dispositivos são instalados com o sistema em uso, mas também em Coldplug, os dispositivos são conectados (instalados) com a máquina desligada e o sistema, quando em uso, detecta-os.

Observe que quem realmente faz o trabalho de hotplug, é o udev.

Os arquivos de dispositivos criados no diretório /dev nada mais são que arquivos especiais, obtidos pela combinação de dois endereços do kernel, um chamado de major number e outro de minor number.

Sendo que:
  • major number → É usado para identificar uma categoria de dispositivos.
  • minor number → Identifica o dispositivo.

Veja na figura abaixo, um exemplo destes números:


    Próxima página

Páginas do artigo
   1. Detecção e ativação de dispositivos e a função do udev nesse processo
   2. Hierarquia dos dispositivos e chaves do udev
   3. Regras do udev
Outros artigos deste autor

Ingressando estações de trabalho Ubuntu no AD com Closed In Directory

Formatando fontes no openoffice

Instalando o kernel 2.6.13 pré-compilado no Slackware 10.2

Instalação do XFCE 4.2 no Debian

Netcat - O canivete suíco do TCP/IP

Leitura recomendada

Gtk-Qt Engine: temas Qt em aplicações GTK

VIM avançado (parte 1)

Linux Thinstation para estações antigas

LiveCDs versus D.Q.R.E.Cs

Utilizando ferramentas de virtualização para testar distros

  
Comentários
[1] Comentário enviado por danniel-lara em 22/10/2012 - 20:41h

muito bom o artigo
parabéns

[2] Comentário enviado por removido em 23/10/2012 - 05:07h

cabra, tu és muito corajoso!!! merece 10....
;-))

[3] Comentário enviado por julio_hoffimann em 23/10/2012 - 18:32h

Parabéns Edson!

Abraço!

[4] Comentário enviado por removido em 23/10/2012 - 18:46h

Obrigado pelos comentários pessoal!!!

[5] Comentário enviado por removido em 23/10/2012 - 23:57h

Grande Edson!

Sempre aprendo muito com seus artigos.


Mesmo quase tudo no Linux ser arquivo, estava com dificuldades em entender a estrutura do UDEV.

Ótimo trabalho!

[6] Comentário enviado por antonio.gatto em 08/11/2012 - 12:46h

Muito Bom o Artigo !!

[7] Comentário enviado por rodcorporation em 11/01/2013 - 12:20h

Manooo! Já li muito artigo aqui, achei esse um dos melhores que ja li! Achei interessante. Parabéns, uma dica para o artigo, demorei pra perceber que os dispositivos pais terminam com S, por exemplo DRIVERS, KERNELS e SUBSYSTEMS, seria legal informar que os pais tem o S no final, principalmente a regra que você deu de exemplo onde a primeira não funciona, nao conseguia entender pq exatamente o DRIVERS se referia o pai. por causa do S.

Outra coisa que eu queria perguntar, o que é possível fazer com o udev com as regras?

Valeu man, nota 10!

[8] Comentário enviado por removido em 13/01/2013 - 15:52h

É possível executar scripts para fins diversos sempre que um dispositivo reconhecido e criado, nomear os respectivos nomes contidos para os mesmos em /dev.

[9] Comentário enviado por removido em 09/02/2013 - 07:23h

Olá. Parabéns pelo artigo.

Gostaria de saber se há mais documentação pro udev além dos txts da documentação do kernel.

Não havia encontrado além, até ler seu artigo.

"Site" do udev: https://www.kernel.org/pub/linux/utils/kernel/hotplug/

[10] Comentário enviado por removido em 09/02/2013 - 09:30h

Obrigado pelo comentário Listeiro_037 !

Na ultima página do artigo deixei algumas referências usadas para conclusão do trabalho. E no wiki do archlinux também tem algumas documentações.

[11] Comentário enviado por MAPOGOS em 01/07/2013 - 20:11h

Porque remover os nós dos dispositivo?
E quando necessariamente deverei fazer este cmd?
Obrigado;
Estudante.

[12] Comentário enviado por Renan20 em 29/07/2013 - 00:08h

Muito bom o seu artigo (parabéns)

[13] Comentário enviado por Zephyr em 29/01/2015 - 01:03h

Parabéns pelo artigo: ficou bem claro e explicativo.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts