Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[TIP] Udev et fstab simplifié
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index French
View previous topic :: View next topic  
Author Message
[vector]
Apprentice
Apprentice


Joined: 02 Nov 2004
Posts: 170
Location: France, Le Havre

PostPosted: Mon Feb 21, 2005 5:44 pm    Post subject: [TIP] Udev et fstab simplifié Reply with quote

Suite à mes problèmes d'ordre de disque, j'ai résolu le problème grâce aux règles udev et qui permet en même temps de simplifier le fstab. Je sais pas si ça peut servir à quelqu'un mais je le donne quand même. :wink:

Je vais donc donner comme exemple mon cas, c'est très facile ensuite d'adapter.


  1. Introduction
    Mon disque-dur se présente à l'origine comme suit :

    • /dev/sda1 (ext2) > /boot
    • /dev/sda2 (swap) > swap
    • /dev/sda3 (ext3) > /
    • /dev/sda5 (ext3) > /home
    • /dev/sda6 (fat32) > /mnt/win


    Cependant, j'ai un fstab qui est :
    Code:

    /dev/boot   /boot      ext3      noauto,noatime      1 1
    /dev/root   /      ext3      noatime      0 0
    /dev/swap   none      swap      sw      0 0
    /dev/home   /home      ext3      noatime      0 0
    /dev/win   /mnt/win   vfat      noatime      0 0


    Nous allons donc voir comment avec udev obtenir un fstab de ce type.

  2. Recherche des infos de périphérique

    Afin de pouvoir identifier de façon unique un disque, il faut récupérer des infos dessus, pour cela si le disque est sda, on execute :
    Code:

    udevinfo -a -p /block/sda


    Ce qui va renvoyer :
    Code:

     looking at class device '/sys/block/sda':
        SYSFS{dev}="8:48"
        SYSFS{range}="16"
        SYSFS{removable}="0"
        SYSFS{size}="586114704"
        SYSFS{stat}="     136      127      284      158        0        0        0        0        0      158      158"

    follow the class device's "device"
      looking at the device chain at '/sys/devices/pci0000:00/0000:00:1f.2/host3/3:0:0:0':
        BUS="scsi"
        ID="3:0:0:0"
        SYSFS{detach_state}="0"
        SYSFS{device_blocked}="0"
        SYSFS{model}="Maxtor 6B300S0  "
        SYSFS{queue_depth}="1"
        SYSFS{rev}="BANC"
        SYSFS{scsi_level}="6"
        SYSFS{state}="running"
        SYSFS{timeout}="30"
        SYSFS{type}="0"
        SYSFS{vendor}="ATA     "

      looking at the device chain at '/sys/devices/pci0000:00/0000:00:1f.2/host3':
        BUS=""
        ID="host3"
        SYSFS{detach_state}="0"

      looking at the device chain at '/sys/devices/pci0000:00/0000:00:1f.2':
        BUS="pci"
        ID="0000:00:1f.2"
        SYSFS{class}="0x01018f"
        SYSFS{detach_state}="0"
        SYSFS{device}="0x24d1"
        SYSFS{irq}="9"
        SYSFS{subsystem_device}="0x0157"
        SYSFS{subsystem_vendor}="0x1028"
        SYSFS{vendor}="0x8086"

      looking at the device chain at '/sys/devices/pci0000:00':
        BUS=""
        ID="pci0000:00"
        SYSFS{detach_state}="0"


    La ligne SYSFS{model}="Maxtor 6B300S0 " est la plus interessante, sachant que c'est le seul disque-dur de ce type que je possède, cette ligne me permettra de l'identifier facilement et de façon unique.


  3. Création de la règle udev
    Les règles udev personnalisées sont écrire dans le fichier /etc/udev/rules.d/10-udev.rules. En effet, udev lit les règles dans l'ordre ordinal du nom des fichier, pour être sur que nos règles seront lues en premier, on le nomme en commençant par 10 (le fichier de règles par défaut débute par 50).

    On peut donc inscrire la règle :
    Code:

    BUS="scsi", SYSFS{model}="Maxtor 6B300S0  ", NAME="disks/sata%n", SYMLINK="sda%n"


    On doit mettre en relation BUS avec l'information SYSFS : ici SYSFS{model} est affiché lors de la remontée vers SCSI, donc on met BUS="scsi".

    NAME est le nom du périphérique. Ce disque sera donc accessible via /dev/disks/sata%n et /dev/sda%n (pour garder une compatibilité) sachant que %n est le numéro que le numéro attribue à chaque partition.

    Pour des infos plus précises sur udev, voir ce site ou man udev. :D

  4. Définir un nom précis pour chaque partition
    Notre but est d'obtenir un fstab plus simple, voici les régles udev que l'on devra utiliser :
    Code:

    # Règles pour nommer les partitions
    BUS="scsi", SYSFS{model}="Maxtor 6B300S0  ", KERNEL="*1", NAME="boot", SYMLINK="sda1" # sda1 donc KERNEL="*1"
    BUS="scsi", SYSFS{model}="Maxtor 6B300S0  ", KERNEL="*2", NAME="swap", SYMLINK="sda2" # sda2 donc KERNEL="*2"
    BUS="scsi", SYSFS{model}="Maxtor 6B300S0  ", KERNEL="*3", NAME="root", SYMLINK="sda3" # ...
    BUS="scsi", SYSFS{model}="Maxtor 6B300S0  ", KERNEL="*5", NAME="home", SYMLINK="sda5"
    BUS="scsi", SYSFS{model}="Maxtor 6B300S0  ", KERNEL="*6", NAME="win", SYMLINK="sda6"

    # Règle par défaut
    BUS="scsi", SYSFS{model}="Maxtor 6B300S0  ", NAME="disks/sata%n", SYMLINK="sda%n"


    KERNEL permet de sélectionner les périphériques en fonction du nom que leur donne le noyau. Les partitions seront donc nommées *x avec x un entier.

    Puisque nous reprenons la établie plus haut, nous sélectionnons le bon disque dur, avec la ligne KERNEL nous sélectionons la bonne partition. La règle par défaut est là pour rendre le disque accessible dans son ensemble dans /dev/disks.

    Ainsi, quand au démarrage, udev attribura à la première partition le nom boot, la deuxième swap...

  5. Conclusion

    Chaque disque est disponible dans /dev/disks ou /dev/[h,s]d[a-z], ce qui est utilise pour fdisk ou autres.

    Chaque partition est accessible par son nom : /dev/boot, /dev/root, /dev/swap... ou par le nom classique pour garder une certaine compatibilité (pour l'enlever, il suffit d'enlever les SYMLINK).

    Vous obtenez donc des disques beaucoup plus facilement repérables. :)


S'il y a des suggestions, des erreurs, ou des passages pas clair ^^...
_________________
[Gentoo 2.6.10-r6 + WinXP] - [Gentoo 2.6.10-r9 + Win98]
Admon - Dernière capture d'écran - Jabber : vector@jabber.fr
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index French All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum