Entendendo o udev

Recentemente, surgiu um terceiro componente, o udev, que substitui o devfs e assume parte das funções do hotplug, com a opção de se integrar a ele, oferecendo suporte aos scripts e outras personalizações, ou substituí-lo completamente, opção
adotada por muitas distribuições.

A principal vantagem do udev é que nele é possível definir devices “fixos” para cada periférico. Sua impressora pode passar a receber sempre o device “/dev/printer/epson” e seu pendrive o “/dev/pendrive”, mesmo que você tenha
outros dispositivos instalados. É possível também executar scripts quando eles são conectados ou removidos, criando um leque muito grande de opções.

Os devices são criados conforme os periféricos são conectados, fazendo com que o /dev contenha entrada apenas para os periféricos detectados.

No devfs, o diretório “/dev” contém devices para todo tipo de componente que é suportado pelo Kernel, resultando num número absurdo de pastas e devices dentro do diretório. Outra limitação é que os periféricos podem ser
associados a devices diferentes, de acordo com a ordem em que são plugados. Digamos que você tenha um pendrive e um HD externo, ambos USB. Se você plugar o pendrive primeiro, ele será o “/dev/sda”, enquanto o HD será o “/dev/sdb”. Mas, se você inverter a
ordem, o HD é que será o “/dev/sda”. Se você tiver um HD serial ATA, então o HD será o “/dev/sda”, o pendrive será o “/dev/sdb” e o HD externo será o “/dev/sdc” e, assim por diante. Essa confusão toda torna complicado fazer um script de backup ou qualquer
outra coisa que dependa do pendrive estar disponível sempre no mesmo lugar.

Outra vantagem do udev é que, por ser escrito em C e ter um funcionamento interno muito mais simples, ele é também mais rápido que o hotplug, o que faz diferença em muitas situações.

A parte em que o udev e o hotplug se sobrepõem é com relação a automatização de tarefas. O hotplug suporta o uso de scripts, que são executados sempre que um dispositivo em particular, ou algum dispositivo dentro de uma
categoria definida, é plugado. Estes scripts permitem fazer com que seja criado um ícone no desktop ao plugar um pendrive, fazer com que o configurador de impressoras seja aberto quando uma nova impressora USB é conectada, entre inúmeras outras
possibilidades.

O udev suporta o uso de “regras”, que, entre outras coisas, também permitem o uso de scripts. Ele oferece compatibilidade com os scripts do hotplug, mas esta funcionalidade não vem ativada em todas as distribuições. De uma
forma geral, o udev está sendo adotado rapidamente em todas as principais distribuições e, em distribuições que o utilizam, é mais recomendado trabalhar com regras do udev do que com scripts do hotplug. Mais adiante, no capítulo sobre shell script,
veremos com mais detalhes como escrever tanto scripts para o hotplug quanto regras para o udev.

Em algumas distribuições, o udev é configurado de forma a substituir o hotplug completamente, enquanto outras optam por integrar os dois. Nestes casos, o hotplug deixa de ser um serviço separado e passa a ser iniciado
juntamente com o serviço “udev”:

# /etc/init.d/udev start

Uma observação é, que ao contrário do devfs e mesmo do hotplug, o udev é independente do Kernel, ele pode ser instalado, removido e atualizado rapidamente, como qualquer outro programa. Se algum periférico não estiver sendo
detectado ou você estiver tendo problemas gerais, experimente atualizar o pacote “udev” a partir do repositório com atualizações para a distribuição em uso. Nas distribuições derivadas do Debian, você pode atualizá-lo via apt-get:

# apt-get install udev

Na maior parte das distribuições, você encontrará vários arquivos com regras pré-configuradas dentro do diretório “/etc/udev“, destinados a executar funções previamente executadas pelo devfs, hotplug e scripts
diversos. O arquivo “/etc/udev/devfs.rules”, por exemplo, tem a função de criar os devices de acesso a diversos dispositivos, incluindo as portas seriais e paralelas, mouses PS/2, joysticks e muitos outros periféricos não plug-and-play.

O arquivo “/etc/udev/links.conf” permite definir devices adicionais manualmente, de forma que eles sejam recriados a cada boot. Isto é necessário pois no udev o diretório /dev é dinâmico, fazendo que dispositivos não
utilizados sejam perdidos a cada reboot.

Uma configuração comum, é adicionar regras que criam os devices utilizados pelo VMware, de forma que eles não se percam ao reiniciar, como em:

M vmmon –mode 666 c 10 165
M vmnet0 –mode 666 c 119 0
M vmnet1 –mode 666 c 119 1
M vmnet8 –mode 666 c 119 8

As regras permitem também criar links. Se você quer que seja criado o link “/dev/modem”, apontando para o modem que está na porta “/dev/ttyS3”, adicione:

L modem /dev/ttyS3

A as letras “L” e “M” no início das linhas indicam o tipo de dispositivo que será criado. O “L” indica que estamos falando de um dispositivo de caracteres (que incluem modems, palms e tudo que é visto pelo sistema como um
dispositivo serial) e o “M” indica um dispositivo de bloco, como uma partição num HD ou pendrive, ou ainda uma interface de rede virtual, como no caso do VMware. O “–mode” indica as permissões de acesso, enquanto os dois números depois do “c” indicam o
major e minor number, os mesmos endereços que são fornecidos ao criar o dispositivo manualmente usando o comando “mknod”.

Sobre o Autor

Redes Sociais:

Deixe seu comentário

X