Autómatikus csatolás: subfs, hald stb?

Fórumok

Autómatikus csatolás: subfs, hald stb?

Hozzászólások

[quote:a0fbd378ba="activer79"]"Vajon az UHU-ban hogyan oldották meg???"

Hat ez e kerdes engem is nagyon foglalkoztat, nagyon tetszik, ahogy megcsinaltak!
Csak most akadt vele egy kis bokkeno: UHU 1.1-et hasznalom 2.6.6 kernellel es supermount patch-el, azzal nincs is gond, mert a cdmeghajtot tudom hasznalni ugyanugy, mint eredeti kernellel. Viszont a sd es hd eszkozok valamiert ugy csatolodnak, hogy azokhoz csak root jogokkal lehet hozzaferni. Sajnos ez a kis bibi teljesen hasznalhatatlanna teszi az UHU-automountot, mert ha felmasolok valamit pl. egy pendrive-rol, azokhoz a fileokhoz a gepen is csak root jogokkal ferek hozza. Ezert atmenetileg ki is kapcsoltam az uhu-automount-ot.

Szerintem a devfs-nek koze van hozza, meg ezek a file-ok, scriptek vegzik es allitjak be a csatolasokat:

/etc/devfsd.d/uhu-automount
/etc/devfsd.conf
/etc/rc.boot/30-uhu-automount
/sbin/mountit
/sbin/makemountsyms

Nem tudom lehet e valami jelentosege annak, hogy az altalam forditott kernelben egy modul sincsen, az UHU "gyari" kernele pedig modularis?

Ha valaki tudja, hogy lehetne a jogosultsagokat az uhu-automount-nal befolyasolni, legyszi ne tartsa vissza!
Koszi!

Egy otlet, ami lehet, hogy hulyeseg: az Ubuntura nem lehetne valahogy felrakni az uhu-automount csomagot?

Annó nekem is megvolt ez a hiba UHU alatt, a megoldás, hogy vmelyik csatoló script-be az opciókhoz hozzá kell adni az umask=000 paramétert a vfat-os csatolásokhoz!

[quote:73cefa7fdd="PcZolee"]
activer79: Úgy emléxem a /sbim/mountit scriptben kell beírni a megfelelő fs-hs (vfat) paraméterként (opcióként)

Koszi! En is erre, jutottam. Atneztem az automount scripteket, es csak a /sbin/mountit-ben talaltam olyan sorokat (harmat), amik mount opciokat allitanak be, de sajnos hiaba irtam be az umask=000 parametert, nem jo most sem. Felhasznalokent belepni sem tudok az automount altal a /mnt alatt letrehozott konyvtarakba. :(
Persze, lehet, hogy valamit elrontottam. Probaltam a user es users opciokat is, meg ezeket az umask-kal egyutt, de hatastalan. Beszurom a mountit scriptet, hatha tudsz segiteni, ha vetsz ra egy pillantast! Szoval en igy modositottam ket helyen, kommentben a sorok vegen megjeloltem, hogy konnyebb legyen megtalalni:

[code:1:73cefa7fdd]
#!/bin/bash

[ -f /etc/sysconfig/automount ] || exit 0

if [ "$#" != "1" ]; then
echo "usage: mountit <device>" >&2
exit 1
fi

logfile=/dev/null
exec 1>>"$logfile"
exec 2>>"$logfile"

device="$1"

#

function _is_removeable() {
echo "_is_removeable [$1]"
local device="$1"
case "${device#/dev/}" in
floppy/*|cdroms/*)
return 0
;;
esac
for host in /proc/scsi/{usb-storage-,sbp2_}*/*; do
case "$(readlink -f "$device")" in
"/dev/scsi/host${host##*/}"/*)
return 0
;;
esac
done
return 1
}

function _getmodel() {
model="$(getmodel "$1")"
if [ -n "$model" ]; then
printf "%s" "$model"
else
realdev="$(readlink -f -- "$1")"
case "$realdev" in
/dev/scsi/*)
host="${realdev#*/host}"
host="${host%%/*}"
bus="${realdev#*/bus}"
bus="${bus%%/*}"
target="${realdev#*/target}"
target="${target%%/*}"
lun="${realdev#*/lun}"
lun="${lun%%/*}"
grep -x "$(printf "Host: scsi%s Channel: %02d Id: %02d Lun: %02d" "$host" "$bus" "$target" "$lun")" -A 1 /proc/scsi/scsi | tail +2 | head -1 | cut -b 11-18,26-43
;;
esac
fi
}

