02 mars 2009
sourceEn bonus de tout, ce message va me servir de mémoire de mon installation du driver usb-storage et du déplacement de fonz_fun_plug sur clé USB.
Mes sources seront
1) Téléchargement et installation du driver USB
Je télécharge donc le module usb-storage.ko. (c'est l'url que tout le monde utilise, hein)
Je l'installe sur mon disque 2 (qui n'est pas en RAID). Donc :
root@dlink-6A4EB1:/mnt# cd /mnt/HD_b2
root@dlink-6A4EB1:/mnt/HD_b2# mkdir .bootstrap
root@dlink-6A4EB1:/mnt/HD_b2# cd .bootstrap
root@dlink-6A4EB1:/mnt/HD_b2/.bootstrap# wget http://www.domaigne.com/download/dns-323/usb-storage.ko
root@dlink-6A4EB1:/mnt/HD_b2/.bootstrap# ls
usb-storage.ko
voilà ! usb-storage est téléchargé.
Reste à l'activer.
root@dlink-6A4EB1:/mnt/HD_b2/.bootstrap# insmod usb-storage.ko
Notez bien que cette commande ne supportera pas le redémarrage. Mais à mon avis, pour la remise en route automatique, on verra plus loin ...
D'une manière typique, je teste l'installation
root@dlink-6A4EB1:/mnt/HD_b2/.bootstrap# dmesg
Initializing USB Mass Storage driver...
scsi2 : SCSI emulation for USB Mass Storage devices
usb-storage: device found at 5
usb-storage: waiting for device to settle before scanning
scsi3 : SCSI emulation for USB Mass Storage devices
usb-storage: device found at 6
usb-storage: waiting for device to settle before scanning
usbcore: registered new driver usb-storage
USB Mass Storage support registered.
é Vendor: Kingmax Model: USB2.0 FlashDisk Rev: 1.00
é Type: Direct-Access ANSI SCSI revision: 02
é Vendor: IC35L060 Model: AVV207-0 Rev: 0 0
é Type: Direct-Access ANSI SCSI revision: 00
SCSI device sdc: 7737344 512-byte hdwr sectors (3962 MB)
sdc: Write Protect is off
sdc: Mode Sense: 23 00 00 00
sdc: assuming drive cache: write through
SCSI device sdc: 7737344 512-byte hdwr sectors (3962 MB)
sdc: Write Protect is off
sdc: Mode Sense: 23 00 00 00
sdc: assuming drive cache: write through
ésdc: sdc1
Attached scsi removable disk sdc at scsi2, channel 0, id 0, lun 0
Attached scsi generic sg2 at scsi2, channel 0, id 0, lun 0, type 0
SCSI device sdd: 66055248 512-byte hdwr sectors (33820 MB)
sdd: assuming drive cache: write through
usb-storage: device scan complete
SCSI device sdd: 66055248 512-byte hdwr sectors (33820 MB)
sdd: assuming drive cache: write through
ésdd: sdd1
Attached scsi disk sdd at scsi3, channel 0, id 0, lun 0
Attached scsi generic sg3 at scsi3, channel 0, id 0, lun 0, type 0
usb-storage: device scan complete
Lé, je vois ça, j'ai envie de dire "Bouyah !" Ce gros paté de logs signifie simplement que le module a été correctement installé, et a trouvé plusieurs éléments (normal, j'ai branché sur mon hub une clé USB Kingmax et un disque dur externe).
Maintenant, il faut monter tout ce petit monde (et idçalement le monter d'une manière visible à travers tous les protocoles).
Pour ça, la méthode la plus simple est de monter tout l'USB à un endroit pratique ... comme par exemple ce même disque HD_b2.
Mais qui est la clé USB, et qui est le disque dur ?
Facile :
root@dlink-6A4EB1:/mnt/HD_b2# ls /proc/scsi/usb-storage/
2 3
Maintenant, découvrons-en un peu plus ...
root@dlink-6A4EB1:/mnt/HD_b2# cat /proc/scsi/usb-storage/2
é Host scsi2: usb-storage
é Vendor: Kingmax
é Product: USB2.0 FlashDisk
Serial Number: 777090109FFFFF0000000399
é Protocol: Transparent SCSI
é Transport: Bulk
é Quirks:
Bon, ben voilà ma clé Kingmax
Et mon disque dur est donc ...
root@dlink-6A4EB1:/mnt/HD_b2# cat /proc/scsi/usb-storage/3
é Host scsi3: usb-storage
é Vendor: Cypress Semiconductor
é Product: USB2.0 Storage Device
Serial Number: DEF109AE572C
é Protocol: Transparent SCSI
é Transport: Bulk
é Quirks:
Résumons-nous.
La clé USB est donc scsi2 et le disque dur scsi3.
Un dernier truc ... avant de monter la clé, il faut bien vérifier qu'elle est en FAT32 (sinon ca foire, bien sûr).
root@dlink-6A4EB1:/mnt/HD_b2# fdisk -l
Disk /dev/sda: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
é Device Boot Start End Blocks Id System
/dev/sda1 1 66 530113+ 82 Linux swap
/dev/sda2 131 30547 244324552+ 83 Linux
/dev/sda3 30548 60801 243015255 83 Linux
/dev/sda4 67 130 514080 83 Linux
Partition table entries are not in disk order
Disk /dev/sdb: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
é Device Boot Start End Blocks Id System
/dev/sdb1 1 66 530113+ 82 Linux swap
/dev/sdb2 131 30547 244324552+ 83 Linux
/dev/sdb3 30548 60801 243015255 83 Linux
/dev/sdb4 67 130 514080 83 Linux
Partition table entries are not in disk order
Disk /dev/sdc: 3961 MB, 3961520128 bytes
124 heads, 60 sectors/track, 1039 cylinders
Units = cylinders of 7440 * 512 = 3809280 bytes
é Device Boot Start End Blocks Id System
/dev/sdc1 2 1040 3862192 b Win95 FAT32
Disk /dev/sdd: 33.8 GB, 33820286976 bytes
255 heads, 63 sectors/track, 4111 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
é Device Boot Start End Blocks Id System
/dev/sdd1 1 4112 33027592+ b Win95 FAT32
Vous voyez, tout va bien ;-)
On peut aussi constater que le device scsi2 est présenté sur /dev/sdc1 (ça, c'est la clé USB) et que le device scsi3 est présenté sur /dev/sdd1 (et ça, c'est le disque dur).
Ca m'aidera pour la suite, je crois.
Pour en revenir à ce que j'ai déja, je crée mon répertoire usb
root@dlink-6A4EB1:/mnt/HD_b2# mkdir usb
root@dlink-6A4EB1:/mnt/HD_b2# cd usb/
root@dlink-6A4EB1:/mnt/HD_b2/usb# ls
root@dlink-6A4EB1:/mnt/HD_b2/usb# mkdir kingmax
root@dlink-6A4EB1:/mnt/HD_b2/usb# mkdir hdd
root@dlink-6A4EB1:/mnt/HD_b2/usb# ls
Et je monte mes devices dedans.
La clé USB :
root@dlink-6A4EB1:/mnt/HD_b2/usb# mount -t vfat -o umask=0 /dev/sdc1 /mnt/HD_b2/usb/kingmax/
Puis le disque dur :
root@dlink-6A4EB1:/mnt/HD_b2/usb# mount -t vfat -o umask=0 /dev/sdd1 /mnt/HD_b2/usb/hdd/
Et quelques ls nous confirment la superbe vérité : c'est monté ! (je ne les fais pas ici, car ils ne servent à rien, mais vous voyez l'idée)
Et maintenant, la partie réellement touchy.
2) Déplacement de fonz_fun_plug sur la clé USB
Lé, c'est un peu plus risqué ...
Avant tout ... Reformater la clé en ext2fs
root@dlink-6A4EB1:/mnt/HD_b2/usb# mke2fs /dev/sdc1
Et bing ! Ma clé de 4 Go est passée en ext2fs.
Maintenant, je la remonte au même endroit
>root@dlink-6A4EB1:/mnt/HD_b2/usb# mount /dev/sdc1 /mnt/HD_b2/usb/kingmax/
Et je copie les fichiers de ffp sur la clé.
root@dlink-6A4EB1:/mnt/HD_b2/usb/kingmax# cp -a /mnt/HD_a2/ffp/ .
C'est maintenant qu'arrive la partie vraiment chaude ...
Laissez-moi vous expliquer ...
fonz_fun_plug fonctionne grâce au fun_plug, un système intégré au DNS323 qui exécute un script sur le premier volume au démarrage. Donc, il va falloir remplacer ce script par un script démarrant fonz_fun_plug depuis la clé USB. ce script, il en existe plusieurs versions. J'ai choisi (pour l'instant) celle-ci.
Bon, pour l'instant, je suspend un peu le truc parce que ça marche pas parfaitement, et que je dois faire à manger ;-) A tout de suite !
Allez, retournons-y !
Donc, finallement, je me dis que le plus simple, c'est encore de faire un petit fun_plug qui se contente de lancer celui de la clé USB.
Bon, en fait, non.
Je vais refaire ça une autre fois, parce que même si il n'y a en fait aucun risque (grâce aux copies simples de fichiers), faut vraiment que j'y réfléchisse prudement ...