#028 - Udev e HAL

É verdade, nada melhor que aproveitar o tempo em que se está à espera do comboio, para escrever alguma coisa. Espero bem que não cancelem o serviço da PT-Wifi, dado que, vi, no outro dia, anunciarem que possivelmente o sector PT-Wifi iria fechar. Ok, mas não estou aqui para falar da PT, nem dos problemas deles. Estou aqui por outra coisa. Finalmente, pus-me a mexer no udev e no hal para ter automount. Já tinha usado udev antes, há uns meses, mas o hal nunca usei. Antigamente usava o simples autofs para montar os discos.

O haldaemon é um tanto ou quanto diferente do autofs, pelo menos no que vi nas configurações. Tem uma vantagem que me pareceu interessante, quando usado com o gnome-volume-manager + gnome-mount, é possível que este conjunto último use o haldaemon ou o /etc/fstab de acordo com a presença deles. Para além disso, existem montes de propriedades que se podem mudar junto com o haldaemon que, o autofs não permite. E, além disso, no tempo que usei o autofs, era necessário “ir à pasta” para que, esta monta-se. Por outro lado, com este serviço não, o processo é automático.

Primeiro veio a configuração do udev que é, extremamente simples… vou colocar o exemplo da minha câmara fotográfica.

Com o seguinte comando, obtemos os dados do device que queremos criar symlink. Não é obrigatório usar o udev, mas é bastante recomendável para que, os devices fiquem sempre em posições determinadas para o haldaemon.

$ udevinfo -a -p `udevinfo -q path -n /dev/sdb`

De seguida, no ficheiro /etc/udev/rules.d/90-hal.rules, coloquei a devida sintaxe para o meu dispositivo.

# cat 90-hal.rules

# pass all events to the HAL daemon
RUN+=”socket:/org/freedesktop/hal/udev_event”

BUS==”usb”, ATTRS{product}==”Sony DSC”, KERNEL==”sd?1″, NAME=”%k”, SYMLINK+=”usbdev/sonydsc”, GROUP=”hal”

É de notar, o GROUP. É necessário pertencer ao grupo hal se, não querem ter o mesmo problema que eu, em que me esqueci de por o meu utilizador nesse grupo. Adicionem com: # gpasswd -a <username> hal
O que acontece se, não estiverem no grupo, é que ele vai montar, mas não aparecerá ícone no ambiente de trabalho. Para quem usa, GNOME, instalem o gnome-volume-manager. Isto permitirá usar o haldaemon mais eficientemente. Usem o seguinte comando para registar as opções e o mount-point do vosso disco (que será montado em /media/<mount-point>). No meu caso foi:

$gnome-mount –write-settings –device /dev/usbdev/sonydsc –mount-point sonydsc –fstype auto

Após isto, testei fazendo reload das regras do udev e iniciei o serviço hal:

#udevcontrol reload_rules && /etc/rc.d/hal start

Liguei o dispositivo e voilá, apareceu a minha Sony DSC montada, mas com um problema. O nome ficou estranho. Do género “126 MB Volume Removable Device”, claro eu não queria isto, mas sim, “Sony DSC”. Então achei na Internet a solução. Criei o seguinte ficheiro:

$ cat /etc/hal/fdi/policy/10-external.fdi

<?xml version=”1.0″ encoding=”UTF-8″?>

<deviceinfo version=”0.2″>

<device>
<match key=”block.is_volume” bool=”true”>
<match key=”volume.uuid” string=”">
<match key=”block.storage_device” string=”/org/freedesktop/Hal/devices/storage_serial_Sony_Sony_DSC”>
<merge key=”volume.label” type=”string”>Sony DSC</merge>
</match>
</match>
</match>
</device>
</deviceinfo>

As informações que se metem neste ficheiro são obtidas através do hal-device, com o dispositivo ligado. Mas uma vez que aparece várias linhas, é mais fácil por o UID do volume. Eu obti esse UID assim: $gnome-mount –device /dev/usbdev/sonydsc –display-settings e, depois o HAL UID no hal-device <uid>. Desta maneira, consegue-se ver várias informações relacionadas e, utilizamos o match para fazer comparações e o merge para mudar. Reiniciar o hal e voltar a ligar o dispositivo. E voilá, está feito.

Claro, este comentário está um pouco simplista, eu ainda cometi alguns erros e perdi algum tempo a resolver uns problemas, por causa da utilização simultânea do fstab. Mas vejo que não é preciso colocar nada neste ficheiro, apenas se decidirem que se deve montar pelo fstab. O haldaemon pelo que reparei lê pela sequência fstab e depois gnome-mount, por isso, aquele que estiver configurado primeiro é aquele que é válido. Usar o fstab tem a vantagem de que (pelo menos ainda não sei como fazer com o gnome-mount), pode-se montar onde se quer, mas tem a desvantagem de que a pasta tem que existir. No caso do haldaemon, as pastas são criadas quando monta e removidas quando desmonta.

Acho que é tudo!

Daniel Bento

StumbleUpon It!

About this entry