function _mount() {
echo "_mount [$1] [$2]"
local device="$1"
local mntpnt="/mnt/$2"
if ! is_mounted "$device"; then
if _is_removeable "$device"; then
case "$device" in
/dev/floppy/*|/dev/fd*)
mntargs=(-t supermount -o dev="$device",fs=minix:ext2:vfat,--,sync,users,umask=000,noatime,nosuid,nodev) #modositott sor
;;
/dev/cdrom*|/dev/cdroms/*)
sysctl -q -w dev.cdrom.autoclose=0
mntargs=(-t supermount -o dev="$device",fs=iso9660:udf:hfsplus:cdfs,--,sync,noatime,nosuid,nodev)
;;
*)
mntargs=(-t supermount -o dev="$device",fs=auto,--,sync,users,umask=000,noatime,nosuid,nodev) #modositott sor
;;
esac
else
mntargs=()
fi
touch /var/lib/uhu-automount/"$2" && mkdir -p "$mntpnt" || return 1
if ! mount "${mntargs[@]}" "$device" "$mntpnt"; then
rm -f /var/lib/uhu-automount/"$2" && rmdir --ignore-fail-on-non-empty "$mntpnt"
return 1
fi
makemountsyms "$device" "$mntpnt" "/mnt/.dev"
fi
}

#

# shell setup
shopt -s extglob
shopt -s nullglob

# mandatory sync :)
sync

# re-read partition table if this is a disk
case "${device#/dev/}" in
discs/*)
blockdev --flushbufs "$device/disc"
# sfdisk -R "$device/disc"
;;
esac

# get name is possible
case "${device#/dev/}" in
discs/*)
name="$(_getmodel "$device/disc")"
;;
cdroms/*)
name="$(_getmodel "$device")"
;;
*)
name=""
;;
esac

# sanitize name
name="${name//Generic/}"
name="${name//GENERIC/}"
name="${name//+( )/_}"
name="${name//+(_)/_}"
name="${name//+(\/)/}"
name="${name#_}"
name="${name%_}"

# find out the id
id="${device##*/}"
case "${device#/dev/}" in
discs/*)
id="${id/disc/disk}"
;;
floppy/*)
id="floppy$id"
;;
esac

# put it together
if [ -n "$name" ]; then
mntpnt="$id-$name"
else
mntpnt="$id"
fi

# mount 'em all
case "${device#/dev/}" in
discs/*)
partlist=("$device"/part*)
if [ "${#partlist[@]}" == "0" ]; then
_mount "$device/disc" "$mntpnt"
else
for part in "${partlist[@]}"; do
_mount "$part" "$mntpnt-${part##*/}"
done
fi
;;
*)
_mount "$device" "$mntpnt"
;;
esac
[/code:1:73cefa7fdd]

Koszi!
Lattam, masik forumon, hogy teged is foglalkoztat mar egy ideje ez a kerdes.
Oszinten szolva eddig fel sem tunt nekem, hogy csak a vfat filerendszeru particiokat csatolja root jogokkal, de ha jobban belegondolok, tenyleg igy van.
Megprobalom megkeresni, hova kell az umask, illetve kiprobalom mi tortenik, ha mas filerendszerre, pl. ext2-re formazom a CF kartyam.

