OVH Cloud OVH Cloud

FreeBSD : Lecteur de cartes mémoire

10 réponses
Avatar
Thomas Baruchel
Bonjour,

j'utilise un lecteur de cartes mémoire, qui fonctionne parfaitement
sous FreeBSD ; il est reconnu comme /dev/da0, et lorsqu'une carte
est insérée dedans, on y accède par /dev/da0s1. Cependant, je n'ai
trouvé comme seul moyen de "signaler" les changements ou les insertions
de cartes que de débrancher et rebrancher le port USB. En effet,
si par exemple on démarre "à vide" (sans carte dans le lecteur) ; une
erreur est reportée au démarrage (pas gênant), et j'ai bien /dev/da0
mais pas /dev/da0s1. Si par la suite j'insère une carte dans le lecteur,
comment "signaler" cela (de telle sorte que /dev/da0s1 apparaisse) ?

--
Thomas Baruchel

10 réponses

Avatar
Thomas Baruchel
Le 02-07-2005, Patrick Lamaizière a écrit :
Le noyau affiche quelque chose sur la console à l'insertion de la
carte ?
Non, mais il le fait si je débranche/rebranche le lecteur.


--
Thomas Baruchel

Avatar
talon
Thomas Baruchel wrote:
Bonjour,

j'utilise un lecteur de cartes mémoire, qui fonctionne parfaitement
sous FreeBSD ; il est reconnu comme /dev/da0, et lorsqu'une carte
est insérée dedans, on y accède par /dev/da0s1. Cependant, je n'ai
trouvé comme seul moyen de "signaler" les changements ou les insertions
de cartes que de débrancher et rebrancher le port USB. En effet,
si par exemple on démarre "à vide" (sans carte dans le lecteur) ; une
erreur est reportée au démarrage (pas gênant), et j'ai bien /dev/da0
mais pas /dev/da0s1. Si par la suite j'insère une carte dans le lecteur,
comment "signaler" cela (de telle sorte que /dev/da0s1 apparaisse) ?



Il faut "ouvrir" le device, par exemple fdisk da0
pour que la couche GEOM relise les informations de partition.


--

Michel TALON

Avatar
Thomas Baruchel
Le 02-07-2005, Michel Talon a écrit :
Il faut "ouvrir" le device, par exemple fdisk da0
pour que la couche GEOM relise les informations de partition.
Si je tape "fdisk da0", j'obtiens ce qui suit, sans que cela crée

/dev/da0s1 :

~ $ fdisk da0
******* Working on device /dev/da0 *******
parameters extracted from in-core disklabel are:
cylinders$3 headsd sectors/track2 (2048 blks/cyl)

parameters to be used for BIOS calculations are:
cylinders$3 headsd sectors/track2 (2048 blks/cyl)

Media sector size is 512
Warning: BIOS sector numbering starts with sector 1
Information from DOS bootblock is:
The data for partition 1 is:
sysid 11 (0x0b),(DOS or Windows 95 with 32 bit FAT)
start 101, size 498075 (243 Meg), flag 80 (active)
beg: cyl 0/ head 3/ sector 6;
end: cyl 972/ head 15/ sector 32
The data for partition 2 is:
<UNUSED>
The data for partition 3 is:
<UNUSED>
The data for partition 4 is:
<UNUSED>

Il semble que la carte soit bien détectée, mais faut-il faire
quelque chose de plus pour créer le /dev/da0s1 ?

--
Thomas Baruchel

Avatar
F. Senault

Si par la suite j'insère une carte dans le lecteur,
comment "signaler" cela (de telle sorte que /dev/da0s1 apparaisse) ?


Là, je tenterais le camcontrol rescan.

Fred
--
I am subversion I never was a part of you Burn
Secret desire I never was a part of you Burn
I am your future I never was a part of you Burn
Swallow down all that fire (Nine Inch Nails, Burn)

Avatar
talon
Thomas Baruchel wrote:

Il semble que la carte soit bien détectée, mais faut-il faire
quelque chose de plus pour créer le /dev/da0s1 ?

Alors il faut aussi ouvrir /dev/da0s1, par exemple

disklable da0s1
va l'ouvrir en lecture même s'il ny a pas de label dessus, et je pense
que ceci suffit. En fait le problème est bien connu et a été discuté sur les
listes de courrier. Je ne crois pas qu'une solution satisfaisante se soit
dégagée.

