Allô !
T'es prêt, c'est encore un autre message qui est long, mais bon je vais te donner une couple d'exemples d'application. Car, c'est tout le temps comme ça que nous pouvons apprendre et comprendre le but des commandes.
Quand j'ai commencé à rédiger ça, tu n'avais pas encore répondu à ConsoleCowboy, disons que tu vas l'avoir l'exemple d'utilisation de la commande.
Pour commencer, ConsoleCowboy a fait un bon portrait pour ce qui est des modules.
La commande
modprobe va aller chercher le module et tous les autres modules qui sont nécessaires... Par exemple le module
sb qui est celui de la carte de son va avoir besoin de
sb_lib et de
uart401 pour fonctionner.
Si tu veux enlever un module que tu as chargé en mémoire tu utilises la commande
rmmod suivi du nom de ton module que tu veux enlever...
Aussi, comme disait ConsoleCowboy normalement le répertoire où sont placés les modules c'est /lib/modules/<version du kernel>/ si jamais t'es trop lâche pour chercher c'est où, tu peux faire un
cd /lib/modules/`uname -r` quand je suis chez une personne, et que je ne sais pas quel est la version de son kernel, c'est ce que je fais.
Mais, faut que tu sois prudent dans ces répertoires là. Tu
effaces rien ou
renomme rien sans être certain des changements que tu apportes. Car, c'est la meilleur recette pour avoir un Kernel Panic à ton prochain démarrage...
Si tu veux savoir si le module via-rhine existe, tu peux faire un
modinfo via-rhine et si tu as le module tu devrais avoir de l'information sur les paramètres supportés.
Par exemple, pour le soundblaster
modinfo sb va me donner l'écran suivant:
Code :
filename: /lib/modules/<version du Kernel>/kernel/drivers/sound/sb.o
description: "Soundblaster driver"
author: <none>
parm: io int, description "Soundblaster i/o base address (0x220,0x240,0x260,0x280)"
parm: irq int, description "IRQ (5,7,9,10)"
parm: dma int, description "8-bit DMA channel (0,1,3)"
parm: dma16 int, description "16-bit DMA channel (5,6,7)"
[... Snip ...]
parm: reverse int, description "When set to 1, will reverse ISAPnP search order"
parm: uart401 int, description "When set to 1, will attempt to detect and enable the mpu on some clones"
Un des modules qui est pratique en maudit c'est le
rd (ramdisk) lui va servir à faire un .... ramdisk, quelle surprise. Je vais parler un peu plus de celui-là car je suis habitué de travailler avec, le
sb c'était pour démontrer les histoires d'interdépendances des différents modules.
Comme d'habitude pour aller le chercher, s'il est présent tu peux faire un
modinfo rdCode :
filename: /lib/modules/<version du Kernel>/kernel/drivers/block/rd.o
description: <none>
author: <none>
parm: rd_size int, description "Size of each RAM disk in kbytes."
parm: rd_blocksize int, description "Blocksize of each RAM disk in bytes."
Donc, en écrivant
modprobe rd rd_size=1440 il va charger le module et créer un ramdisk, comme par hasard ça ressemble drôlement à une disquette...
Au lieu de tout le temps écrire sur la disquette à toutes les fois que tu vas copier/éditer un fichier, tu peux faire le tout en mémoire et après ça copier le contenu de la mémoire... C'est pratique quand t'es sur une vieille machine et que l'accès disque est pénible, ou encore que tu veux faire certains tests...
Pour être capable de formatter en ext2, tu ne prends pas de risques, et tu t'arranges pour mettre des
0x00 dans la mémoire. Car, tu peux avoir toutes sortes de cochonneries... La commande
dd est ton meilleur ami pour ce genre de choses et bien d'autres...
Code :
dd if=/dev/zero of=/dev/ram count=1440 bs=1024
if: input file il va lire l'information là /dev/zero
of: output file il va écrire l'information là /dev/ram (normalement c'est un lien sur /dev/ram1)
count: block count
bs: block size...
Donc, je lui dis, écris moi des zéros dans le device ram et je veux que tu m'écrives des bloc de 1024 octets et ce 1440 fois... Ce qui donne la grosseur d'une disquette.
Une fois que c'est fait, je peux la formatter en ext2. Pour se faire j'utilise
mke2fsCode :
mke2fs -m 0 /dev/ram
mke2fs 1.23, 15-Aug-2001 for EXT2 FS 0.5b, 95/08/09
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
184 inodes, 1440 blocks
0 blocks (0.00%) reserved for the super user
First data block=1
1 block group
8192 blocks per group, 8192 fragments per group
184 inodes per group
Writing inode tables: done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 35 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
-m: pourcentage de nodes réservées pour le super user, comme c'est une disquette 0 % c'est suffisant.
Merveilleux, nous avons maintenant un beau système dans le ramdisk, mais pour être capable de travailler dedans et ajouter nos fichiers, il faudrait être capable de le monter comme un device (/dev/hd[a-d][0-9]).
C'est là que le module
loop nous sauve l'existence...
C'est dans la commande
mount que le
loop module est utilisé. Ici je suis root et je veux monter le ramdisk en l'attachant sur le répertoire tmp que je me suis crée.
Code :
mount /dev/ram ~/tmp -o loop
En vérifiant les mounts voici ce que nous avons (
mount):
Code :
[...]
/dev/ram on /root/tmp type ext2 (rw,loop=/dev/loop0)
[...]
Il est maintenant possible d'aller à l'intérieur du répertoire en faisant un
cd ~/tmp et de copier/créer des fichiers...
Dailleurs, il est maintenant un device comme si c'était un disque dur(floppy, zipdrive, etc)... Il va apparaître si je fais un
dfCode :
Filesystem 1k-blocks Used Available Use% Mounted on
[... Snip ...]
/dev/ram 1412 18 1394 2% /root/tmp
Une fois que mes fichiers sont copiés je peux prendre une photo des données grâce à
dd...
Mais avant, il faut faire un unmount de la ressource pour être capable de tout lire dedans, pour ça, il ne faut plus avoir d'applications qui accèdent à un fichier/répertoire dans la ressource...
Code :
unmount ~/tmp
Si ça écrit: "umount: /root/tmp: device is busy" c'est que tu as une application ou un shell qui est encore ouvert sur l'une des ressources dans le répertoire...
Avec la commande
dd tu vas être en mesure de créer une image de ce qui est contenu dans le ramdisk...
Code :
dd if=/dev/ram of=~/imgfloppy.bin count=1440 bs=1024
1440+0 records in
1440+0 records out
En passant fait attention car ces commandes sont exécutées comme
RooT, donc, prend garde de ne pas effacer ou écraser des fichiers...
Si tu fais un
ls -l tu devrais avoir un fichier qui s'appel
imgfloppy.bin qui occupe 1,474,560 octets.
Comme je disais tantôt tu peux faire un mount d'un fichier aussi, nous avons un fichier ici et si tu veux tester que tout est correct tu peux faire la commande suivante:
Code :
mount ~/imgfloppy.bin ~/tmp -o loop
Et tu vas être capable d'aller dans le répertoire comme c'était le cas tout à l'heure...
Je t'ai peint un exemple de l'utilisation du ramdisk(rd.o) et du loop(loop.o)... Comme tu peux monter une image d'un système de fichiers reconnu par linux(ext2 ou encore ISO9660 (Joliet compris)), ça peut être utilisé à toutes les sauces...
C'est que ce n'est pas tous les jours que tu as besoin d'avoir un ramdisk ou encore de faire un mount d'un fichier ISO ou autre... Donc, d'avoir un module que tu charges seulement au besoin c'est parfait, il ne te prendra pas de mémoire, sauf quand tu vas en avoir vraiment besoin... C'est pratique par exemple pour tester c'est quoi le
maudit pilote pour faire fonctionner la carte XYZ... Quand j'ai un doute par exemple pour du 3COM, je vais me compiler en module tous les pilotes de 3com. Au prochain démarrage je vais simplement les charger/décharger un par un pour trouver lequel fonctionne vraiment...
Sauf, que normalement tu compiles les modules que tu as seulement besoin... Sinon au démarrage tu as tout le temps un temps qui est perdu à faire la liste des modules qui peuvent êtres insérés dans le kernel... Donc, si tu as un tas de modules, par exemple, pour être capable de lire un format de disque qui va sur un ATARI 8-bit que tu as sacré le feu dedans et que tu sais pertinement que tu n'utiliseras pas. Tu n'as pas besoin de ce module là...
Certainement, que par défaut tu as une panoplie de modules qui sont chargés/existants pour absolument rien... Un autre exemple qui me vient en tête... Est-ce que tu as du SCSI ou encore du RAID chez toi, si c'est pas le cas, pas besoin de compiler et charger ce module là.
Aussi, si tu veux vraiment faire des tests, lis un peu sur la façon de faire la compilation du kernel et les différents pièges qui mènent au Kernel Panic(faut pas s'en faire au début tu risques d'en avoir pas mal). Je n'ai pas de sites malheureusement, car j'ai appris ça en lisant un livre qui expliquait comment faire pour se compiler son Kernel...
Bon je crois que ça fait le tour d'une couple d'exemples d'utilisation...