[quote:418016f0c6="PcZolee"]Nézegettem több ezzel foglalkozó projektet is ilyen a dynausb (ez nem ment vmiért, nem csinált semmit), a másik az mntd (http://mntd.bambach.biz/) ez jónak tünik, csak nem fordul le vmiért! Egyenlőre Ubuntu alá kéne feltenni, ez a hibaüzi:

[code:1:418016f0c6]# make
make all-recursive
make[1]: Entering directory `/tmp/mntd-0.5.0'
Making all in libmnt
make[2]: Entering directory `/tmp/mntd-0.5.0/libmnt'
if /bin/sh ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -DPACKAGE_DATA_DIR=\""/usr/share"\" -DPACKAGE_LOCALE_DIR=\""/usr//locale"\" -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/dbus-1.0 -I/usr/lib/dbus-1.0/include -g -O2 -Wall -Wchar-subscripts -Wmissing-declarations -Wnested-externs -Wpointer-arith -Wcast-align -Wsign-compare -Wimplicit -Wunused -Wmissing-prototypes -MT libmnt.lo -MD -MP -MF ".deps/libmnt.Tpo" -c -o libmnt.lo libmnt.c; \
then mv -f ".deps/libmnt.Tpo" ".deps/libmnt.Plo"; else rm -f ".deps/libmnt.Tpo"; exit 1; fi
gcc -DHAVE_CONFIG_H -I. -I. -I.. -DPACKAGE_DATA_DIR=\"/usr/share\" -DPACKAGE_LOCALE_DIR=\"/usr//locale\" -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/dbus-1.0 -I/usr/lib/dbus-1.0/include -g -O2 -Wall -Wchar-subscripts -Wmissing-declarations -Wnested-externs -Wpointer-arith -Wcast-align -Wsign-compare -Wimplicit -Wunused -Wmissing-prototypes -MT libmnt.lo -MD -MP -MF .deps/libmnt.Tpo -c libmnt.c -fPIC -DPIC -o .libs/libmnt.o
libmnt.c: In function `filter_func':
libmnt.c:71: error: `DBUS_INTERFACE_ORG_FREEDESKTOP_LOCAL' undeclared (first use in this function)
libmnt.c:71: error: (Each undeclared identifier is reported only once
libmnt.c:71: error: for each function it appears in.)
libmnt.c:77: error: `DBUS_PATH_ORG_FREEDESKTOP_LOCAL' undeclared (first use in this function)
libmnt.c: In function `mnt_init':
libmnt.c:195: warning: implicit declaration of function `dbus_bus_service_exists'
libmnt.c:195: warning: nested extern declaration of `dbus_bus_service_exists'
libmnt.c:201: warning: implicit declaration of function `dbus_bus_acquire_service'
libmnt.c:201: warning: nested extern declaration of `dbus_bus_acquire_service'
libmnt.c: In function `mnt_get_all_volumes':
libmnt.c:303: warning: implicit declaration of function `dbus_message_iter_get_string_array'
libmnt.c:303: warning: nested extern declaration of `dbus_message_iter_get_string_array'
libmnt.c: In function `mnt_get_mntpnt':
libmnt.c:360: warning: implicit declaration of function `dbus_message_iter_append_string'
libmnt.c:360: warning: nested extern declaration of `dbus_message_iter_append_string'
libmnt.c: In function `_mnt_remount':
libmnt.c:419: warning: nested extern declaration of `dbus_message_iter_append_string'
libmnt.c:420: warning: implicit declaration of function `dbus_message_iter_append_int32'
libmnt.c:420: warning: nested extern declaration of `dbus_message_iter_append_int32'
make[2]: *** [libmnt.lo] Error 1
make[2]: Leaving directory `/tmp/mntd-0.5.0/libmnt'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/tmp/mntd-0.5.0'
make: *** [all] Error 2
[/code:1:418016f0c6]

Próbáltad valamelyik régebbi gcc-vel? Nálam gyakran van, hogy egyikkel fordul, de másikkal nem.

Sziasztok!

Egy jó idelye a fent említett dologra subfs-t használok, nincs is vele semmi gond, csak annyi, hogy ahhoz hogy csatolni tudjon, meg kell legyen az adott könyvtár, ahova csatol, ezzel a a gondom, hogy ha pl több usb-s eszközt, vagy egy eszköznek több partícióját is szeretném csatolni, akkor mindegyiknek létre kell hoznom egy bejegyzést külön az fstab-ban (pl. ha van egy sda pendrive-om, ami tartalmaz mondjuk 5 partíciót, akkor ennek az 5 partíciónak létre kell hoznom külön a csatolási bejegyzéseket, ez akkor gond, ha rádugok egy másikat, aminek niccs csak 1 partíciója, mert akkor is ott van mind az 5 könyvtár, ami azért hoztam létre, hogy a másikat csatolhassam, arról nem is beszélve, hogy ha több partíciója van, mint ahány bejegyzés, akkor b*szhatom, mert csatolhatom kézzel)!
Olyan szeretnék csinálni, mint amit a gnome csinál, hogy egy könyvtárban kétrehozza az eszköz nevét és oda csatolja, aztán ha kiveszem törli, gondolom ezt hal -al csinálja, de hogyan? Met az a gond, hogy a gnome-ot nem szeretem xfce4 rulz!
Gondolom csak meg lehet vhogy oldani gnome nélkül, mert az UHU-ban megcsinálták, olyan megoldás kéne nekem is!

Szal, összefoglalva amit szeretnék:
Ha bedugok egy USB-s flashdrive-ot, akkor a /media alatt hozza létre az usb-1 könyvtárat, és csatolja be oda a drive-ot, ha több partíciója van, akkor az usb-2 -t ... Aztán ha kihúzom törölje!
Ez megoldható vhogy?

Gentoo, és Ubuntu az alanyok 2.6.12-es kernellel, udev-el!

Köszönöm a segítséget!

[quote:b644506534="PcZolee"]
Muti! És mesélj, pontosan te hogyan oldanád meg vele?

No akkor a script:

[code:1:b644506534]
#!/bin/sh
#
# ivman This script start ivman deamon
#
# description: This script start and stop the ivman deamon
# processname: ivman
# pid /var/run/ivman.pid
# config: /usr/local/etc/ivman/*

# Sanity checks.
[ -x /usr/local/bin/ivman ] || exit 0

RETVAL=0
PIDFILE=/var/run/ivman.pid
#PID=$(cat /var/run/ivman.pid)

function ivman_start() {
printf "Ivman daemon indítása: "
if test -f /var/run/ivman.pid
then
echo "Az ivman már fut! Kilépek."
exit
else
echo "OK"
exec ivman
fi
}

function ivman_stop() {
printf "Ivman daemon leállítása: "

kill -15 $(cat /var/run/ivman.pid)
RETVAL=$?
echo "OK"
if [ $RETVAL -eq 0 ]; then
rm -f /var/run/ivman.pid
fi
}

case "$1" in
start)
ivman_start
;;
stop)
ivman_stop
;;
restart|reload)
ivman_stop
sleep 1
ivman_start
;;
*)
printf "Használat: %s:\n" "$(basename $0) {start|stop|restart|reload}}"
exit 1
;;
esac

exit 0
[/code:1:b644506534]
Nekem - mivel forrásból raktam fel, az /usr/local/etc/ivman/ alatt vannak a konfigfileok, jól commentezett xml-ek, egyszerű a saját igényekhez "átszabni". Nekem "csak" mountol, de megoldható vele autorun-szerűen, hogy a megfelelő eszköz behelyezésekor elindítson valamilyen programot. Alapesetben kde-hez van felkonfigolva. Beállítható, hogy bizonyos eszközökkel ne foglalkozzon (nálam pl. a cd és a dvd rom autofs-el megy, ezekkel nem foglalkozik.)
Egy kicsit kellett vele játszanom, mert a legújabb lefordult ugyan, de segfaultolt, asszem a libhal régi lehetett neki.
Üdv!

Batyu'

Nézegettem több ezzel foglalkozó projektet is ilyen a dynausb (ez nem ment vmiért, nem csinált semmit), a másik az mntd (http://mntd.bambach.biz/) ez jónak tünik, csak nem fordul le vmiért! Egyenlőre Ubuntu alá kéne feltenni, ez a hibaüzi:

[code:1:c0277f6f40]# make
make all-recursive
make[1]: Entering directory `/tmp/mntd-0.5.0'
Making all in libmnt
make[2]: Entering directory `/tmp/mntd-0.5.0/libmnt'
if /bin/sh ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.. -DPACKAGE_DATA_DIR=\""/usr/share"\" -DPACKAGE_LOCALE_DIR=\""/usr//locale"\" -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/dbus-1.0 -I/usr/lib/dbus-1.0/include -g -O2 -Wall -Wchar-subscripts -Wmissing-declarations -Wnested-externs -Wpointer-arith -Wcast-align -Wsign-compare -Wimplicit -Wunused -Wmissing-prototypes -MT libmnt.lo -MD -MP -MF ".deps/libmnt.Tpo" -c -o libmnt.lo libmnt.c; \
then mv -f ".deps/libmnt.Tpo" ".deps/libmnt.Plo"; else rm -f ".deps/libmnt.Tpo"; exit 1; fi
gcc -DHAVE_CONFIG_H -I. -I. -I.. -DPACKAGE_DATA_DIR=\"/usr/share\" -DPACKAGE_LOCALE_DIR=\"/usr//locale\" -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/dbus-1.0 -I/usr/lib/dbus-1.0/include -g -O2 -Wall -Wchar-subscripts -Wmissing-declarations -Wnested-externs -Wpointer-arith -Wcast-align -Wsign-compare -Wimplicit -Wunused -Wmissing-prototypes -MT libmnt.lo -MD -MP -MF .deps/libmnt.Tpo -c libmnt.c -fPIC -DPIC -o .libs/libmnt.o
libmnt.c: In function `filter_func':
libmnt.c:71: error: `DBUS_INTERFACE_ORG_FREEDESKTOP_LOCAL' undeclared (first use in this function)
libmnt.c:71: error: (Each undeclared identifier is reported only once
libmnt.c:71: error: for each function it appears in.)
libmnt.c:77: error: `DBUS_PATH_ORG_FREEDESKTOP_LOCAL' undeclared (first use in this function)
libmnt.c: In function `mnt_init':
libmnt.c:195: warning: implicit declaration of function `dbus_bus_service_exists'
libmnt.c:195: warning: nested extern declaration of `dbus_bus_service_exists'
libmnt.c:201: warning: implicit declaration of function `dbus_bus_acquire_service'
libmnt.c:201: warning: nested extern declaration of `dbus_bus_acquire_service'
libmnt.c: In function `mnt_get_all_volumes':
libmnt.c:303: warning: implicit declaration of function `dbus_message_iter_get_string_array'
libmnt.c:303: warning: nested extern declaration of `dbus_message_iter_get_string_array'
libmnt.c: In function `mnt_get_mntpnt':
libmnt.c:360: warning: implicit declaration of function `dbus_message_iter_append_string'
libmnt.c:360: warning: nested extern declaration of `dbus_message_iter_append_string'
libmnt.c: In function `_mnt_remount':
libmnt.c:419: warning: nested extern declaration of `dbus_message_iter_append_string'
libmnt.c:420: warning: implicit declaration of function `dbus_message_iter_append_int32'
libmnt.c:420: warning: nested extern declaration of `dbus_message_iter_append_int32'
make[2]: *** [libmnt.lo] Error 1
make[2]: Leaving directory `/tmp/mntd-0.5.0/libmnt'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/tmp/mntd-0.5.0'
make: *** [all] Error 2
[/code:1:c0277f6f40]

Csak egy kérdés. Mindent az ott leírtak szerint csináltál (howto install szekció)?

Néha a legapróbb hibát nehéz észrevenni :)