--

Michel TALON

Avatar
talon
Thomas Baruchel wrote:

Il semble que la carte soit bien détectée, mais faut-il faire
quelque chose de plus pour créer le /dev/da0s1 ?

Alors il faut aussi ouvrir /dev/da0s1, par exemple

disklabel da0s1
va l'ouvrir en lecture même s'il ny a pas de label dessus, et je pense
que ceci suffit. En fait le problème est bien connu et a été discuté sur les
listes de courrier. Je ne crois pas qu'une solution satisfaisante se soit
dégagée.

--

Michel TALON

Avatar
Thomas Baruchel
disklabel da0s1
va l'ouvrir en lecture même s'il ny a pas de label dessus, et je pense
que ceci suffit. En fait le problème est bien connu et a été discuté sur les
listes de courrier. Je ne crois pas qu'une solution satisfaisante se soit
dégagée.


Merci en tout cas. Si ce n'est pas abuser, une dernière difficulté :
le fichier /etc/devfs.conf permet de régler les permissions, de mettons
/dev/da0s1, mais il me semble que cela ne concerne que le cas où le
périphérique est détecté au démarrage du système. S'il est branché
plus tard, j'ai l'impression qu'il prend automatiquement les permissions
en lecture seule pour le groupe (en l'occurence 'operator') même
si devfs.conf spécifie 660. Je suppose qu'on peut se débrouiller avec
le fichier de configuration de usbd, mais peut-être y a-t-il un
moyen moins lourd de spécifier les permissions pour un périphérique
détecté après le démarrage ?

--
Thomas Baruchel

Avatar
F. Senault


Si par la suite j'insère une carte dans le lecteur,
comment "signaler" cela (de telle sorte que /dev/da0s1 apparaisse) ?


Là, je tenterais le camcontrol rescan.


Rigolo. La question est passée sur la mailing-list FreeBSD stable, et
la réponse fut :

I am actually OK with such situation. The problem is that the only
device created is obviously da0 i.e. there are no devices for slices
present on medium. So, when the card reader comes to senses I would like
to give a nudge to geom to "re-scan" or "re-create" da0.


true > /dev/da0
will do it.


(Il faut préciser qu'il faut attendre quelques secondes que le lecteur
de carte s'initialise.)

Fred
--
Cron's disease: Symptoms include an obsessive-compulsive behaviour at
regular intervals throughout the day, week, or month.
(Clinton A. Pierce, in the SDM)


Avatar
Thomas Baruchel
true > /dev/da0
Très sympathique comme solution, merci.



--
Thomas Baruchel


Avatar
Marwan Burelle
In article <42c7d605$0$6379$, Thomas Baruchel wrote:
Merci en tout cas. Si ce n'est pas abuser, une dernière difficulté :
le fichier /etc/devfs.conf permet de régler les permissions, de mettons
/dev/da0s1, mais il me semble que cela ne concerne que le cas où le
périphérique est détecté au démarrage du système. S'il est branché
plus tard, j'ai l'impression qu'il prend automatiquement les permissions
en lecture seule pour le groupe (en l'occurence 'operator') même
si devfs.conf spécifie 660. Je suppose qu'on peut se débrouiller avec
le fichier de configuration de usbd, mais peut-être y a-t-il un
moyen moins lourd de spécifier les permissions pour un périphérique
détecté après le démarrage ?


Oui, le fichier devfs.conf est lu par script qui en retire les
opérations à effectuer. On peut appeler ce script à n'importe quel
moment. Notament à l'arrivée du device si l'on utilise devd.

Toutes les infos sont dans :
http://www.lri.fr/~burelle/BSD/USBKey-FreeBSD.html

(il y a une autre méthode il me semble, on m'a envoyé un courrier, ou
quelqu'un avait posté quelque chose ici, mais je n'ai pas eu le temps
de regarder et j'ai oublié ... mais dès que j'ai le temps je m'y
remet et j'upgrade cette doc.)

Au passage, les informations sur les lecteurs de carte m'intéressent,
je n'en ai pas, mais si je peux completer cette doc ...

--
Burelle Marwan,
Equipe Bases de Donnees - LRI
http://www.cduce.org
( | )