Fedorán - de más, manapság használatos desktop Linuxon is - van az úgy, hogy az ember USB host interface-re csatlakoztat egy pendrive-ot vagy HDD-t, a gép meg felcsatolja a block divece-on található filerendszereket, vagy beállítástól függően csak meghagyja a felcsatolás lehetőségét a /run/media/$USER
alkönyvtár alá.
Amire szükségem volna, hogy az egyes filerendszerekhez - gondolom, UUID és/vagy filerendszer típus alapján - be tudjam állítani a számomra jónak gondolt mount opciókat.
Google nem mondta meg, többnyire azt javasolták, írjam az fstab-ba, de jó volna, ha maradna ez a per user szintű automatikus kezelés, csak testreszabható mount opciókkal.
Egyébként azért kellene, mert megformáztam a backup célokra fenntartott 400 GB-os HDD-met - még partíciós táblát sem tettem rá, minek - btrfs-re, s egy compress=lzo
opcióval kellene felcsatolnom.
(Csalódás volt a btrfs: míg a live linuxomban használva ~50 %-ra tömörít, itt 104 GiB-ra tett fel 107 GiB anyagot. Persze tudom, attól függ, mi mennyire tömöríthető, de mivel mentés volt, ez is korábbi /home-ok tartalma többnyire. Gondoltam, az aktuális /home-omat btrfs-re migrálom, de ha ilyen kismértékű a tömörítés, akkor minek.)
- 7194 megtekintés
Hozzászólások
Az udisks forrása szerint vannak megengedhető mount opciók:
http://cgit.freedesktop.org/udisks/tree/src/udiskslinuxfilesystem.c?id=…
pl.:
static const gchar *vfat_allow[] = { "flush", "utf8=", "shortname=", "umask=", "dmask=", "fmask=", "codepage=", "iocharset=", "usefree", "showexec", NULL };
Ezeket az udisksctl mount ... -o opciónál el is fogadja, GUI-ban hogyan lehet megoldani, én szerintem ezt a lehetőséget kihagyták belőle (a KDE Device Notifieréből biztosan).
- A hozzászóláshoz be kell jelentkezni
Az egy dolog, hogy parancssorban esetleg megy, csak fogalmam sincs, hogyan generálódik az esemény, ki hívja, s mikor. Éppen ezért reménykedtem abban, hogy valahol van egy konfigurációs állomány, ahol rendelkezni lehet a mount opciókról. Ezek szerint ez ennyire be van drótozva? És ha igen, jó ez így? A Linuxokra nem ez jellemző általában.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Ez ennyire be van drótozva, a /run/media is a forráskódban van. De a mount opciók között ott vannak a kötelező és a _lehetséges_ opciók, szóval rendelkezhetsz róla, csak épp a GUI nem ad rá lehetőséget (parancssorból próbálgathatod, ott ami a listában van, szabadon használhatod).
- A hozzászóláshoz be kell jelentkezni
Nem általában van gondom a parancssorral. Itt az a probléma, hogy nem tudom, hogyan jön létre az esemény, amit a block eszköz csatlakozása triggerel. Tehát nem tudom, hol nyúlhatnék bele. Nem önmagában a parancssor a gond, mert akkor akár egy mount -o remount,...
paranccsal is élhetnék. Itt az a problémám, hogy kellene egy konfigurációs állomány, amelybe beleírom, milyen filerendszerhez, UUID-hoz milyen mount opciók tartozzanak, s amikor a device kábelét az USB csatlakozóba dugják, akkor egyből ennek megfelelően csatolódjon az eszköz.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Mi az, ami nem derül ki a "man udisks"-ből? Kb. úgy működik, hogy az udisksd figyeli az udev eseményeket, és dbus-on át nyújt egy interfacet különböző szolgáltatásokhoz, mint pl. a mountolás, vagy az új eszközök figyelése. A kliens progi meg (legyen az GUI vagy command line), dbus-on keresztül látja, hogy bedugtál egy pendriveot, majd szól az udiskd-nek, hogy na, mountolj, ezekkel az opciókkal. Csak épp a GUI kliensből hiányzik a lehetőség a saját opciókra. Ha neked kell egy konfig állomány, akkor lehet hekkelni a klienst(vagy akár az udisksd démont is, pl. ha fájrendszerenként elég neked custom opció, akkor a fent linkelt forrásfájlban elég egyszerűen cserélhetőek a hardcodeolt mount flagek).
- A hozzászóláshoz be kell jelentkezni
Még nem olvastam el az alább linkelt blogot, de meg fogom tenni, csak most dolgom van.
Az világos, hogy a daemon figyel. Az viszont már nem, hogy amikor esemény van, akkor a daemon valahogyan hívja a klienst, vagy a kliensnek csupán az a dolga, hogy aszinkron módon, bármikor beállítsa azon tulajdonságokat, amelyekkel a daemon esemény esetén cselekedni fog.
A leírásból az előbbire gondolok. Viszont nem látom a hívás helyét, így azt sem, hogyan tudok belenyúlni, hol tudom megváltoztatni a mount opciókat. Xfce-t használok, azon belül egy "Places" nevű panel plugin-t. Itt automatikusan megjelenik az új device, s van mount, valamint mount and open lehetőségem. A beállításokban viszont távolról sincsenek mount opciók. Azt reméltem, az udisks-nek van valahol konfigurációs állománya, amelyben elpanaszkodhatom neki a bajaimat.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
De mit értesz azon, hogy hívás helye? Indítsd el a dbus-monitort, és dugj be egy pendriveot, látni fogod...
Ez nem olyan, hogy az udiskd elindít egy szkriptet, ha akció van.
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
Ja, ez egy tök hasznos összefoglaló.
Az eredeti problémához még egy oldal:
http://davidz25.blogspot.hu/2012/03/simpler-faster-better.html
We've been trying all sorts of things over the years (the most complex being the now deprecated gnome-mount program reading mount options from e.g. GConf) and while some of these things have worked great in theory, they were just way too complex; our users just didn't have the time nor the inclination to figure out how to use our software... and I don't blame them... my experience is that if the effort more complex than editing a single text file with emacs(1) or vi(1) you've lost most people.
Szóval régebben a gnome-mount ezt tudta, igaz GConf-ból vett mount flagekkel, ami meg most van udisks frontendként a gnomeban (gnome-disks), az már csak az fstab-ban tud elhelyezni mount opciókat :)
- A hozzászóláshoz be kell jelentkezni
Elolvastam, s hasznos volt. Eddig nagy homály volt bennem ezen a téren, sokat tisztult most a kép. Ebből kiderült, hogy az udisks a block device-okkal kapcsolatos ügyködés terén illeszti az udevd-t a D-Bus-hoz, s így a desktop-hoz.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
"Csalódás volt a btrfs: míg a live linuxomban használva ~50 %-ra tömörít, itt 104 GiB-ra tett fel 107 GiB anyagot."
Nem lehet hogy nem compress opcióval hoztad létre a fájlokat? Csak akkor tömöríti az adatokat, ha eleve compress-szel felcsatolt fs-re másolod fel. Ha nem így volt, akkor érdemes lenne egy hasonlót futtatni:
su -c "find /mnt/backup -type f -print0 | xargs -0 btrfs fil defrag -v -c"
Szerk.: vagy ha sok lenne a fájlnév paraméter, akkor ciklusba tenni.
A btrfs man-ját érdemes átnézni.
Kieg.: Miért nem jó megoldás az fstab? Szerintem ez lenne a legtisztább. Támogatott mód hack nélkül és sok idő múlva is átlátható, nem kell doksit csinálni a hack-ről.
- A hozzászóláshoz be kell jelentkezni
Nem, jól csináltam. Manuálisan csatoltam a filerendszert compress=lzo opcióval, majd ezt követően másoltam fel a file-okat. Sokkal inkább arról lehet szó, hogy manapság már eleve tömörítettek a file-jaink, nem nagyon tömöríthetők tovább. Egy mp3, ogg vorbis hang, jpeg, png kép, h.264 video, odt dokumentum mind-mind tömörített file-ok. Néhány kilobyte-os konfigurációs text állományok tömörítésével meg nem lehet csodát tenni. A live-on azért voltam hatékonyabb, mert elsősorban konfig file-ok voltak, azt meg jól lehet tömöríteni.
Amit az fstab-ba írok, az meg fog jelenni a Thunar-ban, Places plugin-ben úgy, hogy felcsatolhatom egy egérkattintással? Illetve, ha kihúzom a csatlakozóból az eszközt, akkor eltűnik a GUI-ról?
Tehát azt szeretném, hogy a kényelmes automatizmusok működjenek, csak előre megadhassam egy file-ban a mount opciókat.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Beteheted nyugodtan az fstab-ba, akár UUID-ként bármilyen opcióval. Nálam Unity alatt úgy csatolja, ahogy megadom az fstabban. Semmi különbség nincs, csak ha van fstab bejegyzés, akkor az szerint csatolja.
- A hozzászóláshoz be kell jelentkezni
Most van időm épp, lehet, megnézem, mit tehetek a dolog érdekében. :)
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Az fstab-ban nem jó a bejegyzés, mert akkor GUI-ról nem lehet mount-olni. Udev rule kellene, nem is tűnik rettentő bonyolultnak, mégis ijesztő, hogy a disztribútor által szállított szabályok elég összetettek.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Nekem GUI alól mount-olja be automatikusan, mikor bedugom, pl. a pendrive-om. Betettem az fstab-ba vfat + /media/valami mount point + rw,noexec opciókkal, és így is kerül csatolásra a rendszer által.
Mi nem úgy működik nálad amit máshogy szeretnél? Feltételezném, hogy XFCE alatt is így kellene mennie.
- A hozzászóláshoz be kell jelentkezni
Fedorán az történik, hogy amit beírok az fstab-ba, az nem látszik többé GUI-ról, már úgy értve, nem kínálódik fel mount-olásra és lecsatolásra, valamint eject-re. Valahol logikus egyébként, mert az automatikus kezelés esetén a mount point a /run/media/$USER, az fstab-ba meg aligha írhatom, hogy éppen azon felhasználó nevével létrehozott alkönyvtárhoz csatoljon, aki a GUI-ról mount-ol. Ráadásul az illető alkönyvtárat létre is kell hozni előbb.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
A /media/valami még a régi udisks volt, azóta fejlesztettek rajta :)
Az újban egyébként meg kell adni, hogy x-gvfs-show az fstab mount opciói közt, és akkor elvileg látszik a GUI-n is. A mount pointot meg megcsinálja, csak célszerű nem a /run/media-t használni, hanem pl. az /mnt-t. Mindez nagyon szépen beállítható a gnome-disksben, ha nincs kedve az embernek vi-ozni. Kipróbáltam, csináltam egy ilyet az /etc/fstab-ba (illetve a gnome-disks csinálta):
/dev/disk/by-id/usb-UFD_3.0_Silicon-Power8G_121001240540000034-0:0-part1 /mnt/usb-UFD_3.0_Silicon-Power8G_121001240540000034-0:0-part1 auto nosuid,nodev,nofail,noauto,x-gvfs-show 0 0
Ez egy 8 gigás pendrive, user tudja mountolni, a megadott helyre, a megadott mount opciókkal, mindezt GUI-ból. Szóval van remény!
- A hozzászóláshoz be kell jelentkezni
Na, akkor megint próbálkozom! Én maradok az UUID-del történő azonosításnál, abból baj nem lehet.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Köszönöm, az x-gvfs-show
opció volt a megoldás az fstab-ban.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Aztán könnyen lehet, hogy fél év múlva ez már nem fog működni, de addig is használd egészséggel :)
- A hozzászóláshoz be kell jelentkezni
Ááááá, neeeeeee....!! Amúgy értem, mire gondolsz. :(
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Itt megint látni az elválását a fapados és full blown asztali környezetnek.
Úgy látszik ez nálam régi beidegződés volt, hogy fstab-ba nyúltam disks helyett.
- A hozzászóláshoz be kell jelentkezni
Nem lehet hogy nem compress opcióval hoztad létre a fájlokat?
Kizárt, hiszen 104 GiB-ra fért fel 107 GiB. Az eltérés nem adódik abból, hogy keverem a GB-ot a GiB-tal, erre természetesen figyeltem. Mind a du, mind a df parancsot futtattam -h és ellenpróbaként --si kapcsolóval is.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Amennyire én tudom az udisks csak a disk kezelésért felel, míg az összes device esemény az udev hatókörébe tartozik.
Szóval én valami udev szabályokkal próbálkoznék.
===============================================================================
// Hocus Pocus, grab the focus
winSetFocus(...)
http://c2.com/cgi/wiki?FunnyThingsSeenInSourceCodeAndDocumentation
- A hozzászóláshoz be kell jelentkezni
+1
- A hozzászóláshoz be kell jelentkezni