Definindo devices persistentes com udev
Enviado por Marcelo Moreira de Mello (tchello·melloΘgmail·com):
Para que vocês possam entender melhor em que situação vamos utilizá-lo vamos imaginar o seguinte cenário: como todo bom administrador, devemos nos preocupar com a realização de backups de maneira constante e isso não poderia ser diferente em sua estação de trabalho. Assim, você acaba de adquirir um HD externo via usb para realizar seus backups. Como esse HD é um dispositivo de armazenamento via usb, o kernel irá reconhece-lo através do módulo chamado usb_storage. Todo dispositivo que é acessado via o módulo usb_storage, será reconhecido pelo kernel como se fosse um dispositivo SCSI ou SATA e por esse motivo acessado através /dev/sd*. (…)” [referência: tchellomello.livejournal.com]
É interessante ter este tipo de conhecimento, especialmente aplicado a Modems 3G. Precisei pegar uma vez uma regra, para um modem ZTE que chamava o usb_modeswitch, para que ele fosse reconhecido pelo NetworkManager.
Apesar de várias distros terem um pacote “udev-extras”, é interessante saber manusear estas regras =)
Estou com uma duvida?
Utilizar o UUID não seria a melhor forma de lidar com o problema?
Não sou muito expert nesta area. Mas andei lendo sobre isto, aqui:
http://blog.welrbraga.eti.br/?p=570
Já tentei isso com a placa de som. Comprei uma webcam com microfone usb e, após plugar e um boot, inverteu a posição do /dev/dsp causando alguns problemas em diversos aplicativos. Li a respeito das regras do udev e não deu certo. No final uma edição no /etc/modprobe.d/alsa-base.conf resolveu o meu problema:
#Vamos facilitar no /dev/dsp
options snd-emu10k1 index=0
options snd-usb_audio index=1
Outra complicação foi com os discos. O kernel padrão do Lenny considera tanto ide quanto sata como sd[a-z][0-9] e havia uma troca e troca de partiçoes. Neste usei uma solução parecida ao que foi mencionada pelo ghost-man. Em vez do UUID utilizei o LABEL. Por sorte dou um nome único para cada partição. Nem me preocupei com udev.
Mas o caso mais comum em que utilizei as regras do udev foram nas placas de rede. Dá para definir tranquilo em qual eth a placa deve ficar pelo 70-persistent-net.rules.
Muito bacana, Marcelo! Valeu.
Assim como o ghost man, eu também queria saber sobre os UUID.
André Caldas.
Ghost man,
A utilização do UUID pode ser uma alternativa quando se quer montar o dispositivo. Inclusive pode-ser visualizar todos os labels e uuid do sistema executando o comando blkid.
Mas o udev é um sub-sistema poderoso, onde podemos por exemplo criar uma regra assim, agregar informações externas e não somente referente ao sistema de arquivos que iremos montar.
Por exemplo:
# udevinfo -a -p $(udevinfo -q path -n /dev/sdb1)
looking at device ‘/devices/pci0000:00/0000:00:02.0/usb2/2-1/2-1:1.0/host6/target6:0:0/6:0:0:0′:
ID==”6:0:0:0″
BUS==”scsi”
DRIVER==”sd”
SYSFS{rev}==”1.00″
SYSFS{model}==”X250,D560Z,C350Z”
SYSFS{vendor}==”OLYMPUS ”
SYSFS{scsi_level}==”3″
SYSFS{type}==”0″
/etc/udev/rules.d/63-camera.rules
NAME==”sd?1″, BUS==”scsi”, SYSFS{model}==”X250,D560Z,C350Z”, SYMLINK+=”camera”
Ou ainda.. algo to tipo..
/etc/udev/rules.d/64-pppd.rules
ACTION==”add”, KERNEL==”ppp0″, RUN+=”/usr/bin/wall Interface PPP Conectada”
Abraços.