automount / desmontando o dispositivo mmc no linux-kernel 2.6

0

Estou desenvolvendo um aplicativo no dispositivo Linux kernel embarcado e o processo de montagem e desmontagem automática não funciona corretamente.

por exemplo. verificação dmesg show kernel corretamente determinar inserção / remoção do dispositivo MMC (eu também posso verificar isso via / sys / blk / mmcblk0), após a inicialização com o MMC no slot, o MMC é inicialmente montado em / mnt / sdcard, mas depois de remover o MMC do slot , este diretório ainda é válido sem dados dentro.

(por favor, considere remover o MMC sem umount é um dos meus casos de teste e o sistema deve desmontar automaticamente após um momento nessa situação), também após a reinserção do MMC, ele não será montado novamente (verificando a inserção do MMC do kernel do dmesg show detect) ).

meu dispositivo usa o busybox mdev em vez do udev e o hotplug está ativado, mas o tratamento do dispositivo mmcblk é comentado e não tenho idéia de como a montagem automática é tratada. este é o meu código hotplug:

#!/bin/sh
#
# A generic /sbin/hotplug multiplexer program
#
# This script allows any program to be called when /sbin/hotplug is
# called.  It will run any programs located in the default hotplug
# directory (currently /etc/hotplug.d/) that match up with the first
# argument that this script is called with.  The matching is done by
# adding a directory name to the default directory and looking for any
# programs in that directory that are executable, and end in .hotplug
# (to allow backup programs to be live on safely.)
#
# For example, if /sbin/hotplug is called with the usb argument then
# this script will look in the /etc/hotplug.d/usb/ directory for any
# executable programs that end in .hotplug.
#
# After all programs in the argument directory are executed, the
# "default" directory is searched for any executable programs in it,
# that end in .hotplug.  The default directory is currently
# /etc/hotplug.d/default/
#
# - Greg Kroah-Hartman
#   May 1, 2003
#
# Released under the GPL Version 2.
#

DIR="/etc/hotplug.d"

#for I in "${DIR}/$1/"*.hotplug "${DIR}/"default/*.hotplug ; do
#        if [ -f $I ]; then
#            test -x $I && $I $1 ;
#        fi
#done


#for debug
# if [ $DEVNAME ]; then
    # echo "===== USB hotplug event =====" >> $DEVNAME.txt
# else
    # echo "===== USB hotplug event =====" >> hotplug_event.txt
# fi
# echo "DEVPATH:$DEVPATH"
# echo "SUBSYSTEM:$SUBSYSTEM"
# echo "DEVTYPE:$DEVTYPE"
# echo "DEVNAME:$DEVNAME"
# echo "MAJOR:$MAJOR"
# echo "MINOR:$MINOR"
# echo "PRODUCT:$PRODUCT"
# echo "INTERFACE:$INTERFACE"
# echo "TYPE:$TYPE"
# echo "VENDOR_ID:$VENDOR_ID"
# echo "GUID:$GUID"
# echo "SPEFICIER_ID:$SPEFICIER_ID"
# echo "VERSION:$VERSION"
# echo "0:$0"
# echo "1:$1"
# echo "2:$2"
# echo "3:$3"



if [ $ACTION = add ]; then
    echo "== add =="
    if [ $SUBSYSTEM = net ]; then
        echo "== net =="
        if [ $INTERFACE = eth0 ]; then
            echo "== eth0 =="
            . /mnt/etc/enet.cfg
            ifconfig eth0 hw ether $ENETCFG_MAC
            ifconfig eth0 up
        fi
    elif [ $DEVTYPE = partition ]; then
        echo "== partition =="
        if [ $MAJOR = 8 ]; then
            echo "== USB storage =="
            mount /dev/$DEVNAME
        elif [ $MAJOR = 179 ]; then
            echo "== SD Card =="
            #mount /dev/mmcblk0p1
        fi
    fi
elif [ $ACTION = remove ]; then
    echo "== remove =="
    if [ $SUBSYSTEM = net ]; then
        echo "== net =="
        if [ $INTERFACE = eth0 ]; then
            echo "== eth0 =="
            # ifconfig eth0 down
        fi
    elif [ $DEVTYPE = partition ]; then
        echo "== partition =="
        if [ $MAJOR = 8 ]; then
            echo "== USB storage =="
            if [ $DEVNAME = sda1 ]; then
                umount /mnt/usb
            else
                umount /mnt/usb2
            fi
        elif [ $MAJOR = 179 ]; then
            echo "== SD Card =="
            #umount /mnt/sdcard
        fi
    fi
fi

exit 0

Você tem alguma idéia de como ele lida com a montagem / desmontagem automática do MMC_block? 2- também quando eu não comentar esta seção, o problema ainda permanece.

EDITAR: Parece que isso não está relacionado ao script automount.sh, porque eu edito e verifico muitas vezes e se esse script for chamado ele deve corretamente manipulado montar / desmontar o processo do MMc, a única coisa que resta é bug na versão do meu busybox ( que é V1.10.11).

    
por Mahmoud Hosseinipour 26.02.2018 / 14:34

0 respostas