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).