Prostá věc - montování vfat v Gnome
Mám flashku z foťáku a na ní fotky. Foťák ty fotky ukládá s velkými písmeny, tj. IMG1234.JPG. Jenže já nemám rád velká písmena v názvech souborů. Samo o sobě to není problém, protože vfat je možné namontovat s přepinačem shortname=lower. Jenomže součástí Gnome jsou programy, které se starají o automatické montování svazků a další akce nad nimi. Přinutit Gnome, aby automaticky montovalo všechny svazky s volbou shortname=lower není už tak jednoduché, jak by se na první pohled mohlo zdát.
Protože montování svazku je privilegovaná operace, nemůže to udělat uživatel sám, ale musí se o to postarat část, která může provádět privilegované operace. Tento systém je složený z několika částí propojených různými komunikačními kanály:
udev - stará se hlavně o přidělení názvu zařízení v /dev
udisks (původně HAL - hardware abstraction layer, jehož vývoj byl zastaven a byl nahrazen balíkem DeviceKit-disks, který byl později přejmenován na udisks),
DBus - komunikační sběrnice mezi různými procesy
gvfsd - Gnome montovací démon
další - PolicyKit řídící oprávnění k privilegovaným operacím
![]() |
V praxi to vypadá následovně:
uživatel zasune flashku do čtečky, případně usb klíčenku do USB slotu
linuxové jádro předá přes netlink socket informaci o přidání nového hardware procesu udev
udev zjistí, o jaký hardware se jedná a vyrobí mu odpovídající záznam v /dev
udev informuje proces udisks o přidání nového svazku
udisks zjistí o jaký svazek se jedná a přes systémovou sběrnici D-BUSu o přidání svazku informuje všechny aplikace, které si přejí tyto informace dostávat. V případě Gnome je to gvfsd
gvfsd zjistí, že existuje nový svazek s určitým souborovým systémem, podle svého nejlepšího vědomí pak dá příkaz k přimontování daného svazku na některé místo ve filesystému - opět prostřednictvím zprávy přes systémovou sběrnici D-BUSu
této zprávy se ujme udisksd a přimontuje svazek na odpovídající místo (tady vstupuje do hry ještě kontrola oprávnění, o kterou se stará PolicyKit)
Svého času se gvfs přes gconf zeptal s jakými montovacími volbami má filesystém přimontovat (přes /system/storage/default_options/vfat/mount_options nebo /system/storage/název_disku/mount_options...)
Vývojáři Gnome se ale jednoho dne rozhodli, že každý uživatel je počítačově negramotný a svazky se budou montovat tak, jak uznají oni za vhodné a nikdy jinak (alespoň pokud nad tím mají kontrolu) a vazbu mezi gvfs a gconfem zrušili.
Chápu, že se vývojáři snaží mít uživatelsky přítulný systém, ale zrušení vazby mezi gvfs a gconfem považuju za velmi špatný nápad. Uživatelské rozhraní má být přítulné k začátečníkovi a zvolí vhodné bezpečné hodnoty, ale také k odborníkovi, který ví, co dělá a nebrání mu v dělání věcí, které od systému chce.
Doufám, že jednoho dne se konfigurace pomocí gconf nebo jiného podobného nástroje do systému vrátí. Netěší mne, že vývojáři UI takovým způsobem mrzačí možnosti toho, co může pěkně fungovat.
Nakonec jsem to vyřešil tak, že jsem upravil defaultní montovací přepinač v balíku udisks, přeložil a nainstaloval lokálně tuto upravenou verzi a bylo to. Ale systémové řešení to tedy není.
Zajímavé příkazy pro ladění případných problémů:
udisks --monitor-detail udisks --unmount /dev/sda1 udisks --mount-options "shortname=lower" --mount /dev/sda1 /media/disk gvfs-mount -oi gvfs-mount -u /media/disk /usr/share/hal/fdi/policy/10osvendor/20-storage-methods.fdi dbus-monitor --monitor --system "interface='org.freedesktop.UDisks'"
Categories: ubuntu
