|
Como
utilizar dispositivos de almacenamiento USB mass-storage en Linux 2.6 Atencion: este articulo esta en desarrollo y por su naturaleza de alpha es factible que presente bugs, sientanse libres de hacermelos saber. autor: Cristian Ricardo Elias <[email protected]> Tabla de contenidos 1-Introduccion 1.1-�Porque? 1.2-Finalidad 2-Requisitos 2.1-Requisitos generales 2.2-Requisitos de configuracion del kernel 3-Probando nodos 3.1-Probando montaje de sistema de ficheros USB 3.2-Probando estadisticas necesarias en /proc 3.3-Probando el dispositivo 4-Montaje de dispositivos USB 4.1-USB keys, USB pendrives, Flash-sticks, USB disks, etc. 4.1.2-Particion unica 4.1.3-Multiples particiones 4.1.4-Montando dispositivos 4.2-Montaje de Camaras digitales 5-Automontaje de dispositivos 6-�vos sos Dios? 1-Introduccion Ya no necesitamos mas sistemas operativos comerciales para utilizar nuestros dispositivos usb. Ahora podemos utilizarlos y explotarlos al maximo en este sublime sistema operativo. 1.1-Porque? ---> Porque este pibe me esta diciendo que hacer? Bueno, sinceramente no se...,pero creo que por dos motivos principales: 1) Me parece que es hora de acabar con el mito de: "Uh... si tenes Linux no te va a andar" y esta parece una buena forma de empezar. 2) Estoy aburrido, es sabado por la noche y hay nada en la TV 1.1-Finalidad ---> Este articulo tiene como finalidad guiar al usuario con un vocabulario tecnico amistoso para hacer funcionar sus dispositivos de almacenamiento USB ( Memory Sticks como los que usan las camaras digitales, discos USB, pen drives o llaveros USB, etc ) en Linux 2.6. 2-Requisitos ---> Antes de ponernos a full con nuestros "juguetes" USB tenemos que preparar nuestro sistema para 2.1-Requisitos generales ---> *Dreamweb.com.ar aconseja utilizar una distribucion de Linux reciente con nucleo 2.6 por default. Yo personalmente recomiendo Gentoo. *Un nucleo de la serie 2.6, Dreamweb.com.ar recomienda el nucleo 2.6.10 ya que no presenta ningun bug con respecto a los modulos competentes a este articulo *devfs o udev. Dreamweb.com.ar recomienda utilizar udev por multiples motivos, entre los mas basicos e importantes: +Udev es realmente peque�o, no tiene que estar corriendo todo el tiempo. +Udev permite escribir reglas para personalizar los nombres de los dispositivos de manera permanente y asi evitar problemas y ganar comodidad. +Udev solo muestra y crea los nodos para los dispositivos de acuerdo a nuestro sistema. Esto hace que el directorio /dev no contenga cientos de nodos innecesarios. +Crea/borra archivos de dispositivo dinamicamente. +Udev envia mensajes de tipo D-BUS para que otros programas sepan que dispositivos son creados y cuales removidos. *hotplug-2004_01_05 o superior, Dreamweb.com.ar recomienda hotplug-2004_09_23 *libusb-0.1.8 *sysfs (viene por default en linux 2.6) *sysfsutils-0.4.0 o superior, Dreamweb.com.ar recomienda sysfsutils-0.4.0 *udev-016 o superior, Dreamweb.com.ar recomienda udev-0.45 2.2-Requisitos de configuracion del kernel ---> #Antes que nada soporte hotplug ( CONFIG_HOTPLUG=y ) #Soporte SCSI como modulo (scsi_mod), soporte de estadisticas SCSI en /proc/scsi/ y soporte de disco SCSI como modulo (sd_mod). Device Drivers ---> SCSI device support ---> <M> SCSI device support [*] legacy /proc/scsi/ support <M> SCSI disk support #Soporte USB como modulo (usbcore); soporte de estadisticas USB en /proc/bus/usb/devices/ y montaje USB en /proc/bus/usb/; y modulos de controladores USB 2.0 Alta velocidad EHCI, OHCI y UHCI [solo el UHCI es estrictamente necesario]; modulo USB Mass Storage (usb_storage) para poder utilizar SCSI en dispositivos USB. Device Drivers ---> USB support ---> <M> Support for Host-side USB [*] USB device filesystem <M> EHCI HCD (USB 2.0) support <M> OHCI HCD support <M> UHCI HCD (most Intel and VIA) support <M> USB Mass Storage support #Soporte para el sistema de ficheros ext2; soporte para sistema de ficheros MSDOS (msdos); soporte para sistema de ficheros "Virtual Fat" (vfat); systema de ficheros /proc montado en /proc. File systems ---> <*> Second extended fs support DOS/FAT/NT Filesystems ---> <M> MSDOS fs support <M> VFAT (Windows-95) fs support Pseudo filesystems ---> [*] /proc file system support 3-Probando nodos ---> El memory stick va a ser tomado como un dispositivo USB mass storage visto como un disco SCSI removible. En /dev sera nombrado (sd?). Cuando varios dispositivos de esta naturaleza estan enchufados son nombrados /dev/sda, /dev/sdb, /dev/sdc, /dev/sdd, etc. Por ejemplo cuando conectamos un memory stick y luego conectamos otro, el primero sera nombrado /dev/sda y el segundo /dev/sdb. Al conectarlos las estadisticas estan en /proc/scsi/usb-storage/* (siendo * el numero de memory sticks enchufados o la cantidad de veces que se han enchufado) Teniendo en cuenta que el stick va a ser nombrado /dev/sda pasaremos a comprobar la existencia de estos nodos con: #ls /dev/sd* En caso de que estos nodos no existan y el ls nos tire un: No such file or directory Tendremos que crearlos manualmente: #mknod /dev/sda b 8 0 #mknod /dev/sda1 b 8 1 (solo crearemos esos pues son los que necesitaremos para montar nuestro stick) 3.1-Probando montaje de sistema de ficheros USB ---> Debemos montar este sistema de ficheros dinamicamente generado en /proc/bus/usb/, antes de montarlo veamos si es necesario tipeando: #mount | grep usb si en la salida de ese comando vemos algo como: none on /proc/bus/usb type usbfs (rw) significa que ya esta montado y no debemos hacerlo. Si no aparece nada debemos montarlo manualmente, antes de hacerlo comprobaremos la existencia del punto de montaje con: #ls /proc/bus/usb si el ls nos tira un: ls: /proc/bus/usb/: No such file or directory es porque el directorio no existe. en ese caso lo creamos con: #mkdir -p /proc/bus/usb/ y pasamos a montarlo con: #mount -t usbfs none /proc/bus/usb 3.2-Probando estadisticas necesarias en /proc ---> Como en el paso anterior ya aseguramos la existencia de /proc/bus/usb, solo nos queda probar /proc/scsi: #ls /proc/scsi Si este existe, estan listos para el siguiente paso. De lo contrario deberan revisar la configuracion del nucleo porque les falta seleccionar Device Drivers ---> SCSI device support ---> [*] legacy /proc/scsi/ support 3.3-Probando el dispositivo ---> Si por ejemplo tienen una camara digital, conectenla a la pc y enciendanla; luego tipeen: #udevinfo -a -p /sys/block/sda/sda1 deberian ver algo como: udevinfo starts with the device the node belongs to and then walks up the device chain, to print for every device found, all possibly useful attributes in the udev key format. Only attributes within one device section may be used together in one rule, to match the device for which the node will be created. looking at class device '/sys/block/sda/sda1': SYSFS{dev}="8:1" SYSFS{size}="31591" SYSFS{start}="25" SYSFS{stat}=" 0 0 0 0" follow the class device's "device" looking at the device chain at '/sys/devices/pci0000:00/0000:00:1d.1/usb2/2-1/2-1:1.0/host12/target12:0:0/12:0:0:0': BUS="scsi" ID="12:0:0:0" SYSFS{detach_state}="0" SYSFS{device_blocked}="0" SYSFS{max_sectors}="240" SYSFS{model}="Sony DSC " SYSFS{queue_depth}="1" SYSFS{rev}="5.00" SYSFS{scsi_level}="3" SYSFS{state}="running" SYSFS{timeout}="30" SYSFS{type}="0" SYSFS{vendor}="Sony " looking at the device chain at '/sys/devices/pci0000:00/0000:00:1d.1/usb2/2-1/2-1:1.0/host12/target12:0:0': BUS="" ID="target12:0:0" SYSFS{detach_state}="0" looking at the device chain at '/sys/devices/pci0000:00/0000:00:1d.1/usb2/2-1/2-1:1.0/host12': BUS="" ID="host12" SYSFS{detach_state}="0" looking at the device chain at '/sys/devices/pci0000:00/0000:00:1d.1/usb2/2-1/2-1:1.0': BUS="usb" ID="2-1:1.0" SYSFS{bAlternateSetting}=" 0" SYSFS{bInterfaceClass}="08" SYSFS{bInterfaceNumber}="00" SYSFS{bInterfaceProtocol}="01" SYSFS{bInterfaceSubClass}="ff" SYSFS{bNumEndpoints}="03" SYSFS{detach_state}="0" looking at the device chain at '/sys/devices/pci0000:00/0000:00:1d.1/usb2/2-1': BUS="usb" ID="2-1" SYSFS{bConfigurationValue}="1" SYSFS{bDeviceClass}="00" SYSFS{bDeviceProtocol}="00" SYSFS{bDeviceSubClass}="00" SYSFS{bMaxPower}=" 2mA" SYSFS{bNumConfigurations}="1" SYSFS{bNumInterfaces}=" 1" SYSFS{bcdDevice}="0500" SYSFS{bmAttributes}="c0" SYSFS{detach_state}="0" SYSFS{devnum}="10" SYSFS{idProduct}="0010" SYSFS{idVendor}="054c" SYSFS{manufacturer}="Sony" SYSFS{maxchild}="0" SYSFS{product}="Sony DSC" SYSFS{speed}="12" SYSFS{version}=" 2.00" looking at the device chain at '/sys/devices/pci0000:00/0000:00:1d.1/usb2': BUS="usb" ID="usb2" SYSFS{bConfigurationValue}="1" SYSFS{bDeviceClass}="09" SYSFS{bDeviceProtocol}="00" SYSFS{bDeviceSubClass}="00" SYSFS{bMaxPower}=" 0mA" SYSFS{bNumConfigurations}="1" SYSFS{bNumInterfaces}=" 1" SYSFS{bcdDevice}="0206" SYSFS{bmAttributes}="c0" SYSFS{detach_state}="0" SYSFS{devnum}="1" SYSFS{idProduct}="0000" SYSFS{idVendor}="0000" SYSFS{manufacturer}="Linux 2.6.10 uhci_hcd" SYSFS{maxchild}="2" SYSFS{product}="Intel Corp. 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2" SYSFS{serial}="0000:00:1d.1" SYSFS{speed}="12" SYSFS{version}=" 1.10" looking at the device chain at '/sys/devices/pci0000:00/0000:00:1d.1': BUS="pci" ID="0000:00:1d.1" SYSFS{class}="0x0c0300" SYSFS{detach_state}="0" SYSFS{device}="0x24c4" SYSFS{irq}="19" SYSFS{local_cpus}="1" SYSFS{subsystem_device}="0x8089" SYSFS{subsystem_vendor}="0x1043" SYSFS{vendor}="0x8086" looking at the device chain at '/sys/devices/pci0000:00': BUS="" ID="pci0000:00" SYSFS{detach_state}="0" Ahora tipeen: # dmesg Al final de la salida veran algo como: usb 2-1: USB disconnect, address 9 usb 2-1: new full speed USB device using uhci_hcd and address 10 scsi12 : SCSI emulation for USB Mass Storage devices usb-storage: device found at 10 usb-storage: waiting for device to settle before scanning Vendor: Sony Model: Sony DSC Rev: 5.00 Type: Direct-Access ANSI SCSI revision: 00 SCSI device sda: 31680 512-byte hdwr sectors (16 MB) sda: assuming Write Enabled sda: assuming drive cache: write through SCSI device sda: 31680 512-byte hdwr sectors (16 MB) sda: assuming Write Enabled sda: assuming drive cache: write through sda: sda1 Attached scsi removable disk sda at scsi12, channel 0, id 0, lun 0 usb-storage: device scan complete Si todo esta Ok, ya podemos continuar. 4-Montaje de dispositivos USB ---> 4.1-USB keys, USB pendrives, Flash-sticks, USB disks, etc. ---> 4.1.2-Particion unica ---> Si queremos utilizar una sola particion y por ende un solo sistema de ficheros, debemos crearlo: (Para Fat 32) #mkdosfs -F 32 /dev/sda1 (Para ext2) #mke2fs /dev/sda1 Ahora pueden avanzar hasta 4.1.4. 4.1.3-Multiples particiones ---> Vamos a crear dos particiones primarias, (la primera con fat32 y la siguiente con ext2) en nuestro usbstick utilizando fdisk: # fdisk /dev/sda Command (m for help): d Selected partition 1 Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First cylinder (1-888, default 1): Using default value 1 Last cylinder or +size or +sizeM or +sizeK (1-888, default 888):444 Command (m for help): t Selected partition 1 Hex code (type L to list codes): b Changed system type of partition 1 to b (Win95 FAT32) Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 2 First cylinder (445-888, default 445): Using default value 445 Last cylinder or +size or +sizeM or +sizeK (445-888, default 888): Using default value 888 Command (m for help): t Partition number (1-4): 2 Hex code (type L to list codes): 83 Command (m for help): p Disk /dev/sda: 131 MB, 131072000 bytes 9 heads, 32 sectors/track, 888 cylinders Units = cylinders of 288 * 512 = 147456 bytes Device Boot Start End Blocks Id System /dev/sda1 1 444 63920 b Win95 FAT32 /dev/sda2 445 888 63936 83 Linux Command (m for help):w Si a lo largo del particionamiento comenten algun error pueden volver atras saliendo del fdisk sin guardar cambios (siempre y cuando no digiten la tecla "w", pues tecleando la misma el fdisk escribe la tabla de particiones) Ahora crearemos los sistemas de ficheros de las dos particiones: # mkdosfs -F 32 /dev/sda1 #mke2fs /dev/sda2 Listo, pasen al siguiente paso. 4.1.4-Montando dispositivos Crear punto de montaje y montar: Si uds siguieron el paso 4.1.3 hagan lo siguiente: Creacion de puntos de montaje: #mkdir -p /mnt/fatstick #mkdir -p /mnt/ext2stick Montaje: #mount -t vfat /dev/sda1 /mnt/fatstick #mount -t ext2 /dev/sda2 /mnt/ext2stick Si uds siguieron el paso 4.1.2 con vfat hagan lo siguiente: Creacion de punto de montaje: #mkdir -p /mnt/usbstick Montaje: #mount -t vfat /dev/sda1 /mnt/usbstick Si uds siguieron el paso 4.1.2 con ext2 hagan lo siguiente: Creacion de punto de montaje: #mkdir -p /mnt/usbstick Montaje: #mount -t ext2 /dev/sda1 /mnt/usbstick 4.2-Montaje de camaras digitales ---> Para este tipo de dispositivo no debemos particionar ni crear sistemas de ficheros, estos vienen con fat, de modo que solo debemos montarlo. (creacion del punto de montaje) #mkdir /mnt/digicam (montaje del dispositivo) #mount -t vfat /dev/sda1 /mnt/digicam/ Listo, la camara esta montada en /mnt/digicam/ 5-Automontaje de dispositivos ---> Como he mencionado con anterioridad udev permite escribir reglas para personalizar los nombres de los dispositivos; es decir que cada vez que el kernel detecta una actualizacion en la estructura de dispositivos, llama al programa /sbin/hotplug. Este ejecuta las aplicaciones enlazadas en el directorio /etc/hotplug.d/default donde encontrara enlaces simb�licos a la aplicacion udev. Hotplug dirige los datos dados por el kernel a la aplicacion udev que crea o borra los archivos de dispositivo necesarios en /dev/. Ahora crearemos reglas para camaras digitales, y usbsticks para que cada vez que conectemos nuestro dispositivo USB udev le asigne el nombre de nodo que nosotros especifiquemos. ( Para camaras digitales sera /dev/digicam y para usbticks sera /dev/usbstick ) Primero vamos al directorio donde udev busca los archivos de reglas: #cd /etc/udev/rules.d En ese directorio vamos a encontrar un archivo llamado 50-udev.rules que es el archivo de reglas por default, el mismo contiene las reglas para los dispositivos mas comunes. He aqui el contenido de un 50-udev.rules: # /etc/udev/udev.rules: device naming rules for udev # # Gentoo specific rules, based a bit on devfs rules, but much simpler. # # There are a number of modifiers that are allowed to be used in some of the # fields. See the udev man page for a full description of them. ########################################################### # # For devfs similar /dev layout (neater) # ########################################################### # cdrom symlinks and other good cdrom naming BUS="ide", KERNEL="hd[a-z]", PROGRAM="/etc/udev/scripts/cdsymlinks.sh %k", SYMLINK="%c{1} %c{2}%c{3} %c{4} %c{5} %c{6}" BUS="scsi", KERNEL="sr[a-z]", PROGRAM="/etc/udev/scripts/cdsymlinks.sh %k", SYMLINK="%c{1} %c{2}%c{3} %c{4} %c{5} %c{6}" BUS="scsi", KERNEL="scd[a-z]", PROGRAM="/etc/udev/scripts/cdsymlinks.sh %k", SYMLINK="%c{1} %c{2}%c{3} %c{4} %c{5} %c{6}" # devfs-names for ide-devices (uncomment only one) # /dev/ide/.../{disc,cd} and /dev/{cdroms,discs}/* type names BUS="ide", KERNEL="hd*", PROGRAM="/etc/udev/scripts/ide-devfs.sh %k %b %n", NAME="%k", SYMLINK="%c{1} %c{2}" # dri devices KERNEL="card*", NAME="dri/card%n" # alsa devices KERNEL="controlC[0-9]*", NAME="snd/%k" KERNEL="hw[CD0-9]*", NAME="snd/%k" KERNEL="pcm[CD0-9cp]*", NAME="snd/%k" KERNEL="midiC[D0-9]*", NAME="snd/%k" KERNEL="timer", NAME="snd/%k" KERNEL="seq", NAME="snd/%k" # capi devices KERNEL="capi", NAME="capi20", SYMLINK="isdn/capi20" KERNEL="capi*", NAME="capi/%n" # cpu devices KERNEL="cpu[0-9]*", NAME="cpu/%n/cpuid" KERNEL="msr[0-9]*", NAME="cpu/%n/msr" KERNEL="microcode", NAME="cpu/microcode" # dm devices (ignore them) KERNEL="dm-[0-9]*", NAME="" # create a symlink named after the device map name # note devmap_name comes with extras/multipath #KERNEL="dm-[0-9]*", PROGRAM="/sbin/devmap_name %M %m", NAME="%k", SYMLINK="%c" KERNEL="device-mapper", NAME="mapper/control" # fb devices KERNEL="fb[0-9]*", NAME="fb/%n", SYMLINK="%k" # floppy devices KERNEL="fd[0-9]*", NAME="floppy/%n", SYMLINK="%k" # i2c devices KERNEL="i2c-[0-9]*", NAME="i2c/%n", SYMLINK="%k" # input devices KERNEL="mice", NAME="input/%k" KERNEL="mouse*", NAME="input/%k" KERNEL="event*", NAME="input/%k" KERNEL="js*", NAME="input/%k" KERNEL="ts*", NAME="input/%k" # loop devices KERNEL="loop[0-9]*", NAME="loop/%n", SYMLINK="%k" # md block devices KERNEL="md[0-9]*", NAME="md/%n", SYMLINK="%k" # misc devices KERNEL="agpgart", NAME="misc/%k", SYMLINK="%k" KERNEL="psaux", NAME="misc/%k", SYMLINK="%k" KERNEL="rtc", NAME="misc/%k", SYMLINK="%k" KERNEL="uinput", NAME="misc/%k", SYMLINK="%k" KERNEL="inotify", NAME="misc/%k", SYMLINK="%k" # netlink devices KERNEL="route", NAME="netlink/%k" KERNEL="skip", NAME="netlink/%k" KERNEL="usersock", NAME="netlink/%k" KERNEL="fwmonitor", NAME="netlink/%k" KERNEL="tcpdiag", NAME="netlink/%k" KERNEL="nflog", NAME="netlink/%k" KERNEL="xfrm", NAME="netlink/%k" KERNEL="arpd", NAME="netlink/%k" KERNEL="route6", NAME="netlink/%k" KERNEL="ip6_fw", NAME="netlink/%k" KERNEL="dnrtmsg", NAME="netlink/%k" KERNEL="tap*", NAME="netlink/%k" # network devices KERNEL="tun", NAME="net/%k" # pty devices KERNEL="pty[p-za-e][0-9a-f]*", NAME="pty/m%n", SYMLINK="%k" KERNEL="tty[p-za-e][0-9a-f]*", NAME="pty/s%n", SYMLINK="%k" # ramdisk devices KERNEL="ram[0-9]*", NAME="rd/%n", SYMLINK="%k" # raw devices KERNEL="raw[0-9]*", NAME="raw/%k" # sound devices KERNEL="adsp", NAME="sound/%k", SYMLINK="%k" KERNEL="adsp[0-9]*", NAME="sound/%k", SYMLINK="%k" KERNEL="audio", NAME="sound/%k", SYMLINK="%k" KERNEL="audio[0-9]*", NAME="sound/%k", SYMLINK="%k" KERNEL="dsp", NAME="sound/%k", SYMLINK="%k" KERNEL="dsp[0-9]*", NAME="sound/%k", SYMLINK="%k" KERNEL="mixer", NAME="sound/%k", SYMLINK="%k" KERNEL="mixer[0-9]*", NAME="sound/%k", SYMLINK="%k" KERNEL="sequencer", NAME="sound/%k", SYMLINK="%k" KERNEL="sequencer[0-9]*", NAME="sound/%k", SYMLINK="%k" # tty devices KERNEL="tty[0-9]*", NAME="vc/%n", SYMLINK="%k" KERNEL="ttyS[0-9]*", NAME="tts/%n", SYMLINK="%k" KERNEL="ttyUSB[0-9]*", NAME="tts/USB%n" # usb devices KERNEL="hiddev*", NAME="usb/%k" KERNEL="auer*", NAME="usb/%k" KERNEL="legousbtower*", NAME="usb/%k" KERNEL="dabusb*", NAME="usb/%k" BUS="usb", KERNEL="lp[0-9]*", NAME="usb/%k" # vc devices KERNEL="vcs", NAME="vcc/0", SYMLINK="%k" KERNEL="vcs[0-9]*", NAME="vcc/%n", SYMLINK="%k" KERNEL="vcsa", NAME="vcc/a0", SYMLINK="%k" KERNEL="vcsa[0-9]*", NAME="vcc/a%n", SYMLINK="%k" # v4l devices KERNEL="video[0-9]*", NAME="v4l/video%n", SYMLINK="video%n" KERNEL="radio[0-9]*", NAME="v4l/radio%n" KERNEL="vbi[0-9]*", NAME="v4l/vbi%n", SYMLINK="vbi%n" KERNEL="vtx[0-9]*", NAME="v4l/vtx%n" Ahora pasamos a crear nuestras propias reglas: Primeo creamos el archivo con la sintaxis adecuada para que udev lea primero nuestras reglas: # touch 10-udev.rules Observen que el archivo empieza con 10, es para que udev lea primero este archivo y luego el del kernel (50) Ahora lo editamos y le agregamos estas entradas genericas: #digicam BUS="usb", KERNEL="sd?1", SYSFS{model}="Sony DSC", NAME="digicam" #usbstick BUS="scsi", KERNEL="sd?1", SYSFS{model}="Mobile Disk", NAME="usbstick" (Uds deberan elegir de acuerdo al dispositivo USB que tengan, es decir, si tienen una camara digital solo agregaran la primer entrada) Si udev no les crea el nodo llamado digicam o usbstick (depende de su eleccion) puede ser que la entrada no sea valida para su sistema, entonces deberan comprobarlo tecleando: # udevinfo -a -p /sys/block/sda entre toda la salida veran algo como esto: follow the class device's "device" looking at the device chain at '/sys/devices/pci0000:00/0000:00:10.4/usb1/1-1/1-1:1.0/host7/7:0:0:0': BUS="scsi" ID="7:0:0:0" SYSFS{detach_state}="0" SYSFS{device_blocked}="0" SYSFS{max_sectors}="240" SYSFS{model}="Mobile Disk" SYSFS{queue_depth}="1" SYSFS{rev}=" " Es fundamental que presten atencion a las lineas "BUS", "SYSFS{model}" y "SYSFS{vendor}" dado que las lineas "SYSFS{model}" y "SYSFS{vendor}" les permitira reconocer entre toda la salida de ese comando cual es el dispostivo que estan buscando. Por ejemplo podriamos diferenciar entre: SYSFS{product}="Sony DSC" y entre SYSFS{product}="Intel Corp. 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2" las posibilidades son muchas y muy complicado de ejemplificar, pero confio que ese ejemplo sea de ayuda. Lo mas importante y a lo que apunto con esto es que si la linea "BUS" del dispositivo con el " SYSFS{model}" adecuado dice: BUS="scsi" Y nosotros en el /etc/udev/rules.d/10-local.rules especificamos BUS="usb" no va a funcionar. Por eso insisto en que verifiquen antes de llorar :-P Ahora modificaremos nuestro /etc/fstab por dos razones: *Automatizar el montaje de estos dispositivos al iniciar la pc. *Facilitar el montaje de manera que solo tengamos que especificar el nodo que queremos montar o el punto de montaje y la demas informacion como sistemas de ficheros, etc sea buscada en el /etc/fstab Para ello debemos agregar los siguiente al /etc/fstab: Para camara digital con reglas udev: /dev/digicam /mnt/digicam auto noauto,rw,user 0 0 Para camara digital sin reglas udev: /dev/sda1 /mnt/digicam auto noauto,rw,user 0 0 Para usbstick, pen-drives, etc con reglas udev y vfat: /dev/usbstick /mnt/usbstick vfat noauto,rw,user 0 0 Para usbstick, pen-drives, etc con reglas udev y ext2: /dev/usbstick /mnt/usbstick ext2 noauto,rw,user 0 0 Para usbstick, pen-drives, etc de acuerdo al paso 4.1.3: /dev/sda1 /mnt/fatstick vfat noauto,rw,user 0 0 /dev/sda2 /mnt/ext2stick ext2 noauto,rw,user 0 0 6-�vos sos Dios? ---> No, yo no. CRISTIAN EL�AS |