bash programming
hi all!
i'm trying to write a script that "insmod" a kernel module i wrote and then create the dev file in the /dev/ directory. once my module is loaded, he has an entry in the /proc/modules and /proc/devices files. So, I want to get the major # of the device specified in the /proc/devices file. Here's my script:
#!/bin/bash
DEVICE_FILE_NAME="/dev/ioaccess"
DEVICE_PROC_NAME="ioperm"
CONFIG_FILE="/etc/ioperm.conf"
tput reset
echo Installation du module ioperm.o...
insmod ioperm.o &> /dev/null
if [ "$?" = "0" ]; then
echo chargement du module réussi
else
echo erreur lors du chargement du module
echo
echo script terminé...
exit
fi
echo Cherche le numéro de device attribué par insmod...
grep $DEVICE_PROC_NAME /proc/devices > $CONFIG_FILE
echo Le fichier de configuration $CONFIG_FILE a été mis à jour
conf=$(cat $CONFIG_FILE)
echo conf=$conf
num=$(expr substr $conf 1 3)
echo Le numero du device est $num
echo Création du fichier device...
rm -f $DEVICE_FILE_NAME
mknod $DEVICE_FILE_NAME c $num 0
chmod 666 $DEVICE_FILE_NAME
echo Tout est ok... script terminé!
the config file will be use by programs accessing the driver. The variable 'conf' contain the config line for my device file(ex.: "253 ioperm"). I have to take the number at the beginning(253) and use it with mknod. When i execute it, it says that i made a typo error in the line -> num=$(expr substr $conf 1 3). i don't understand why. this line works if i replace $conf by another normal string variable like $CONFIG_FILE.
If someone as an idea on how to solve it or even an other way for retrieving the major # of a driver in /proc/devices, please let me know.
|