nem neztem meg mik a fuggosegei az altalad forditani probalt programnak, de nem hagytad ki pl. a dbus-dev-et pl (libdbus-1-dev)?

[quote:f3979583c2="frank"]nem neztem meg mik a fuggosegei az altalad forditani probalt programnak, de nem hagytad ki pl. a dbus-dev-et pl (libdbus-1-dev)?

Ha a ./configure lement akkor nincs gond a függőséggel, vagy tévednék ?

[quote:f59bbe23d0="unranked"][quote:f59bbe23d0="frank"]nem neztem meg mik a fuggosegei az altalad forditani probalt programnak, de nem hagytad ki pl. a dbus-dev-et pl (libdbus-1-dev)?

Ha a ./configure lement akkor nincs gond a függőséggel, vagy tévednék ?

Nállad a pont! Szal más a hiba, de mi???? Vajon az UHU-ban hogyan oldották meg???

Hi!

Ivman nem jó erre? Ablakkezelő független, ubuntu alatt használom. Nincs init-scriptje, de gyártottam egyet, ha érdekel valakit, felküldöm ide.
Üdv!

Batyu'

[quote:8e462b3f60="batyu"]Hi!

Ivman nem jó erre? Ablakkezelő független, ubuntu alatt használom. Nincs init-scriptje, de gyártottam egyet, ha érdekel valakit, felküldöm ide.
Üdv!

