Selv om de fleste enheter som trengs av pakker i BLFS og utover er
satt opp skikkelig av udev ved å
bruke standardreglene installert av LFS i /etc/udev/rules.d
, det er tilfeller der reglene må
endres eller utvides.
Hvis det er flere lydkort i et system, vil "standard" lydkortet
blir tilfeldig. Metoden for å etablere lydkortrekkefølge avhenger
av om driverne er moduler eller ikke. Hvis lydkortets drivere er
kompilert inn i kjernen, kontroll er via kjernekommandolinjens
parametere i /boot/grub/grub.cfg
. For
eksempel, hvis et system har både et FM801-kort og et SoundBlaster
PCI-kort, følgende kan legges til kommandolinjen:
snd-fm801.index=0 snd-ens1371.index=1
Hvis lydkortdriverne er bygget som moduler, kan rekkefølgen bli
etablert i /etc/modprobe.conf
filen
med:
options snd-fm801 index=0
options snd-ens1371 index=1
USB enheter har vanligvis to typer enhetsnoder knyttet til seg.
Den første typen er laget av enhetsspesifikke drivere (f.eks. usb_storage/sd_mod eller usblp) i kjernen. For eksempel en USB masselagringsenhet ville være /dev/sdb, og en USB skriver ville være /dev/usb/lp0. Disse enhetsnodene eksisterer bare når den enhetensspesifikke driveren er lastet inn.
Den andre typen enhetsnoder (/dev/bus/usb/BBB/DDD, der BBB er bussnummeret og DDD er enhetsnummeret) opprettes selv om enheten ikke har en kjernedriver. Ved å bruke disse "rå" USB enhetenes noder, kan en applikasjon utveksle vilkårlige USB pakker med enheten, dvs. omgå den muligens eksisterende kjernedriveren.
Tilgang til rå USB enhetsnoder er nødvendig når et brukerromsprogram fungerer som enhetsdriver. Men for at programmet skal lykkes med å åpne enheten, må tillatelsene settes riktig. Som standard, pga av sikkerhetshensyn eies alle rå USB enheter av bruker root og gruppe root, og har 0664-tillatelser (lesetilgangen er nødvendig, f.eks. for at lsusb skal fungere og for at programmer skal få tilgang til USB huber). Pakker (f.eks som SANE og libgphoto2) som også inneholder USB enhetsdrivere for brukerområdet send udev-regler som endrer tillatelsene til den kontrollerte rå USB enheten. Det vil si at regler installert av SANE endrer tillatelser for kjente skannere, men ikke skrivere. Hvis en pakkevedlikeholder glemte å skrive en regel for enheten din, rapporter en feil til både BLFS (hvis pakken er der) og oppstrøms, og du må skrive din egen regel.
Før Linux-2.6.15 ble tilgang til rå USB enheter ikke utført med /dev/bus/usb/BBB/DDD enhetsnoder, men med /proc/bus/usb/BBB/DDD pseudofiles. Noen applikasjoner bruker fortsatt bare denne foreldede teknikken og kan ikke bruke de nye enhetsnodene. De kan ikke fungere med Linux kjerne versjon 3.5 eller nyere. Hvis du trenger å kjøre en slik applikasjon, kontakt utvikleren av den for en løsning.
Finjustering av enhetsattributter som gruppenavn og tillatelser er
mulig ved å lage ekstra udev
regler, samsvarende på noe slikt. Leverandøren og produktet kan
finnes med å søke på /sys/devices
mappegoppføringer eller bruk udevadm
info etter at enheten er koblet til. Se
dokumentasjonen i gjeldende udev
mappen til /usr/share/doc
for
detaljer.
SUBSYSTEM=="usb_device", SYSFS{idVendor}=="05d8", SYSFS{idProduct}=="4002", \
GROUP:="scanner", MODE:="0660"
Linjen ovenfor brukes kun for beskrivende formål. udev skanner regler settes på plass når SANE-1.2.1 installeres.
I noen tilfeller er det fornuftig å deaktivere udev fullstendig og lage statiske enheter. Servere er ett eksempel om denne situasjonen. Trenger en server evne til å håndtere dynamiske enheter? Bare systemadministratoren kan svare på det spørsmålet, men i mange tilfeller vil svaret være nei.
Hvis dynamiske enheter ikke er ønsket, må statiske enheter være
opprettet på systemet. I standardkonfigurasjonen /etc/rc.d/rcS.d/S10udev
oppstartsskript monterer
en tmpfs
partisjon over
/dev
mappen. Dette problemet kan
overvinnes ved å montere root partisjonen midlertidig:
Hvis instruksjonene nedenfor ikke følges nøye, kan systemet ditt bli uoppstartbart.
mount --bind / /mnt cp -a /dev/* /mnt/dev rm /etc/rc.d/rcS.d/{S10udev,S50udev_retry} umount /mnt
På dette tidspunktet vil systemet bruke statiske enheter på neste omstart. Lag eventuelle ekstra enheter ved hjelp av mknod.
Hvis du vil gjenopprette de dynamiske enhetene, gjenskaper du
/etc/rc.d/rcS.d/{S10udev,S50udev_retry}
symbolske
koblinger og starter på nytt. Statiske enheter trenger ikke å
fjernes (konsoll og null er alltid nødvendig) fordi de er dekket av
tmpfs
partisjonen. Disk bruk for
enheter er ubetydelig (ca 20–30 byte per oppføring.)
Hvis den første oppstartsprosessen ikke konfigurerer /dev/dvd
enheten riktig, kan den installeres
ved å bruke følgende modifikasjon av standard udev regler. Som
root
bruker, kjør:
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