[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: USB a /dev/sda o a /dev/sdb





En/na Lluís Gras ha escrit:
Bones !!!

M'han deixat un pendrive i per accedir-hi he de muntar-lo com /dev/sda
enlloc de /dev/sda1 com ho tenia al fstab, fins aquí tot correcte el
problema ve quan un cop conectat el desconectes i llavors no hi pots
accedir, funciono amb supermount però no crec que sigui el problema.

Vegis el resultat de dues connexions i desconnexions consecutives:


Sorry !!!

Em pensava que no hi podia accedir i veig que si, en qualsevol cas el que
em mosqueja és que tan aviat t'assigna /dev/sda com ho fa amb /dev/sdb.


Home! d'això en sé una mica...

Això que dius és ben normal. Si el connectes una tercera vegada sense rebotar probablement te l'assignarà a /dev/sdc i així successivament. No és cap problema del linux, sinó de la topologia USB. A diferència d'un disc dur intern, que sempre és al mateix lloc, els dispositius removibles s'han de poder connectar a qualsevol dels connectors disponibles, i això no permet assignar-los noms concrets. Cada vegada que un dispositiu USB (o firewire) es connecta al bus, és "enumerat" pel subsistema USB amb un número de 1 a 127. Els números s'assignen correlativament, encara que es tracti del mateix dispositiu que s'ha desconnectat i tornat a connectar. Si ens quedem sense números es comencen a reutilitzar els que han quedat buits, però això és difícil que passi. Això porta a la "creació" de dispositius correlatius: sda, sdb, sdc, sdd... i clar, no pots posar una línia fixa al fstab perquè no saps segur com es "dirà" el dispositiu quan el connectis.

La solució està en emprar un sistema que permeti assignar un nom únic i distint a cada dispositiu en funció d'algun paràmetre exclusiu d'ell (p.ex. el número de sèrie, o el codi del fabricant). La manera de fer això és utilitzant el subsistema UDEV, que permet fer això i molt més. Per exemple, un cop configurat correctament UDEV jo li dic que, en connectar el meu pendrive crei un enllaç simbòlic /dev/pendrive0 (jo li vaig crear una taula de particions, d'aquí el "0") al dispositiu, es digui com es digui. Llavors puc afegir al fstab:

/dev/pendrive0	/mnt/pendrive	vfat	rw,user,noauto	0	0

i ja està.

Per fer anar UDEV el millor és usar un nucli 2.6 (crec que hi ha pedaços per al nucli 2.4, però no ho he provat). També n ecessitaras les eines d'espai d'usuari (apt-get install udev) i configurar-lo. Per això cal editar /et/udev/udev.rules (o encara millor, crear un fitxer propi que es digui "pendrive.rules" dins /etc/udev/rules.d) amb una línia que posi:

BUS="usb", SYSFS{product}="<nom del producte>", NAME="%k", SYMLINK="pendrive%n

Òbviament, on diu <nom del producte> hi hauràs de posar el teu, que trobaràs amb la utilitat "udevinfo", un cop hagis endollat el pendrive i l'hagi detectat, per exemple, com a /dev/sda:

udevinfo -a -p /sys/block/sda

Bé, a veure si hi ha sort. Et passo un enllaç útil:

http://www.badopi.org/node/630


Orestes



Reply to: