Jak na vlastní názvy zařízení pro udev 

S pokračujícím vývojem jádra se nejprve objevil udev, pak se devfs označil jako DEPRECATED a nakonec zbyl pouze udev. Můžeme s tím nesouhlasit, můžeme proti tomu bojovat, ale to je tak všechno, co proti tomu můžeme dělat :-).

O čem to vlastně mluvím? Přece o správcích dynamického adresáře dev, který obsahuje speciální soubory pro každé zařízení, co v počítači existuje. A když už mne kernel donutil nainstalovat udev, proč ho nepoužít na transparentní pojmenovávání externích zařízení, co k počítači připojuji. Ono totiž v oblasti disků platí v linuxu pravidlo, že všechno, co není IDE, je SCSI. Takže jméno sd[a-z] si rozdělují jak SATA disky, tak USB disky, tak opravdové SCSI disky. Jěště k tomu je rozdělovací klíč pouze podle toho, kdo dřív, což je dost nepraktické a může to vést k fatálním omylům (Například chci naformátovat flashdisk, co se jmenuje sda1, a on to ve skutečnosti bude můj nový SATA disk :-( )

Přitom udev nabízí mnoho úrovní rozlišování názvů, například podle sběrnice, nebo třeba podle konkrétního ID zařízení. O tom chci pravě mluvit. Připojím tedy zařízení, třeba svůj Mp3 přehrávač. Systém mu přidělí jméno sda. Pomocí programu udevinfo zjistím, podle čeho by se dal přehrávač najít:

# udevinfo -q env -n /dev/sda
ID_VENDOR=iriver
ID_MODEL=MassStorage_Disc
ID_REVISION=0001
ID_SERIAL=iriver_MassStorage_Disc
ID_TYPE=disk
ID_BUS=usb
ID_PATH=pci-0000:00:1d.0-usb-0:2:1.0-scsi-0:0:0:0

Je vidět, přehrávač se dá zjistit třeba pomocí ID_VENDOR. Takže do /etc/udev/rules.d/01-local.rules napíšu

BUS=="usb", KERNEL=="sd*", ENV{ID_VENDOR}=="iriver", NAME="iriver%n"
a čekám, že po novém připojení už se bude jmenovat /dev/iriver. Není tomu tak. Proč? Ono totiž ty proměnné prostředí, podle kterých se dá zjistit, co je to za zařízení, se načítaji jiným příkazem až v souboru /etc/udev/rules.d/50-udev.rules, takže v době, kdy se vyhodnocuje výše uvedené pravidlo ještě není prostředí nastaveno. Je potřeba teda před daný řádek s pravidlem okopírovat pravidlo pro načtení proměnných prostření z uvedeného souboru. Celý soubor /etc/udev/rules.d/01-local.rules musí tedy vypadat takto:

BUS=="usb", KERNEL=="sd*", ENV{ID_SERIAL}=="", IMPORT="usb_id -x"
BUS=="usb", KERNEL=="sd*[0-9]", IMPORT{parent}=="ID_*"
BUS=="usb", KERNEL=="sd*", ENV{ID_VENDOR}=="iriver", NAME="iriver%n"
EDIT> Zjistil jsem, že uvedená pravidla se načítají také v souboru 01-early.rules, takže stačí svůj lokální soubor s pravidly pouze správně pojmenovat 10-local.rules a funguje to taky.
[ zobrazit záznam ] ( 3343 zobrazení ) trvalý odkaz ( 3 / 18252 )
Jak na české manuálové stránky 

Nastavit si v Linuxu české prostředí není problém. Já osobně jsem si zvykl na kódování češtiny ISO-8859-2, protože jde o kódování s pevnou délkou znaku (narozdíl od UTF-8 - s tím má bash dodnes problémy) a zároveň bez nějaké nadbytečnosti. Navíc všechny znaky, které jsem kdy potřeboval napsat, znaková sada ISO latin 2 (to je ta samá, jen jiný název) obsahuje.

Pro zapnutí české podpory obvykle stačí nastavit proměnnou prostředí LANG na cs_CZ. Aby byly české znaky čitelné na textové konzoli, je potřeba ještě zavést příslušný font:

setfont lat2-16

Teď už všechno píše správně česky, až na manuálové stránky. Už ani nevím, kolik hodin mě stálo, než jsem přišel na to, že stačí v souboru /etc/man.conf opravit řádek

NROFF           /usr/bin/nroff -Tascii -c -mandoc
na řádek
NROFF           /usr/bin/nroff -Tlatin1 -c -mandoc
Pozor, opravdu tam je latin1.
[ zobrazit záznam ] ( 1270 zobrazení ) trvalý odkaz ( 3 / 18166 )
Je ze mne hvězda :-) 

