Apesar da maioria dos dispositivos necessitados pelos pacotes no BLFS
e além serem configurados adequadamente pelo udev usando as regras padrão instaladas pelo LFS
em /etc/udev/rules.d
, existem casos
onde as regras precisam ser modificadas ou estendidas.
Se existirem múltiplas placas de som em um sistema, [então] a placa
de som "padrão" se torna aleatória. O método para estabelecer a
ordem da placa de som depende se os controladores são módulos ou
não. Se os controladores da placa de som forem compilados
internamente no núcleo, [então] o controle é via parâmetros de
linha de comando do núcleo em /boot/grub/grub.cfg
. Por exemplo, se um sistema
tiver ambas, uma placa FM801 e uma placa PCI SoundBlaster, [então]
o seguinte pode ser acrescentado à linha de comando:
snd-fm801.index=0 snd-ens1371.index=1
Se os controladores da placa de som forem construídos como módulos,
[então] a ordem pode ser estabelecida no arquivo /etc/modprobe.conf
com:
options snd-fm801 index=0
options snd-ens1371 index=1
Os dispositivos USB geralmente tem dois tipos de nós de dispositivo associados com eles.
O primeiro tipo é criado pelos controladores específicos do dispositivo (por exemplo, usb_storage/sd_mod ou usblp) no núcleo. Por exemplo, um dispositivo USB de armazenamento em massa seria /dev/sdb; e uma impressora USB seria /dev/usb/lp0. Esses nós de dispositivo existem somente quando o controlador específico do dispositivo estiver carregado.
O segundo tipo de nós de dispositivo (/dev/bus/usb/BBB/DDD, onde BBB é o número do barramento e DDD é o número do dispositivo) é criado mesmo se o dispositivo não tiver um controlador de núcleo. Ao usar esses nós de dispositivo USB "crus", um aplicativo consegue trocar pacotes USB arbitrários com o dispositivo, isto é, contornar o possivelmente existente controlador de núcleo.
O acesso a nós de dispositivo USB brutos é necessário quando um aplicativo do espaço do(a) usuário(a) estiver atuando como um controlador de dispositivo. Entretanto, para o aplicativo abrir o dispositivo com sucesso, as permissões tem de ser configuradas corretamente. Por padrão, devido a motivos de segurança, todos os dispositivos USB brutos são de propriedade do(a) usuário(a) root e do grupo root, e tem permissões 0664 (o acesso de leitura é necessário, por exemplo, para o lsusb funcionar e para os aplicativos acessarem hubs USB). Os pacotes (tais como SANE e libgphoto2) contendo controladores de dispositivo USB do espaço do(a) usuário(a) também enviam regras do Udev que mudam as permissões dos dispositivos USB brutos controlados. Isto é, as regras instaladas pelo SANE mudam as permissões para escaneadores conhecidos, porém não para impressoras. Se um(a) mantenedor(a) de pacote se esqueceu de escrever uma regra para o teu dispositivo, informe um defeito para ambos, o BLFS (se o pacote estiver lá) e o(a) desenvolvedor(a), e você precisará escrever tua própria regra.
Antes do Linux-2.6.15, o acesso de dispositivo USB bruto era realizado não com nós de dispositivo /dev/bus/usb/BBB/DDD, mas com pseudo arquivos /proc/bus/usb/BBB/DDD. Alguns aplicativos ainda usam somente essa técnica obsoleta e não conseguem usar os novos nós de dispositivo. Eles não conseguem funcionar com a versão 3.5 ou mais recente do núcleo Linux. Se você precisar executar tal aplicativo, contacte o(a) desenvolvedor(a) dele para uma correção.
O ajuste fino dos atributos de dispositivo, tais como nome e
permissões do grupo, é possível criando-se regras extras do
udev, casando com algo como isto.
O fornecedor e produto pode ser encontrado procurando-se nas
entradas do diretório /sys/devices
ou
usando-se o udevadm
info depois que o dispositivo tenha sido anexado.
Veja-se a documentação no diretório atual do udev do /usr/share/doc
para detalhes.
SUBSYSTEM=="usb_device", SYSFS{idVendor}=="05d8", SYSFS{idProduct}=="4002", \
GROUP:="scanner", MODE:="0660"
A linha acima é usada somente para propósitos descritivos. As regras do udev da escaneadora são colocadas no lugar quando se instalar o SANE-1.2.1.
Em alguns casos, faz sentido desabilitar o udev completamente e criar dispositivos estáticos. Servidores são um exemplo dessa situação. Um servidor precisa da capacidade de manusear dispositivos dinâmicos? Somente o(a) administrador(a) do sistema pode responder a essa pergunta, porém, em muitos casos, a resposta será não.
Se dispositivos dinâmicos não forem desejados, então dispositivos
estáticos precisam ser criados no sistema. Na configuração padrão,
o script de inicialização /etc/rc.d/rcS.d/S10udev
monta uma partição
tmpfs
sobre o diretório
/dev
. Esse problema pode ser
ultrapassado montando-se a partição raiz temporariamente:
Se as instruções abaixo não forem seguidas cuidadosamente, [então] o seu sistema poderia se tornar não inicializável.
mount --bind / /mnt cp -a /dev/* /mnt/dev rm /etc/rc.d/rcS.d/{S10udev,S50udev_retry} umount /mnt
Neste ponto, o sistema usará dispositivos estáticos até a próxima reinicialização. Crie quaisquer dispositivos adicionais desejados usando o mknod.
Se você quiser restaurar os dispositivos dinâmicos, [então] recrie
os vínculos simbólicos /etc/rc.d/rcS.d/{S10udev,S50udev_retry}
e
reinicialize novamente. Dispositivos estáticos não precisam ser
removidos (console e null sempre são necessários), pois eles são
cobertos pela partição tmpfs
. O uso
do disco para dispositivos é desprezível (cerca de 20–30 bytes por
entrada).
Se o processo inicial da inicialização não configurar o dispositivo
/dev/dvd
adequadamente, [então] ele
pode ser instalado usando-se a seguinte modificação para as regras
padrão do udev. Como o(a) usuário(a) root
, execute:
sed '1d;/SYMLINK.*cdrom/ a\ KERNEL=="sr0", ENV{ID_CDROM_DVD}=="1", SYMLINK+="dvd", OPTIONS+="link_priority=-100"' \ /lib/udev/rules.d/60-cdrom_id.rules > /etc/udev/rules.d/60-cdrom_id.rules