Listázzuk ki az elérhető objektumokat:
call: /org/freedesktop/UDisks org.freedesktop.UDisks.EnumerateDevices
array [
object path "/org/freedesktop/UDisks/devices/fd0"
object path "/org/freedesktop/UDisks/devices/sdb1"
object path "/org/freedesktop/UDisks/devices/sdb2"
object path "/org/freedesktop/UDisks/devices/sdb"
object path "/org/freedesktop/UDisks/devices/sr0"
object path "/org/freedesktop/UDisks/devices/sda"
object path "/org/freedesktop/UDisks/devices/sda1"
object path "/org/freedesktop/UDisks/devices/sda2"
object path "/org/freedesktop/UDisks/devices/sda3"
object path "/org/freedesktop/UDisks/devices/sda5"
object path "/org/freedesktop/UDisks/devices/sda6"
]
Ezek az objektumok az egyes linux device-okat reprezentálják.
Hogyan állapítsuk meg hogy ezek közül melyik eltávolítható?
call: /org/freedesktop/UDisks/devices/sr0 org.freedesktop.DBus.Properties.Get \
string:"org.freedesktop.UDisks.Device" string:"DeviceIsRemovable"
variant boolean true
Tehát az sr0 igen, mivel ez egy DVD meghajtó.
Nézzük meg, fel van-e mountolva:
call: /org/freedesktop/UDisks/devices/sr0 org.freedesktop.DBus.Properties.Get \
string:"org.freedesktop.UDisks.Device" string:"DeviceIsMounted"
variant boolean true
Igen.
Akkor unmount:
call: /org/freedesktop/UDisks/devices/sr0 org.freedesktop.UDisks.Device.FilesystemUnmount \
array:string:
Adjuk ki az eject parancsot a CD meghajtónak:
call: /org/freedesktop/UDisks/devices/sr0 org.freedesktop.UDisks.Device.DriveEject \
array:string:
Szépen kilökte a tálcát. De miért is foglalkozok én CD-vel?
Azért mert a Thunar úgy kezeli az USB drive-okat is, mintha ki lehetne nekik adni az eject parancsot. A menüben nincs is más, lehetőség csak az eject:
http://git.xfce.org/xfce/thunar/log/?qt=grep&q=eject
Miért baj ez? Ezért: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1082920
A biztonságos eltávolításhoz a következő lépéseket kell tennünk:
Tegyük fel hogy van egy USB drive-unk, aminek a neve sdb, és egy partíció van rajta sdb1 néven.
call: /org/freedesktop/UDisks/devices/sdb1 org.freedesktop.UDisks.Device.FilesystemUnmount \
array:string:
Ez idáig tiszta sor. Ezen a ponton már el is távolíthatnánk a pendrive-ot, de legyünk alaposak, nézzük mik a lehetőségeink:
call: /org/freedesktop/UDisks/devices/sdb org.freedesktop.DBus.Introspectable.Introspect
...
<method name="DriveDetach">
<arg name="options" type="as" direction="in"/>
</method>
<method name="DriveEject">
<arg name="options" type="as" direction="in"/>
</method>
...
Tippeljetek melyik lesz a nyerő! Hát nem a DriveEject az biztos!
call: /org/freedesktop/UDisks/devices/sdb org.freedesktop.UDisks.Device.DriveDetach \
array:string:
- taxy blogja
- A hozzászóláshoz be kell jelentkezni
- 1611 megtekintés
Hozzászólások
Igazság szerint ez portable HDD-nél hasznos, vagy inkább nagyon fontos lenne. Köszi a leírást.
--
AGA@
Fork portal és az egyik logóm :)
- A hozzászóláshoz be kell jelentkezni
Lehet nem hangsúlyoztam eléggé, de azért egy sima unmount-ot is odabiggyeszthettek volna. Amint a hibajelentésből látszik az eject hatására az eszköz nem reagál többé, de a rendszerben ott marad, instabilitást okoz.
Szívesen.
- A hozzászóláshoz be kell jelentkezni
Kösz. Szép dolog a DBus.
(Ja, én amúgy akkor lettem kicsit morcos, amikor a CD-t kezelő rétegből valamikor úgy egy-másfél éve eltávolították az umount funkciót, és csak az ejectet hagyták meg. Mert csak. Hogy aztán visszaszavazta-e a népharag, azt nem tudom.)
- A hozzászóláshoz be kell jelentkezni
Szerintem ugyan az lehet mögötte pendrive-oknál is. 10.04-en még szépen megy az unmount, 12.04-en már ez az eject-es borzadály van. Érdekes, hogy sikerült összehozni?!
A nép meg csak kattint az eject-re, aztán csodálkozik hogy adatvesztés/rendszerösszeomlás lesz egy sima unmount helyett.
- A hozzászóláshoz be kell jelentkezni