URL: https://linuxfr.org/forums/linux-embarque/posts/udev-m-en-veut Title: Udev m'en veut! :( Authors: Ginux Date: 2017年11月27日T15:05:35+01:00 License: CC By-SA Tags: udev, beaglebone, script_shell et debian Score: 0 Bonjour à tous, Je travaille sur un projet contenant une Beaglebone black sous Debian Jessie. Je suis en train de faire un script exécuté par Udev lors de l'insertion d'une carte μSD. (mon but à terme est de rediriger les logs sur la carte μSD à son insertion et de remettre les logs sur la mémoire interne au retrait.) la partie déjà écrite de ce script (la création d'un dossier vierge pour pouvoir y monter la carte) fonctionne très bien lorsqu'exécutée à la main... mais impossible d'en tirer quoi que ce soit lorsqu'il est exécuté par Udev. Voici le script en question: ```bash #!/bin/bash -xe # #Author: Jerome LEKIEFFRE #This script has been written for ARO Welding Technologies only # #This script creates the /media/sdcard folder in order to mount the sdcard in it #Error codes: # - 2 : /media/sdcard already exist but is not a directory # - 1 : Failed to create /media/sdcard/ logger -t SDCardscripts 'Entering /root/Scripts/PrepareSDCard.sh script' if [ -d /media/sdcard ]; then logger '/media/sdcard is already present. Deleting it.' && rm -rf /media/sdcard; elif [ -f /media/sdcard ]; then logger -t SDCardscripts 'A file /media/sdcard already exist! Stopping process, Please look in the /media directory and take a decision with it content' exit 2 else logger -t SDCardscripts '/media/sdcard does not exist creating a new one' fi mkdir -p /media/sdcard if [ $? -eq 0 ];then logger -t SDCardscripts '/media/sdcard directory successfully created'; else logger -t SDCardscripts 'Failed to create /media/sdcard directory' exit 1; fi logger -t SDCardscripts 'Leaving /root/Scripts/PrepareSDCard.sh script' ``` Lorsque j'exécute le script à la main, il fonctionne à merveille, quelle que soit la condition (avec un dossier déjà présent, avec un fichier du même nom,...) Mais quand Udev doit le faire, voici ce que j'obtiens en logs: ```log Nov 27 13:53:49 undefined kernel: [ 903.988337] mmc0: card 0007 removed Nov 27 13:53:50 undefined kernel: [ 904.645474] mmc0: host does not support reading read-only switch, assuming write-enable Nov 27 13:53:50 undefined kernel: [ 904.648883] mmc0: new high speed SDHC card at address 0007 Nov 27 13:53:50 undefined kernel: [ 904.658300] mmcblk0: mmc0:0007 SD08G 7.42 GiB Nov 27 13:53:50 undefined kernel: [ 904.660093] mmcblk0: p1 Nov 27 13:53:50 undefined SDCardscripts: Entering /root/Scripts/PrepareSDCard.sh script Nov 27 13:53:50 undefined SDCardscripts: /media/sdcard does not exist creating a new one Nov 27 13:53:50 undefined systemd-udevd[1951]: Process '/root/Scripts/PrepareSDCard.sh' failed with exit code 1. ``` Donc pour résumer, mon script arrive à créer le dossier (et donc je suis ensuite capable de monter la carte μSD) quand je l'exécute à la main, mais il semble planter à la création du dossier lorsque Udev le lance... J'ai posé la question sur d'autres forums mais j'avoue n'avoir trouvé aucune réponse à ce jour à ce problème étrange. Cela fais près de deux semaines que je m'arrache les cheveux là dessus... On m'as déjà demandé pourquoi avoir un rm puis un mkdir, c'est parce que le système peut interagir avec la carte μSD automatiquement, sans se demander si elle es présente ou non, il créé un dossier /media/sdcard dans lequel il écris des fichiers... et je le fais aussi parce que la Beagle se trouve dans une armoire électrique sous très haute tension. il est donc inconcevable d'enlever la carte μSD à chaud, et l'armoire ne s’arrête que lorsqu'on coupe le courant à l'entrée... donc la Beagle n’exécute jamais de phase d’extinction (donc ne démonte jamais la carte μSD...) Si vous êtes un mordu de Udev, ou non, mais dans tous les cas si vous avez une idée... même débile... Je suis persuadé que l'erreur se situe entre le siège et le clavier mais je ne trouve rien...