V archivu Audiovizuálního centra Silicon Hill se objevila jedna z mých přednášek v rámci projektu SUT.

Veselé sledování :-)
[ zobrazit záznam ] ( 1124 zobrazení ) trvalý odkaz související odkaz ( 3 / 18304 )
Komentáře už snad fungují 

Tímto oznamuji, že na nesčetná přání dvou čtenářů tohoto blogu jsem k němu zavedl modul, umožňující komentovat obsah mých příspěvků. Byl to trochu zápas na život a na smrt mezi mnou a MySQL, ale nakonec jsem vyhrál a zjistil, že MySQL má taky pěknou dokumentaci a vlastně na tom nic není :-). Tak jenom doufám, že to bude i fungovat.

V souvislosti se spuštěním komentáře se změnilo také umístění tohoto blogu. Snad už definitivně.
[ zobrazit záznam ] ( 936 zobrazení ) trvalý odkaz ( 3 / 28753 )
Lineak - ovladač na multimediální klávesnici 

Poslední dobou mám tolik práce, že na aktualizaci blogu nemám vůbec ani pomyšlení. Až si chvilku najdu, pokusím se konečně implementovat i komentáře. Ale to se nejdřív budu muset naučit s MySQL :-)

K věci - multimediální klávesnice se obvykle řeší tak, že pro další klávesy posílají další scankódy(1), pokud je systém rozluští, přiřadí jim keykódy(2) a ty pokud rozezná X server - tedy v graf režimu, přiřadí jim název klávesy(3). Až po bod (2) to funguje celé samo, tedy pokud není klávesnice nějak atypická. Pro přiřazení kódu klávesy se dá použít program xmodmap, dokonce jsou vyhrazeny speciální názvy kláves jako XF86AudioMute, XF86Standby,... ale snad žádné desktopové prostředí na tyhle klávesy (zatím) nereagují. Takže je v prostředí potřeba definovat, co se má udělat po stisku XF86AudioMute,... Např. v KDE je to poměrně pracné, jednodušší je použít specializovaný program LinEAK, který přímo reaguje na keykódy a spouští patřičné programy, takže se celá konfigurace redukuje na jeden konfigurační soubor. Samozřejmě, že v budoucnu by měly být standardní multimediální klávesy podporovány přímo desktopovým prostředím podobně, jako je to v MS Windows.

Více info o multimediálních klávesách na: Gentoo Wiki. Jo a u notebooků to obvykle funguje jinak - tam jsou speciální klávesy a Fn zkratky obsluhovány přes ACPI, takže po stisku se vyvolá ACPI událost Button a obslouží ji acpid. Pro obsluhování uživatelských kláves se dá s výhodou použít asus_acpid, který si může spustít uživatel, on se přes UNIX socket spojí s acpid, převezme události a obslouží je. Takže třeba změna hlasitosti se dá řešit globálně přes acpid, zatímco spuštění www prohlížeče přes asus_acpid.


[ zobrazit záznam ] ( 1072 zobrazení ) trvalý odkaz související odkaz ( 3 / 12417 )

<<První <Zpět | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | Další> Poslední>>