Fórum Ubuntu CZ/SK
Ubuntu pro osobní počítače => Obecná podpora => Téma založeno: karlitos 28 Února 2011, 17:10:53
-
Zdravim
Resim jak nejlepe udelat automount USB zarizeni a pametovych karet na Ubuntu Server nebo Ubuntu bez grafickeho prostredi. Nasel jsem sice toto k Ubuntu server Edition :
By default, disk drives do not automount in Ubuntu Server Edition. If you are looking for a lightweight solution that does not depend on HAL/DBUS, you can install "usbmount".
jenze to mi vytvorilo nekolik ruznych USB adresaru v /media
Hledam reseni ktere bude fungovat tak jako gnome-volume-manager, tedy v pripade ze jednotka ma label vytvori adresar s timto labelem v /media nebo vytvori adresar /disk-1 apod.
Nasel jsem uz i odkazy na jina reseni ivman/halevt ale ty zase zavisi na HAL. Nasel jsem i program udisks-automount ale ten zase potrebuje graficke prostredi.
Tak zatim nevim. Diky K
-
proc ti tolik vadi, ze usbmount pripojuje disky na /media/usbX?
jinak usbmount je "jen" shell skript, takze se da upravit
jinou moznosti je vytvorit v /media adresare podle sveho gusta, a pak je tak i nastavit v usbmount.conf do radku MOUNTPOINTS.
-
Vadi mi to protoze vetsinou dbam na to abych mel svoje diska a flashky olabelovane cimz se mi taky zjednodusuje prace kdyz na ne treba v terminalu chci pristoupit. Takhle abych hledal kam mi se mi to zarizeni pripojilo. Zkusim se ale jeste na to usbmount podivat.
-
jinou moznosti je vytvorit v /media adresare podle sveho gusta, a pak je tak i nastavit v usbmount.conf do radku MOUNTPOINTS.
No dival jsem se na ten usbmount.conf, ale tady se daji nastavit jen staticke adresare a ja je chci dynamicke. Bud podle labelu nebo aspons udanim velikosti - USB-disc-8GB tak, jako to zvlada Gnome-volume-manager.
A at hledam jak hledam stale nenachazim.
-
Koukam ze si sem pisu sam ... ale budiz ;D
Nasel jsem skripty pro udev ale z Wiki Archlinuxu (https://wiki.archlinux.org/index.php/Udev#Mount_under_.2Fmedia.3B_use_partition_label_if_present.3B_ntfs-3g)
Zkousim to na Debianu testing, nahodil jsem jeste ntfs-3g, po restartu strcil moji flashku, ta na me zamrkala a mam ji namountovanou v /media/Corsair_survivor
Takze radost prevelika, jenom nevim jestli je zcela zdravo pouzivat ty skripty pro Arch-Linux v Debianu. Muze to mit nejaky negativni dopad ? (padani vlasu, ztrata prvorozeneho syna ... )
-
Já mám pocit, že ta syntaxe pravidel pro udev je stejná (aspoň teda ten základ), takže pokud ti to funguje, tak bych to neřešil a mnul bych si ruce nad dobře vykonanou prací :-)
-
No jeste to budu muset trochu doladit. Ale vypada to ze bych se mohl v tech skriptech vyznat, rozhodne preferuji pripojeni do adresare treba podle vyrobce a nebo aspon podle velikosti.
A jeste vyresit uklid nepouzivanych adresare - treba nejakym cronjobem jednou denne ?
-
co myslis uklid - vzdyt v tom odkazu automaticke smazani adresare po odpojeni je
# clean up after device removal
ACTION=="remove", ENV{dir_name}!="", RUN+="/bin/umount -l '/media/%E{dir_name}'", RUN+="/bin/rmdir '/media/%E{dir_name}'"
nefunguje to?
-
Zdravim
Zase jsem se dostal k tomu tohle resit. Zjistil jsem ze ten kdyz udelam klasicky umount /dev/nazev_zarizeni tak mi to ten vytvoreny adresar nesmaze. Testoval jsem to s jednim diskem ktery nemel dany label, takze mi ho to priojilo do adresare oznaceneho jako usb_sdb1 nebo tak nejak a po umountu tam ten adresar je stale.
-
adresar se nesmaze ani po fyzickem vyjmuti usb z konektoru?
-
Takze poporade :
V /media mam jen vlastnorucne vytvorene slozky. Strcim USB flashku do zadniho USB portu -> simsalabim, flashka zamrka, terminal vyplodi par hlasek a mam novou slozku /media/Verbatim_US. Takze pekne natukam v terminalu umount /dev/sdd1 a adresar /media/Verbatim_US je stale pritomen. Vyndam flashku z USB portu -> a ohooo :o :o kouzlooo ;D
Tak moc dekuju to bych tedy necekal. Zkousel jsem ted vyrvat USBcko bez umountu a adresar taky zmizel. Olalala :)
Takze jediny mozny worst-case je : erver se vypne, nekdo vytahne zarizeni a pak ho zase nahodi, ale to nebude asi casty problem. Takze jeste dopatrat jak lepe zjistovat oznaceni zarizeni - treba kdyz chybi label pouzit "vyrobce - velikost" ale to zkusim nejak dat do kupy uz sam.
diky moc K+
-
Zdravim
Po nejake dobe jsem se dostal k tomu vylepsit ty mountovaci skripty. Rad bych aby se USB disky mountovaly jako vyrobce-nazev_vyrobku-label a kdyz neni label jako vyrobce-nazev_vyrobku-oddil_cislo...
Z tech mountovacich skriptu jsem pochopil ze jde o tyto radky :
# get the label if present, otherwise assign one based on device/partition
ENV{ID_FS_LABEL}!="", ENV{dir_name}="%E{ID_FS_LABEL}"
ENV{ID_FS_LABEL}=="", ENV{dir_name}="usbhd-%k"
Dal jsem si nechal vypsat co vsechno zjisti udev o me flashce :
looking at device '/devices/pci0000:00/0000:00:1d.7/usb1/1-4/1-4:1.0/host4/target4:0:0/4:0:0:0/block/sdd':
KERNEL=="sdd"
SUBSYSTEM=="block"
DRIVER==""
ATTR{range}=="16"
ATTR{ext_range}=="256"
ATTR{removable}=="1"
ATTR{ro}=="0"
ATTR{size}=="31309760"
ATTR{alignment_offset}=="0"
ATTR{discard_alignment}=="0"
ATTR{capability}=="51"
ATTR{stat}==" 56 192 549 52 0 0 0 0 0 52 52"
ATTR{inflight}==" 0 0"
ATTR{events}=="media_change"
ATTR{events_async}==""
ATTR{events_poll_msecs}=="-1"
looking at parent device '/devices/pci0000:00/0000:00:1d.7/usb1/1-4/1-4:1.0/host4/target4:0:0/4:0:0:0':
KERNELS=="4:0:0:0"
SUBSYSTEMS=="scsi"
DRIVERS=="sd"
ATTRS{device_blocked}=="0"
ATTRS{type}=="0"
ATTRS{scsi_level}=="3"
ATTRS{vendor}=="Kingston"
ATTRS{model}=="DataTraveler G2 "
ATTRS{rev}=="1.00"
ATTRS{state}=="running"
ATTRS{timeout}=="30"
ATTRS{iocounterbits}=="32"
ATTRS{iorequest_cnt}=="0x58"
ATTRS{iodone_cnt}=="0x58"
ATTRS{ioerr_cnt}=="0x2"
ATTRS{evt_media_change}=="0"
ATTRS{queue_depth}=="1"
ATTRS{queue_type}=="none"
ATTRS{max_sectors}=="240"
looking at parent device '/devices/pci0000:00/0000:00:1d.7/usb1/1-4/1-4:1.0/host4/target4:0:0':
KERNELS=="target4:0:0"
SUBSYSTEMS=="scsi"
DRIVERS==""
looking at parent device '/devices/pci0000:00/0000:00:1d.7/usb1/1-4/1-4:1.0/host4':
KERNELS=="host4"
SUBSYSTEMS=="scsi"
DRIVERS==""
looking at parent device '/devices/pci0000:00/0000:00:1d.7/usb1/1-4/1-4:1.0':
KERNELS=="1-4:1.0"
SUBSYSTEMS=="usb"
DRIVERS=="usb-storage"
ATTRS{bInterfaceNumber}=="00"
ATTRS{bAlternateSetting}==" 0"
ATTRS{bNumEndpoints}=="02"
ATTRS{bInterfaceClass}=="08"
ATTRS{bInterfaceSubClass}=="06"
ATTRS{bInterfaceProtocol}=="50"
ATTRS{supports_autosuspend}=="1"
looking at parent device '/devices/pci0000:00/0000:00:1d.7/usb1/1-4':
KERNELS=="1-4"
SUBSYSTEMS=="usb"
DRIVERS=="usb"
ATTRS{configuration}==""
ATTRS{bNumInterfaces}==" 1"
ATTRS{bConfigurationValue}=="1"
ATTRS{bmAttributes}=="80"
ATTRS{bMaxPower}=="100mA"
ATTRS{urbnum}=="270"
ATTRS{idVendor}=="0951"
ATTRS{idProduct}=="1624"
ATTRS{bcdDevice}=="0100"
ATTRS{bDeviceClass}=="00"
ATTRS{bDeviceSubClass}=="00"
ATTRS{bDeviceProtocol}=="00"
ATTRS{bNumConfigurations}=="1"
ATTRS{bMaxPacketSize0}=="64"
ATTRS{speed}=="480"
ATTRS{busnum}=="1"
ATTRS{devnum}=="3"
ATTRS{devpath}=="4"
ATTRS{version}==" 2.00"
ATTRS{maxchild}=="0"
ATTRS{quirks}=="0x0"
ATTRS{avoid_reset_quirk}=="0"
ATTRS{authorized}=="1"
ATTRS{manufacturer}=="Kingston"
ATTRS{product}=="DataTraveler G2"
ATTRS{serial}=="001372982F25F97126400A09"
looking at parent device '/devices/pci0000:00/0000:00:1d.7/usb1':
KERNELS=="usb1"
SUBSYSTEMS=="usb"
DRIVERS=="usb"
ATTRS{configuration}==""
ATTRS{bNumInterfaces}==" 1"
ATTRS{bConfigurationValue}=="1"
ATTRS{bmAttributes}=="e0"
ATTRS{bMaxPower}==" 0mA"
ATTRS{urbnum}=="55"
ATTRS{idVendor}=="1d6b"
ATTRS{idProduct}=="0002"
ATTRS{bcdDevice}=="0206"
ATTRS{bDeviceClass}=="09"
ATTRS{bDeviceSubClass}=="00"
ATTRS{bDeviceProtocol}=="00"
ATTRS{bNumConfigurations}=="1"
ATTRS{bMaxPacketSize0}=="64"
ATTRS{speed}=="480"
ATTRS{busnum}=="1"
ATTRS{devnum}=="1"
ATTRS{devpath}=="0"
ATTRS{version}==" 2.00"
ATTRS{maxchild}=="8"
ATTRS{quirks}=="0x0"
ATTRS{avoid_reset_quirk}=="0"
ATTRS{authorized}=="1"
ATTRS{manufacturer}=="Linux 2.6.39-2-686-pae ehci_hcd"
ATTRS{product}=="EHCI Host Controller"
ATTRS{serial}=="0000:00:1d.7"
ATTRS{authorized_default}=="1"
looking at parent device '/devices/pci0000:00/0000:00:1d.7':
KERNELS=="0000:00:1d.7"
SUBSYSTEMS=="pci"
DRIVERS=="ehci_hcd"
ATTRS{vendor}=="0x8086"
ATTRS{device}=="0x27cc"
ATTRS{subsystem_vendor}=="0x8086"
ATTRS{subsystem_device}=="0xd615"
ATTRS{class}=="0x0c0320"
ATTRS{irq}=="23"
ATTRS{local_cpus}=="ffffffff"
ATTRS{local_cpulist}=="0-31"
ATTRS{dma_mask_bits}=="32"
ATTRS{consistent_dma_mask_bits}=="32"
ATTRS{enable}=="1"
ATTRS{broken_parity_status}=="0"
ATTRS{msi_bus}==""
ATTRS{companion}==""
looking at parent device '/devices/pci0000:00':
KERNELS=="pci0000:00"
SUBSYSTEMS==""
DRIVERS==""
z cehoz nezajimavejsi informace jsou :
ATTRS{vendor}=="Kingston"
ATTRS{model}=="DataTraveler G2 "
...
ATTRS{manufacturer}=="Kingston"
ATTRS{product}=="DataTraveler G2"
Nejsem ale moc dobornik na syntaxi tech pravidel, ty zacatky tech radku jsou jasne : je-li label -> jmeno, neni-li -> jine jmeno Ale jak mam udelat to aby se mi hodnota ENV{dir_name}= udelele jako retezec : vyrobce-nazev_vyrobku-label a kdyz neni label jako vyrobce-nazev_vyrobku-oddil_cislo... Protoze treba ve tom vypisu toho co rozpozna udev zadnou hodnotu label nevidim ...
Kdyby nekdo umel napovedet budu moc rad, diky K
-
no tak ID_FS_LABEL v tom vypise neni, protoze LABEL ma jen oddil, ne cely disk (sdd)
musis se podivat na info k oddilu (sdd1?)
pekny popis tvoreni pravidel zde
http://reactivated.net/writing_udev_rules.html
i kdyz nektere prikazy jsou jiz zastarale (dnes se na "vse" pouziva udevadm)
-
Odkazovat na atributy můžeš konstrukcí %s{attr_name}, udev by měl probrat i atributy rodičů odpovídající podmínce.
-
Diky za tipy podiuvam se na to. Zatim ale valcim s problemem, ze pravidlo pro pripojovani USB mi nefunguje zcela dobre pro NTFS jednotky. Adresar se vytvori - a pri vytazeni i smaze - spravne, ale neprovede se mount. A ja hlavne nevim jak to poradne debugovat, zvysil jsem verbosity udev, ale ve /var/log/messages se nic nezobrazi. Tady je to pravidlo, vicemene presne to co je na te Arch-Wiki :
# start at sdb to ignore the system hard drive
KERNEL!="sd[b-z]*", GOTO="my_media_automount_end"
ACTION=="add", PROGRAM!="/sbin/blkid %N", GOTO="my_media_automount_end"
# import some useful filesystem info as variables
IMPORT{program}="/sbin/blkid -o udev -p %N"
# get the label if present, otherwise assign one based on device/partition
ENV{ID_FS_LABEL}!="", ENV{dir_name}="%E{ID_FS_LABEL}"
ENV{ID_FS_LABEL}=="", ENV{dir_name}="usbhd-%k"
# create the dir in /media and symlink it to /mnt
ACTION=="add", RUN+="/bin/mkdir -p '/media/%E{dir_name}'"
# global mount options
ACTION=="add", ENV{mount_options}="relatime"
# filesystem-specific mount options (777/666 dir/file perms for ntfs/vfat)
ACTION=="add", ENV{ID_FS_TYPE}=="vfat|ntfs", ENV{mount_options}="$env{mount_options},gid=100,dmask=000,fmask=111,utf8"
# automount ntfs filesystems using ntfs-3g driver
ACTION=="add", ENV{ID_FS_TYPE}=="ntfs", RUN+="/bin/mount -t ntfs-3g -o %E{mount_options} /dev/%k '/media/%E{dir_name}'"
# automount all other filesystems
ACTION=="add", ENV{ID_FS_TYPE}!="ntfs", RUN+="/bin/mount -t auto -o %E{mount_options} /dev/%k '/media/%E{dir_name}'"
# clean up after device removal
ACTION=="remove", ENV{dir_name}!="", RUN+="/bin/umount -l '/media/%E{dir_name}'", RUN+="/bin/rmdir '/media/%E{dir_name}'"
# exit
LABEL="my_media_automount_end"root@server-berlinet:/etc/udev/rules.d#
Vfat/ext filesystemy funguji jak po masle a krome pripojeni funguje vsechno ostatni takze nepredpokladam ze by mel byt problem jinde. Uz sem ten skript prohlizeol asi 50krat a nemuzu najit chybu. Rucne provedeny (u)mount funguje bez problemu myslim ze jsem zkousel i pouzit ten prikaz z toho skriptu - tedy doplnil podminky a dal ho do konzole a pripojeni probehlo bez problemu.
Zkusim tu radkou s tim mountem vykomentovat a odstranit vsechny ty podminky jestli to pomuze ale jinak uz nevim.
-
Zahada vyresena, z me neznameho duvodu chybel balik ntfs-3g, pak mi ale zustava skryto jak se mountoval ten ntfs oddil predtim, kdyz jsem to delal manualne - a mozna to radsi ani vedet nechci. Takze se ted muzu soustredit na vylepseni tech pravidel aby mi to v pripade neexistence labelu nepripojovalo zarizeni jen podle/dev/sxx...