Batyu'

Muti! És mesélj, pontosan te hogyan oldanád meg vele?

Kezd tetszeni, csak nem írnak róla semmit az oldalán! Hogyan tudom beállítani?

"Vajon az UHU-ban hogyan oldották meg???"

Hat ez e kerdes engem is nagyon foglalkoztat, nagyon tetszik, ahogy megcsinaltak!
Csak most akadt vele egy kis bokkeno: UHU 1.1-et hasznalom 2.6.6 kernellel es supermount patch-el, azzal nincs is gond, mert a cdmeghajtot tudom hasznalni ugyanugy, mint eredeti kernellel. Viszont a sd es hd eszkozok valamiert ugy csatolodnak, hogy azokhoz csak root jogokkal lehet hozzaferni. Sajnos ez a kis bibi teljesen hasznalhatatlanna teszi az UHU-automountot, mert ha felmasolok valamit pl. egy pendrive-rol, azokhoz a fileokhoz a gepen is csak root jogokkal ferek hozza. Ezert atmenetileg ki is kapcsoltam az uhu-automount-ot.

Szerintem a devfs-nek koze van hozza, meg ezek a file-ok, scriptek vegzik es allitjak be a csatolasokat:

/etc/devfsd.d/uhu-automount
/etc/devfsd.conf
/etc/rc.boot/30-uhu-automount
/sbin/mountit
/sbin/makemountsyms

