IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Raspberry Pi Discussion :

Monter automatiquement une partition lors de l'insertion dans la raspberry d'une clef usb !


Sujet :

Raspberry Pi

  1. #1
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 379
    Points : 19 060
    Points
    19 060
    Par défaut Monter automatiquement une partition lors de l'insertion dans la raspberry d'une clef usb !
    Salut à tous.

    Je fais ce test avec ma Raspberry Pi 3+, sous raspbian.

    Je désire, à chaque fois que j'insère ma clef usb dans la raspberry, que le montage des partitions "/boot" et "/rootfs" se fassent automatiquement.
    C'est bien plus pratique que de le faire manuellement à chaque fois.

    Voici les caractéristiques de ma clef usb :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    /etc/udev/rules.d> lsusb
    Bus 001 Device 004: ID 0bc2:61b3 Seagate RSS LLC
    Bus 001 Device 012: ID 18a5:0302 Verbatim, Ltd Flash Drive
    Bus 001 Device 005: ID 0424:7800 Standard Microsystems Corp.
    Bus 001 Device 003: ID 0424:2514 Standard Microsystems Corp. USB 2.0 Hub
    Bus 001 Device 002: ID 0424:2514 Standard Microsystems Corp. USB 2.0 Hub
    Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
    /etc/udev/rules.d>
    La ligne qui nous concerne est la deuxième : "Verbatim, Ltd Flash Drive".

    Après l'insertion de la clef usb dans la raspberry, voici ce que j'obtiens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    /etc/udev/rules.d> blkid
    /dev/sda1: LABEL="boot" UUID="13C6-2676" TYPE="vfat" PARTUUID="9cba179a-01"
    /dev/sda2: UUID="037616fd-28fe-4652-8248-2042ea30b929" TYPE="ext4" PARTUUID="9cba179a-02"
    /dev/sdb1: LABEL="boot" UUID="D332-A79C" TYPE="vfat" PARTUUID="12345678-01"
    /dev/sdb2: LABEL="rootfs" UUID="31688870-9e02-4182-8cda-25195c5a4739" TYPE="ext4" PARTUUID="12345678-02"
    /etc/udev/rules.d>
    Il s'agit des périphériques "/dev/sdb1" et "/dev/sdb2". Ce sont ses périphériques sur lesquelles je travaille.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    /etc/udev/rules.d> df
    Sys. de fichiers blocs de 1K Utilisé Disponible Uti% Monté sur
    /dev/root           16453544 4913708   10813268  32% /
    devtmpfs              470112       0     470112   0% /dev
    tmpfs                 474720       0     474720   0% /dev/shm
    tmpfs                 474720   12620     462100   3% /run
    tmpfs                   5120       4       5116   1% /run/lock
    tmpfs                 474720       0     474720   0% /sys/fs/cgroup
    tmpfs                  10240      12      10228   1% /tmp
    tmpfs                  10240     296       9944   3% /var/log
    tmpfs                  10240       0      10240   0% /var/tmp
    /dev/sda1              42137   22499      19638  54% /boot
    tmpfs                  94944       0      94944   0% /run/user/1000
    tmpfs                  94944       0      94944   0% /run/user/0
    tmpfs                  94944       0      94944   0% /run/user/109
    /etc/udev/rules.d>
    Comme on le constate, ils n'ont pas été montés.

    Voici la règle que j'ai ajouté : "10-my-usb-key.rules".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    /etc/udev/rules.d> la
    total 20
    drwxr-xr-x 2 root root 4096 sept. 19 00:04 .
    drwxr-xr-x 4 root root 4096 sept. 17 13:22 ..
    -rw-r--r-- 1 root root  733 sept. 19 00:04 10-my-usb-key.rules
    -rw-r--r-- 1 root root  328 août  30 13:31 72-static-name.rules
    -rw-r--r-- 1 root root 1028 nov.  27  2017 99-com.rules
    /etc/udev/rules.d>
    Et voici son contenu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #
    # Mount the device
    #
    KERNEL=="sd[b-z]2",SUBSYSTEM=="block",ATTRS{idVendor}=="18a5",ATTRS{idProduct}=="0302",ACTION=="add",\
    RUN+="/bin/mount -t auto -o defaults,user,noexec /dev/%k /mnt/rootfs",SYMLINK+="my_usb_key_2"
    #
    # Clean up after removal
    #
    KERNEL=="sd[b-z]2",SUBSYSTEM=="block",ATTRS{idVendor}=="18a5",ATTRS{idProduct}=="0302",ACTION=="remove",\
    RUN+="/bin/umount -l /dev/%k"
    ~
    J'indique ici que la seconde règle, celle du montage de la partition "rootfs".
    A priori, je pense que j'ai correctement inséré les bons paramètres.
    A tout hasard, voici le compte-rendu de ce périphérique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    /etc/udev/rules.d> udevadm info -a /dev/sdb2
    
    Udevadm info starts with the device specified by the devpath and then
    walks up the chain of parent devices. It prints for every device
    found, all possible attributes in the udev rules key format.
    A rule to match, can be composed by the attributes of the device
    and the attributes from one single parent device.
    
      looking at device '/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.1/1-1.1.2/1-1.1.2:1.0/host1/target1:0:0/1:0:0:0/block/sdb/sdb2':
        KERNEL=="sdb2"
        SUBSYSTEM=="block"
        DRIVER==""
        ATTR{alignment_offset}=="0"
        ATTR{discard_alignment}=="0"
        ATTR{inflight}=="       0        0"
        ATTR{partition}=="2"
        ATTR{ro}=="0"
        ATTR{size}=="16777216"
        ATTR{start}=="98304"
        ATTR{stat}=="     187       87    13220     4350        3        0       24      770        0     4280     5120"
    
      looking at parent device '/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.1/1-1.1.2/1-1.1.2:1.0/host1/target1:0:0/1:0:0:0/block/sdb':
        KERNELS=="sdb"
        SUBSYSTEMS=="block"
        DRIVERS==""
        ATTRS{alignment_offset}=="0"
        ATTRS{capability}=="51"
        ATTRS{discard_alignment}=="0"
        ATTRS{events}=="media_change"
        ATTRS{events_async}==""
        ATTRS{events_poll_msecs}=="-1"
        ATTRS{ext_range}=="256"
        ATTRS{inflight}=="       0        0"
        ATTRS{range}=="16"
        ATTRS{removable}=="1"
        ATTRS{ro}=="0"
        ATTRS{size}=="120918016"
        ATTRS{stat}=="     354      100    18246     9740        3        0       24      770        0     6580    10510"
    
      looking at parent device '/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.1/1-1.1.2/1-1.1.2:1.0/host1/target1:0:0/1:0:0:0':
        KERNELS=="1:0:0:0"
        SUBSYSTEMS=="scsi"
        DRIVERS=="sd"
        ATTRS{device_blocked}=="0"
        ATTRS{device_busy}=="0"
        ATTRS{eh_timeout}=="10"
        ATTRS{evt_capacity_change_reported}=="0"
        ATTRS{evt_inquiry_change_reported}=="0"
        ATTRS{evt_lun_change_reported}=="0"
        ATTRS{evt_media_change}=="0"
        ATTRS{evt_mode_parameter_change_reported}=="0"
        ATTRS{evt_soft_threshold_reached}=="0"
        ATTRS{inquiry}==""
        ATTRS{iocounterbits}=="32"
        ATTRS{iodone_cnt}=="0x52e"
        ATTRS{ioerr_cnt}=="0x2"
        ATTRS{iorequest_cnt}=="0x52e"
        ATTRS{max_sectors}=="240"
        ATTRS{model}=="STORE N GO      "
        ATTRS{queue_depth}=="1"
        ATTRS{queue_type}=="none"
        ATTRS{rev}=="5.00"
        ATTRS{scsi_level}=="5"
        ATTRS{state}=="running"
        ATTRS{timeout}=="30"
        ATTRS{type}=="0"
        ATTRS{vendor}=="Verbatim"
    
      looking at parent device '/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.1/1-1.1.2/1-1.1.2:1.0/host1/target1:0:0':
        KERNELS=="target1:0:0"
        SUBSYSTEMS=="scsi"
        DRIVERS==""
    
      looking at parent device '/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.1/1-1.1.2/1-1.1.2:1.0/host1':
        KERNELS=="host1"
        SUBSYSTEMS=="scsi"
        DRIVERS==""
    
      looking at parent device '/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.1/1-1.1.2/1-1.1.2:1.0':
        KERNELS=="1-1.1.2:1.0"
        SUBSYSTEMS=="usb"
        DRIVERS=="usb-storage"
        ATTRS{authorized}=="1"
        ATTRS{bAlternateSetting}==" 0"
        ATTRS{bInterfaceClass}=="08"
        ATTRS{bInterfaceNumber}=="00"
        ATTRS{bInterfaceProtocol}=="50"
        ATTRS{bInterfaceSubClass}=="06"
        ATTRS{bNumEndpoints}=="02"
        ATTRS{supports_autosuspend}=="1"
    
      looking at parent device '/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.1/1-1.1.2':
        KERNELS=="1-1.1.2"
        SUBSYSTEMS=="usb"
        DRIVERS=="usb"
        ATTRS{authorized}=="1"
        ATTRS{avoid_reset_quirk}=="0"
        ATTRS{bConfigurationValue}=="1"
        ATTRS{bDeviceClass}=="00"
        ATTRS{bDeviceProtocol}=="00"
        ATTRS{bDeviceSubClass}=="00"
        ATTRS{bMaxPacketSize0}=="64"
        ATTRS{bMaxPower}=="200mA"
        ATTRS{bNumConfigurations}=="1"
        ATTRS{bNumInterfaces}==" 1"
        ATTRS{bcdDevice}=="0100"
        ATTRS{bmAttributes}=="80"
        ATTRS{busnum}=="1"
        ATTRS{configuration}==""
        ATTRS{devnum}=="12"
        ATTRS{devpath}=="1.1.2"
        ATTRS{devspec}=="  (null)"
        ATTRS{idProduct}=="0302"
        ATTRS{idVendor}=="18a5"
        ATTRS{ltm_capable}=="no"
        ATTRS{manufacturer}=="Verbatim"
        ATTRS{maxchild}=="0"
        ATTRS{product}=="STORE N GO"
        ATTRS{quirks}=="0x0"
        ATTRS{removable}=="removable"
        ATTRS{serial}=="07013A109B3D5264"
        ATTRS{speed}=="480"
        ATTRS{urbnum}=="4361"
        ATTRS{version}==" 2.00"
    
      looking at parent device '/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.1':
        KERNELS=="1-1.1"
        SUBSYSTEMS=="usb"
        DRIVERS=="usb"
        ATTRS{authorized}=="1"
        ATTRS{avoid_reset_quirk}=="0"
        ATTRS{bConfigurationValue}=="1"
        ATTRS{bDeviceClass}=="09"
        ATTRS{bDeviceProtocol}=="02"
        ATTRS{bDeviceSubClass}=="00"
        ATTRS{bMaxPacketSize0}=="64"
        ATTRS{bMaxPower}=="2mA"
        ATTRS{bNumConfigurations}=="1"
        ATTRS{bNumInterfaces}==" 1"
        ATTRS{bcdDevice}=="0bb3"
        ATTRS{bmAttributes}=="e0"
        ATTRS{busnum}=="1"
        ATTRS{configuration}==""
        ATTRS{devnum}=="3"
        ATTRS{devpath}=="1.1"
        ATTRS{idProduct}=="2514"
        ATTRS{idVendor}=="0424"
        ATTRS{ltm_capable}=="no"
        ATTRS{maxchild}=="3"
        ATTRS{quirks}=="0x0"
        ATTRS{removable}=="fixed"
        ATTRS{speed}=="480"
        ATTRS{urbnum}=="190"
        ATTRS{version}==" 2.00"
    
      looking at parent device '/devices/platform/soc/3f980000.usb/usb1/1-1':
        KERNELS=="1-1"
        SUBSYSTEMS=="usb"
        DRIVERS=="usb"
        ATTRS{authorized}=="1"
        ATTRS{avoid_reset_quirk}=="0"
        ATTRS{bConfigurationValue}=="1"
        ATTRS{bDeviceClass}=="09"
        ATTRS{bDeviceProtocol}=="02"
        ATTRS{bDeviceSubClass}=="00"
        ATTRS{bMaxPacketSize0}=="64"
        ATTRS{bMaxPower}=="2mA"
        ATTRS{bNumConfigurations}=="1"
        ATTRS{bNumInterfaces}==" 1"
        ATTRS{bcdDevice}=="0bb3"
        ATTRS{bmAttributes}=="e0"
        ATTRS{busnum}=="1"
        ATTRS{configuration}==""
        ATTRS{devnum}=="2"
        ATTRS{devpath}=="1"
        ATTRS{idProduct}=="2514"
        ATTRS{idVendor}=="0424"
        ATTRS{ltm_capable}=="no"
        ATTRS{maxchild}=="4"
        ATTRS{quirks}=="0x0"
        ATTRS{removable}=="unknown"
        ATTRS{speed}=="480"
        ATTRS{urbnum}=="49"
        ATTRS{version}==" 2.00"
    
      looking at parent device '/devices/platform/soc/3f980000.usb/usb1':
        KERNELS=="usb1"
        SUBSYSTEMS=="usb"
        DRIVERS=="usb"
        ATTRS{authorized}=="1"
        ATTRS{authorized_default}=="1"
        ATTRS{avoid_reset_quirk}=="0"
        ATTRS{bConfigurationValue}=="1"
        ATTRS{bDeviceClass}=="09"
        ATTRS{bDeviceProtocol}=="01"
        ATTRS{bDeviceSubClass}=="00"
        ATTRS{bMaxPacketSize0}=="64"
        ATTRS{bMaxPower}=="0mA"
        ATTRS{bNumConfigurations}=="1"
        ATTRS{bNumInterfaces}==" 1"
        ATTRS{bcdDevice}=="0414"
        ATTRS{bmAttributes}=="e0"
        ATTRS{busnum}=="1"
        ATTRS{configuration}==""
        ATTRS{devnum}=="1"
        ATTRS{devpath}=="0"
        ATTRS{idProduct}=="0002"
        ATTRS{idVendor}=="1d6b"
        ATTRS{interface_authorized_default}=="1"
        ATTRS{ltm_capable}=="no"
        ATTRS{manufacturer}=="Linux 4.14.69-v7+ dwc_otg_hcd"
        ATTRS{maxchild}=="1"
        ATTRS{product}=="DWC OTG Controller"
        ATTRS{quirks}=="0x0"
        ATTRS{removable}=="unknown"
        ATTRS{serial}=="3f980000.usb"
        ATTRS{speed}=="480"
        ATTRS{urbnum}=="31"
        ATTRS{version}==" 2.00"
    
      looking at parent device '/devices/platform/soc/3f980000.usb':
        KERNELS=="3f980000.usb"
        SUBSYSTEMS=="platform"
        DRIVERS=="dwc_otg"
        ATTRS{busconnected}=="Bus Connected = 0x1"
        ATTRS{buspower}=="Bus Power = 0x1"
        ATTRS{bussuspend}=="Bus Suspend = 0x0"
        ATTRS{devspeed}=="Device Speed = 0x0"
        ATTRS{driver_override}=="(null)"
        ATTRS{enumspeed}=="Device Enumeration Speed = 0x1"
        ATTRS{fr_interval}=="Frame Interval = 0x1d4b"
        ATTRS{ggpio}=="GGPIO = 0x00000000"
        ATTRS{gnptxfsiz}=="GNPTXFSIZ = 0x01000306"
        ATTRS{gotgctl}=="GOTGCTL = 0x001c0000"
        ATTRS{gpvndctl}=="GPVNDCTL = 0x00000000"
        ATTRS{grxfsiz}=="GRXFSIZ = 0x00000306"
        ATTRS{gsnpsid}=="GSNPSID = 0x4f54280a"
        ATTRS{guid}=="GUID = 0x2708a000"
        ATTRS{gusbcfg}=="GUSBCFG = 0x20001700"
        ATTRS{hcd_frrem}=="HCD Dump Frame Remaining"
        ATTRS{hcddump}=="HCD Dump"
        ATTRS{hnp}=="HstNegScs = 0x0"
        ATTRS{hnpcapable}=="HNPCapable = 0x1"
        ATTRS{hprt0}=="HPRT0 = 0x00001005"
        ATTRS{hptxfsiz}=="HPTXFSIZ = 0x02000406"
        ATTRS{hsic_connect}=="HSIC Connect = 0x1"
        ATTRS{inv_sel_hsic}=="Invert Select HSIC = 0x0"
        ATTRS{mode}=="Mode = 0x1"
        ATTRS{mode_ch_tim_en}=="Mode Change Ready Timer Enable = 0x0"
        ATTRS{rd_reg_test}=="Time to read GNPTXFSIZ reg 10000000 times: 870 msecs (87 jiffies)"
        ATTRS{regdump}=="Register Dump"
        ATTRS{regoffset}=="0xffffffff"
        ATTRS{regvalue}=="invalid offset"
        ATTRS{rem_wakeup_pwrdn}==""
        ATTRS{remote_wakeup}=="Remote Wakeup Sig = 0 Enabled = 0 LPM Remote Wakeup = 0"
        ATTRS{spramdump}=="SPRAM Dump"
        ATTRS{srp}=="SesReqScs = 0x0"
        ATTRS{srpcapable}=="SRPCapable = 0x1"
        ATTRS{wr_reg_test}=="Time to write GNPTXFSIZ reg 10000000 times: 300 msecs (30 jiffies)"
    
      looking at parent device '/devices/platform/soc':
        KERNELS=="soc"
        SUBSYSTEMS=="platform"
        DRIVERS==""
        ATTRS{driver_override}=="(null)"
    
      looking at parent device '/devices/platform':
        KERNELS=="platform"
        SUBSYSTEMS==""
        DRIVERS==""
    
    /etc/udev/rules.d>
    Et voici le lien symbolique :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    crw-------  1 root root     10,  59 sept. 18 23:04 memory_bandwidth
    drwxrwxrwt  2 root root          40 janv.  1  1970 mqueue
    lrwxrwxrwx  1 root root           4 sept. 19 00:01 my_usb_key_2 -> sdb2
    drwxr-xr-x  2 root root          60 sept. 18 23:04 net
    crw-------  1 root root     10,  61 sept. 18 23:04 network_latency
    Comme on peut le constater, le lien symbolique 'my_usb_key' s'affiche correctement.
    Afin de vérifier si le lien fonctionne correctement, j'ai monté la partition et j'ai bien obtenu son contenu.

    Tout à l'air de fonctionner, sauf le montage de la partition "rootfs".
    J'ai fait des tas de tests, même en remplaçant la commande "mount" par un programme "test.sh", qui ne se déclenche pas.

    Qu'est-ce que j'ai mal fait ?

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  2. #2
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 379
    Points : 19 060
    Points
    19 060
    Par défaut
    Salut à tous.

    J'ai changer ma façon d'écrire ma règle "my_usb_key".
    Voici le contenu de "10-my-usb-key.rules" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    #
    # Identification de la clef usb
    #
    SUBSYSTEM!="block",ATTRS{idVendor}!="18a5",ATTRS{idProduct}!="0302",ATTRS{serial}!="07013A109B3D5264",GOTO="my_usb_key_end"
    #
    # Ajout des liens symboliques
    #
    ACTION=="add",KERNEL=="sd[b-z]1",SYMLINK+="my_usb_key_1"
    ACTION=="add",KERNEL=="sd[b-z]2",SYMLINK+="my_usb_key_2"
    #
    # Montage des partitions
    #
    ACTION=="add",KERNEL=="sd[b-z]1",RUN+="/bin/mount -o default /dev/%k /mnt/boot"
    ACTION=="add",KERNEL=="sd[b-z]2",RUN+="/bin/mount -o default /dev/%k /mnt/rootfs"
    #
    # traitements
    #
    ACTION=="add",KERNEL=="sd[b-z]1",RUN+="/root/test.sh"
    ACTION=="add",KERNEL=="sd[b-z]2",RUN+="/root/test.sh"
    #
    # Démontage des partitions
    #
    ACTION=="remove",KERNEL=="sd[b-z]1",RUN+="/bin/umount -l /mnt/boot"
    ACTION=="remove",KERNEL=="sd[b-z]2",RUN+="/bin/umount -l /mnt/rootfs"
    #
    #
    # fin de la règle "my_usb_key"
    #
    LABEL="my_usb_key_end"
    
    ~
    La première des choses que je fais, c'est d'identifier les caractéristiques de ma clef usb.
    Ensuite, j'ajoute un lien symbolique, puis je monte mes partitions et j'exécute un petit programme afin de connaitre les variables d'environnements.
    Et enfin je démonte mes partitions.

    Voici quelques résultats :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    ~> lsusb
    Bus 001 Device 004: ID 0bc2:61b3 Seagate RSS LLC
    Bus 001 Device 010: ID 18a5:0302 Verbatim, Ltd Flash Drive
    Bus 001 Device 005: ID 0424:7800 Standard Microsystems Corp.
    Bus 001 Device 003: ID 0424:2514 Standard Microsystems Corp. USB 2.0 Hub
    Bus 001 Device 002: ID 0424:2514 Standard Microsystems Corp. USB 2.0 Hub
    Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
    ~>
    ~> blkid
    /dev/sda1: LABEL="boot" UUID="13C6-2676" TYPE="vfat" PARTUUID="9cba179a-01"
    /dev/sda2: UUID="037616fd-28fe-4652-8248-2042ea30b929" TYPE="ext4" PARTUUID="9cba179a-02"
    /dev/sdb1: LABEL="boot" UUID="13C6-2676" TYPE="vfat" PARTUUID="12345678-01"
    /dev/sdb2: UUID="037616fd-28fe-4652-8248-2042ea30b929" TYPE="ext4" PARTUUID="12345678-02"
    ~>
    ~> df
    Sys. de fichiers blocs de 1K Utilisé Disponible Uti% Monté sur
    /dev/root           16453544 5038892   10688084  33% /
    devtmpfs              470112       0     470112   0% /dev
    tmpfs                 474720       0     474720   0% /dev/shm
    tmpfs                 474720   12588     462132   3% /run
    tmpfs                   5120       4       5116   1% /run/lock
    tmpfs                 474720       0     474720   0% /sys/fs/cgroup
    tmpfs                  10240      12      10228   1% /tmp
    tmpfs                  10240     304       9936   3% /var/log
    tmpfs                  10240       0      10240   0% /var/tmp
    /dev/sda1              42137   22499      19638  54% /boot
    tmpfs                  94944       0      94944   0% /run/user/0
    tmpfs                  94944       0      94944   0% /run/user/1000
    tmpfs                  94944       0      94944   0% /run/user/109
    ~>
    ~> la /dev/sdb*
    brw-rw---- 1 root disk 8, 16 sept. 20 05:21 /dev/sdb
    brw-rw---- 1 root disk 8, 17 sept. 20 05:21 /dev/sdb1
    brw-rw---- 1 root disk 8, 18 sept. 20 05:21 /dev/sdb2
    ~> la /dev/my*
    lrwxrwxrwx 1 root root 4 sept. 20 05:21 /dev/my_usb_key_1 -> sdb1
    lrwxrwxrwx 1 root root 4 sept. 20 05:21 /dev/my_usb_key_2 -> sdb2
    ~>
    Et voici le contenu de mon petit programme de nom "test.sh" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #!/bin/sh
    
    export PATH=/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:$PATH
    
    env >> /root/resultat
    
    exit
    ~
    Quelques remarques :
    1) le lien symbolique a bien été créé (my_usb_key) !

    2) le programme s'est bien exécuté et j'ai pu récupérer les variables d'environnements (contenu dans le fichier resultat) que voici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    ID_BUS=usb
    DEVNAME=/dev/sdb2
    ID_PART_TABLE_UUID=12345678
    ACTION=add
    ID_PART_ENTRY_UUID=12345678-02
    SEQNUM=1397
    USEC_INITIALIZED=1432313512
    ID_SERIAL_SHORT=07013A109B3D5264
    ID_USB_DRIVER=usb-storage
    ID_PART_ENTRY_SIZE=33554432
    TAGS=:systemd:
    MAJOR=8
    ID_TYPE=disk
    ID_FS_UUID_ENC=037616fd-28fe-4652-8248-2042ea30b929
    ID_INSTANCE=0:0
    DEVPATH=/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.1/1-1.1.2/1-1.1.2:1.0/host1/target1:0:0/1:0:0:0/block/sdb/sdb2
    ID_PART_TABLE_TYPE=dos
    ID_FS_UUID=037616fd-28fe-4652-8248-2042ea30b929
    ID_PART_ENTRY_SCHEME=dos
    ID_MODEL_ENC=STORE\x20N\x20GO\x20\x20\x20\x20\x20\x20
    ID_USB_INTERFACES=:080650:
    ID_PART_ENTRY_TYPE=0x83
    ID_MODEL=STORE_N_GO
    ID_FS_VERSION=1.0
    SUBSYSTEM=block
    DEVLINKS=/dev/my_usb_key_2 /dev/disk/by-id/usb-Verbatim_STORE_N_GO_07013A109B3D5264-0:0-part2 /dev/disk/by-path/platform-3f980000.usb-usb-0:1.1.2:1.0-scsi-0:0:0:0-part2 /dev/disk/by-partuuid/12345678-02 /dev/disk/by-uuid/037616fd-28fe-4652-8248-2042ea30b929
    ID_SERIAL=Verbatim_STORE_N_GO_07013A109B3D5264-0:0
    ID_MODEL_ID=0302
    PATH=/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    MINOR=18
    ID_FS_TYPE=ext4
    ID_PATH=platform-3f980000.usb-usb-0:1.1.2:1.0-scsi-0:0:0:0
    ID_VENDOR_ENC=Verbatim
    PARTN=2
    ID_PATH_TAG=platform-3f980000_usb-usb-0_1_1_2_1_0-scsi-0_0_0_0
    ID_PART_ENTRY_OFFSET=206848
    ID_PART_ENTRY_DISK=8:16
    ID_VENDOR=Verbatim
    PWD=/
    DEVTYPE=partition
    ID_USB_INTERFACE_NUM=00
    ID_PART_ENTRY_NUMBER=2
    ID_VENDOR_ID=18a5
    ID_FS_USAGE=filesystem
    ID_REVISION=5.00
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    ID_BUS=usb
    DEVNAME=/dev/sdb1
    ID_PART_TABLE_UUID=12345678
    ACTION=add
    ID_PART_ENTRY_UUID=12345678-01
    SEQNUM=1396
    USEC_INITIALIZED=1432339070
    ID_SERIAL_SHORT=07013A109B3D5264
    ID_USB_DRIVER=usb-storage
    ID_PART_ENTRY_SIZE=204800
    TAGS=:systemd:
    MAJOR=8
    ID_TYPE=disk
    ID_FS_UUID_ENC=13C6-2676
    ID_INSTANCE=0:0
    ID_FS_LABEL_ENC=boot
    DEVPATH=/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.1/1-1.1.2/1-1.1.2:1.0/host1/target1:0:0/1:0:0:0/block/sdb/sdb1
    ID_PART_TABLE_TYPE=dos
    ID_FS_UUID=13C6-2676
    ID_PART_ENTRY_SCHEME=dos
    ID_MODEL_ENC=STORE\x20N\x20GO\x20\x20\x20\x20\x20\x20
    ID_FS_LABEL=boot
    ID_USB_INTERFACES=:080650:
    ID_PART_ENTRY_TYPE=0xc
    ID_MODEL=STORE_N_GO
    ID_FS_VERSION=FAT32
    SUBSYSTEM=block
    DEVLINKS=/dev/disk/by-id/usb-Verbatim_STORE_N_GO_07013A109B3D5264-0:0-part1 /dev/disk/by-path/platform-3f980000.usb-usb-0:1.1.2:1.0-scsi-0:0:0:0-part1 /dev/disk/by-uuid/13C6-2676 /dev/disk/by-label/boot /dev/disk/by-partuuid/12345678-01 /dev/my_usb_key_1
    ID_SERIAL=Verbatim_STORE_N_GO_07013A109B3D5264-0:0
    ID_MODEL_ID=0302
    PATH=/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    MINOR=17
    ID_FS_TYPE=vfat
    ID_PATH=platform-3f980000.usb-usb-0:1.1.2:1.0-scsi-0:0:0:0
    ID_VENDOR_ENC=Verbatim
    PARTN=1
    ID_PATH_TAG=platform-3f980000_usb-usb-0_1_1_2_1_0-scsi-0_0_0_0
    ID_PART_ENTRY_OFFSET=2048
    ID_PART_ENTRY_DISK=8:16
    ID_VENDOR=Verbatim
    PWD=/
    DEVTYPE=partition
    ID_USB_INTERFACE_NUM=00
    ID_PART_ENTRY_NUMBER=1
    ID_VENDOR_ID=18a5
    ID_FS_USAGE=filesystem
    ID_REVISION=5.00
    3) comme on peut le voir, je n'ai toujours pas pu monter mes partitions, et je ne sais toujours pas pourquoi cela ne fonctionne pas.
    Mais la cause ne vient pas de la structure de ma règle car comme on le constate, j'obtiens bien le lien symbolique, ainsi que l'exécution du programme "test.sh".
    Or le montage se trouve justement entre ces deux traitements.

    Le compte-rendu du service "udev" est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    ~> systemctl status  udev
    ? systemd-udevd.service - udev Kernel Device Manager
       Loaded: loaded (/lib/systemd/system/systemd-udevd.service; static; vendor preset: enabled)
       Active: active (running) since Thu 2018-09-20 05:37:51 CEST; 1min 43s ago
         Docs: man:systemd-udevd.service(8)
               man:udev(7)
     Main PID: 1467 (systemd-udevd)
       Status: "Processing with 16 children at max"
       CGroup: /system.slice/systemd-udevd.service
               +-1467 /lib/systemd/systemd-udevd
    
    sept. 20 05:37:51 RaspberryPi systemd[1]: Starting udev Kernel Device Manager...
    sept. 20 05:37:51 RaspberryPi systemd[1]: Started udev Kernel Device Manager.
    sept. 20 05:38:05 RaspberryPi mtp-probe[1474]: checking bus 1, device 11: "/sys/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.1/1-1.1.2"
    sept. 20 05:38:13 RaspberryPi systemd-udevd[1480]: Process '/bin/mount -o default /dev/sdb1 /mnt/boot' failed with exit code 32.
    sept. 20 05:38:13 RaspberryPi systemd-udevd[1482]: Process '/bin/mount -o default /dev/sdb2 /mnt/rootfs' failed with exit code 32.
    sept. 20 05:49:00 RaspberryPi systemd-udevd[1583]: Process '/bin/umount -l /mnt/boot' failed with exit code 32.
    sept. 20 05:49:00 RaspberryPi systemd-udevd[1587]: Process '/bin/umount -l /mnt/rootfs' failed with exit code 32.
    ~>
    Comme on peut le voir, j'ai un code retour 32 (???), Aussi bien sur l'insertion de ma clef usb que sur son retrait de la raspberry.

    Est-ce que quelqu'un connait non pas la signification de cette erreur (code exit 32 = "mount failure") mais pourquoi elle se produit ?

    Cordialement.
    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  3. #3
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 379
    Points : 19 060
    Points
    19 060
    Par défaut
    Salut à tous.

    D'après ce que j'ai pu comprendre, ce n'est pas un bug de ma part, mais un problème avec le service UDEV de la version stretch.
    Voici un lien qui explique le problème :
    --> https://www.raspberrypi.org/forums/v...c.php?t=194557

    Comme indiqué en bas de ce sujet, j'ai modifié le fichier "/lib/systemd/system/systemd-udevd.service".
    J'ai remplacé "slave" par "shared" pour la variable "MountFlags" ==> ça ne fonctionne pas.
    J'ai mis la variable "MountFlags" en commentaire ==> ça ne fonctionne pas.
    J'ai déplacé ce fichier dans le répertoire "/etc/systemd/system/" et j'ai refait les même manipulations ==> ça ne fonctionne pas.

    J'ai bien redémarré le service "UDEV" après mes modification à chaque.

    Autre solution, j'ai ajouté quelques paramètres supplémentaires dans la ligne "MOUNT".
    Résultat : je n'ai plus d'erreurs dans le compte rendu du service "UDEV" ==> mais ça ne fonctionne toujours pas.

    --> https://stackoverflow.com/questions/...d-shell-script
    --> https://unix.stackexchange.com/quest...-does-not-work

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  4. #4
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 379
    Points : 19 060
    Points
    19 060
    Par défaut
    Salut à tous.

    J'ai dû faire une bêtise car maintenant cela fonctionne correctement. Voici l'astuce que j'ai utilisé.

    1) J'ai modifié le fichier "/lib/systemd/system/systemd-udevd.service" en modifiant la variable "MountFlags".
    Avant : "MountFlags=slave".
    Après : "MountFlags=shared".

    2) j'ai rechargé le service "udev".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    systemctl daemon-reload
    3) j'ai relancé le service "udev".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    systemctl restart udev.service
    4) je vérifie l'état du service "UDEV".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    systemctl status udev.service
    5) je vous communique, à nouveau, ma règle "10-my-usb-key.rules" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    #
    # Identification de la clef usb
    #
    SUBSYSTEM!="block",\
    ATTRS{idVendor}!="18a5",\
    ATTRS{idProduct}!="0302",\
    ATTRS{serial}!="07013A109B3D5264",\
    GOTO="my_usb_key_end"
    #
    # Paramètres
    #
    ACTION=="add",ENV{ID_OPTIONS}="defaults,auto"
    #
    # Ajout des liens symboliques
    #
    ACTION=="add",KERNEL=="sd[b-z]1",SYMLINK+="my_usb_key_1"
    ACTION=="add",KERNEL=="sd[b-z]2",SYMLINK+="my_usb_key_2"
    #
    # Montage des partitions
    #
    ACTION=="add",KERNEL=="sd[b-z]1",RUN+="/bin/mount -t $env{ID_FS_TYPE} -o $env{ID_OPTIONS} /dev/%k /mnt/boot"
    ACTION=="add",KERNEL=="sd[b-z]2",RUN+="/bin/mount -t $env{ID_FS_TYPE} -o $env{ID_OPTIONS} /dev/%k /mnt/rootfs"
    #
    # traitements
    #
    ACTION=="add",KERNEL=="sd[b-z]1",RUN+="/root/test.sh"
    ACTION=="add",KERNEL=="sd[b-z]2",RUN+="/root/test.sh"
    #
    # Démontage des partitions
    #
    ACTION=="remove",KERNEL=="sd[b-z]1",RUN+="/bin/umount /mnt/boot"
    ACTION=="remove",KERNEL=="sd[b-z]2",RUN+="/bin/umount /mnt/rootfs"
    #
    #
    # fin de la règle "my_usb_key"
    #
    LABEL="my_usb_key_end"
    
    ~
    6) j'insère ma clef usb dans la raspberry.

    7) je consulte le résultat par la commande "df" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    /> df
    Sys. de fichiers blocs de 1K Utilisé Disponible Uti% Monté sur
    /dev/root           16453544 5276784   10450192  34% /
    devtmpfs              470112       0     470112   0% /dev
    tmpfs                 474720       0     474720   0% /dev/shm
    tmpfs                 474720   14260     460460   4% /run
    tmpfs                   5120       4       5116   1% /run/lock
    tmpfs                 474720       0     474720   0% /sys/fs/cgroup
    tmpfs                  10240      12      10228   1% /tmp
    tmpfs                  10240     252       9988   3% /var/log
    tmpfs                  10240       0      10240   0% /var/tmp
    /dev/sda1              42137   22499      19638  54% /boot
    tmpfs                  94944       0      94944   0% /run/user/0
    tmpfs                  94944       0      94944   0% /run/user/1000
    tmpfs                  94944       0      94944   0% /run/user/109
    /dev/sdb2           16453544 4913780   10813196  32% /mnt/rootfs
    /dev/sdb1              42137   22499      19638  54% /mnt/boot
    />
    Comme on peut le voir, ce que j'ai mis en rouge, nous avons bien maintenant les deux partitions (/dev/sdb) montés sur les bons répertoires.

    Je considère que mon problème est résolu.

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 7
    Dernier message: 30/03/2016, 09h56
  2. [AC-2007] Problème de format de date érronné lors de l'insertion dans une table
    Par dumas.blr dans le forum VBA Access
    Réponses: 3
    Dernier message: 07/04/2011, 15h32
  3. Remplacer une valeur lors d'un Insert . . . Select
    Par yobogs dans le forum Requêtes
    Réponses: 2
    Dernier message: 15/11/2007, 15h30
  4. extraction d'une table lors d'un insert
    Par biboup dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 12/07/2007, 15h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo