hal - pmount - ivman... kłopotów ciąg dalszy [dłuuuugie]

Kamil kamil.listy w klecza.pl
Nie, 3 Wrz 2006, 19:04:00 CEST


Witam.

Ja już nie mam z tym siły. Próbowałem już chyba wszystkiego ale nie umiem 
dojść do ładu z tym.

Co chcę osiągnąć.

1. Włożona do napędu płyta powinna zostać automatycznie zamontowana (w sumie 
mogę już z tego zrezygnować byleby kolejne punkty zadziałały)
2. Po zamontowaniu cdrom'u, usbdisk, czy aparatu (nie ważne czy mount, pmount 
i czy przez automounter'a) wszyscy użytkownicy mają dostęp do tego 
urządzenia. Zarówno mogą odmontować jak mają pełne rw.
3. Fajnie jeśli jeszcze będzie działać auto odmontowywanie przez przycisk 
eject

I )
Na początek standardowe AC:
pmount-0.9.11-2
hal-0.5.7.1-1

1. Znalazłem tylko autofs ale go nie testowałem (może powinienem?). Wszyscy 
mówią o ivman'ie itp. ale jego nie ma w ac więc tu sobie odpuszcze.
2. 
a) Klikam sobie w kde ikonkę urządzenia no i faktycznie montuje ładnie. 
Niestety przechodzę na drugiego użytkownika i poza odczytem nie mam żadnych 
uprawnień jeśli chodzi o ten zasób. Inni użytkownicy nie mają prawa zapisu. 
Inni użytkownicy nie mogą odmontować tego zasobu. Dodam jeszcze, że 
próbowałem dodać własną regułkę do hal'a która by pozwoliła chociaż 
odmontowywać . Utworzyłem plik /etc/hal/fdi/policy/10-storage-policy.fdi o 
takiej zawartości:

<?xml version="1.0" encoding="UTF-8"?> <!-- -*- SGML -*- -->
<deviceinfo version="0.2">
  <!-- Default policies merged onto computer root object  -->
  <device>
    <match key="info.udi" string="/org/freedesktop/Hal/devices/computer">
      <merge key="storage.policy.default.mount_option.users" 
type="bool">true</merge>
    </match>
  </device>
</deviceinfo>

Niestety pmount nic sobie z tego nie robi. Jak można wyczytać w man'ie:
"The device will be mounted with the following flags: 
async,atime,nodev,noexec,noauto,nosuid,user,rw"

Co do zapisu to zauważyłem, że tworzone katalogi przez pmount'a należą do 
użytkownika który zamontował urządzenie. Grupą natomiast to root.
"-r-xr-xr-x  1 kamil root". Niestety nie wiem co za to odpowiada i jak to 
zmusić aby katalogi były tworzone na zasadzie ugo+rw i np. root:disk

PYTANIE 1: Co zrobić aby inni mieli prawo do zapisu?
PYTANIE 2: Co zrobić aby inni mogli odmontować zasób?

b) Mam środowisko 64bit'owe z chrootem 32bitowym. Aby całość jakoś scalić 
stworzyłem sobie simlink z /var/chroot/i686/media do /media. Niestety o ile 
pmount zamountuje ten zasób o tyle odmontowanie już nie działa:
"Błąd: punkt montowania /var/chroot/i686/media/disk nie jest poniżej /media/"

Próbowałem dodać w hal kolejną regułkę a mianowicie:
<merge key="storage.policy.default.mount_root" 
type="string">/var/chroot/i686/media</merge>
ale niestety i to nie działa. Dalej montuje w /media. Ustawiłem np. też 
testowo /media2 i utworzyłem taki katalog ale niestety nic się tam nie 
zamontowało. Dalej wszystko się montowało w /media.

PYTANIE 1: Czy to bug pmount'a, że wyrzuca taki dziwny błąd w wypadku 
gdy /media to simlink?
PYTANIE 2: Gdzie/jak mogę zmienić w tej wersji hal'a domyślny katalog /media 
na inny? A może to bug po stronie pmount'a, że nie respektuje ustawień hal'a?

II) Teraz lekka modyfikacja. Zbudowałem i doinstalowałem ivman'a. Powiedzmy, 
że /media to normalny katalog czyli tak jak ma większość. Ivman to fajna 
sprawa na automontowanie. Niestety i on ma ogromne wady.
a) Wkładam płytkę/usbdisk. Płytka/usbdisk zostaje wykryta. Chwilkę póżniej 
automatycznie zamontowana. Fajna sprawa bowiem automatycznie mam dostęp do 
danych jak i z kde tak i z konsoli. Niestety ivman montuje przy użyciu 
wspomnianego pmounta który tworząc katalog tworzy go dla użytkownika który 
zamontował zasób. Nie trudno się domyśleć co się dzieje. Użytkownicy mają 
tylko ro do zasobu i nie mogą go odmontować.
b) Nie rozumiem czemu ktoś wrzucił do ivman'a linijkę:
`echo 0 > /proc/sys/dev/cdrom/lock` która powoduje odblokowanie tacki cdrom'u. 
Psuje to funkcjonalność wbudowaną w najnowsze kde. Najnowsze kde potrafi 
przechwycić naciśnięcie przycisku eject i wywołanie zdarzenia odmontowania 
płytki. Ivman niestety to psuje. Poradziłem sobie z tym wycinając ze źródła 
tą nieszczęsną linijke i przebudowując pakiet. Teraz działa super.
c) Próbowałem zmusić ivman'a do przechwycenia sygnału naciśnięcia przycisku 
eject w cdromie, tak jak to robi kde, zmieniając jego ustawienia. Niestety 
bez skutecznie. Niby wszystko jest jak trzeba i powinno działać ale niestety 
nie działa. Coś ivman nie chce mi zareagować na to zdarzenie.

PYTANIE 1: Być może jest inna, "normalna", droga na wyłączenie w ivman'ie 
opcji odblokowywania tacki. Ktoś wie jak?
PYTANIE 2: Komuś się udało zmusić ivman'a do reakcji na zdarzenie naciśnięcia 
przycisku w cdrom'ie?

III) 
downgrade do hal-0.5.5.1-4
poldek -e pmount (hal udostępnia fstab-sync)
1. Zauważyłem, że działają reguły dodane przeze mnie do 
/etc/hal/fdi/policy/10-storage-policy.fdi.
a) Mogę zmienić media_root na inny ale teraz mi tego juz nie potrzeba. 
fstab-sync nie przeszkadza, że /media to simlink.
b) fstab-sync dodaje opcje mountowania users. Każdy użytkownik może zamontować 
i odmontować urządzenie. Przypuszczam, ze to dlatego, że nie ma pmount'a 
który miał swoje własne regułki montowania
2. Niestety dalej nie działa +rw dla wszystkich użytkowników. fstab-sync 
tworzy katalog który należy do użytkownika który zamontował zasób. Narazie 
się nie bawiłem w poszukiwania kto za to teraz odpowiada.
3. Przestał działać ivman. Nie wiem dlaczego:/
4. fstab-sync wyleciał z hal'a. Jest to rozwiązanie przestarzałe. Nie wiem 
wiec czy jest sens bawić się w dokonfigurowywanie go skoro i tak kiedyś będę 
musiał upgrejdować do nowszego hal'a.

Wnioski jakie mi się nasunęły.
0. Zostaje przy hal 0.5.5 bo przynajmniej jak nie będę mógł zapisać danych na 
nośnik bo zamontował go inny użytkownik to sobie go odmontuje i zamontuje 
jako własny;)
1. Pmount psuje bardzo dużo.
a) narzuca swoje własne opcje montowania nie pozwalając wybrać własnych (np. 
users)
b) nie mogę ustawić kto ma być właścicielem zamontowanego zasobu i jakie mają 
być prawa do tego katalogu (chyba, że się mylę to wtedy baaaardzo proszę o 
poprawienie mnie). Choć może tu ma coś hal do gadania. Nie wiem. W każdym 
bądź razie nie jest możliwe przez to danie dostępu do zasobu wszystkim 
użytkownikom.
c) nie podobają mu się simlinki
2. Ivman psuje funkcjonalność kde reagowania na naciśnięcie eject w cdrom'ie. 
Rozwiązaniem jest wyrzucenie linijki odblokowującej tackę systemową
3. Ivman nie umie przejąć zdarzenia naciśnięcia przycisku eject w cdromie.
4. Ogólnie całe to automatyczne montowanie zasobów jest moim zdaniem w 
powijakach... wielka szkoda zwłaszcza, że niby wszystko jest. Ból w tym, że 
nie jest to poskładane do kupy jak trzeba. Ja narazie daje sobie z tym spokój 
i tak jak mówiłem zostje narazie przy hal 0.5.5

Dobra to tyle. Może komuś się przyda. Może ktoś podeśle mi jakieś wskazówki. 
Kto wie może komuś nawet to działa jak ja bym chciał aby działało:]
-- 
Pozdrawiam, Kamil




Więcej informacji o liście dyskusyjnej pld-users-pl