Nem tudom lehet e valami jelentosege annak, hogy az altalam forditott kernelben egy modul sincsen, az UHU "gyari" kernele pedig modularis?

Ha valaki tudja, hogy lehetne a jogosultsagokat az uhu-automount-nal befolyasolni, legyszi ne tartsa vissza!
Koszi!

Egy otlet, ami lehet, hogy hulyeseg: az Ubuntura nem lehetne valahogy felrakni az uhu-automount csomagot?

Batyu: Köszi, átnyálazom!
activer79: Úgy emléxem a /sbim/mountit scriptben kell beírni a megfelelő fs-hs (vfat) paraméterként (opcióként)

[quote:b9135e821b="batyu"]
Nekem - mivel forrásból raktam fel, az /usr/local/etc/ivman/ alatt vannak a konfigfileok, jól commentezett xml-ek, egyszerű a saját igényekhez "átszabni". Nekem "csak" mountol, de megoldható vele autorun-szerűen, hogy a megfelelő eszköz behelyezésekor elindítson valamilyen programot. Alapesetben kde-hez van felkonfigolva. Beállítható, hogy bizonyos eszközökkel ne foglalkozzon (nálam pl. a cd és a dvd rom autofs-el megy, ezekkel nem foglalkozik.)
Egy kicsit kellett vele játszanom, mert a legújabb lefordult ugyan, de segfaultolt, asszem a libhal régi lehetett neki.
Üdv!

Batyu'

Felraktam én is forrásból, de nem indul el, et írja ki:
[code:1:b9135e821b]
....
....
manager.c:1383 (main) ivman 0.6.8, http:/ivman.sourceforge.net
manager.c:1388 (main) Compiled against HAL 0.5.x or later
manager.c:1392 (main) Running in system mode.
daemonize.c:164 (dropPrivileges) User 'ivman' does not appear to exist!
manager.c:1413 (main) Couldn't drop privileges, exiting!
[/code:1:b9135e821b]

Mi lehet a gond?

Más, nekem a gnome-volume-manager is megfelelne, de azt hogyan indíthatom el a gép indulásakor autómatikusa? Mert ha háttérbe rakom nem fut!