SD卡热拔插自动挂载

重新配置busybox并编译,使支持mdev

  • 提供一种简单的方式:
 1.进入cd openwrt/build_dir/target-arm_cortex-a7+neon_glibc-2.22_eabi/busybox-1.24.2/
 2.make menuconfig 

        Linux System Utilities  --->   
            [*] mdev      
            [*]   Support /etc/mdev.conf
            [*]     Support command execution at device addition/remov

 3.回到openwrt目录,进行make V=s 进行编译
 4.拷贝生成的busybox和软连接生成mdev在/sbin目录下(或者重新烧录)

修改文件/usr/bin/startapp

  • /usr/bin/startapp
#!/bin/bash

export COMPONENT_REGISTER_PATH=/usr/lib/omx

senseflow -c /usr/share/senseflow/sf/ai_input_vsp.sf -c /usr/share/senseflow/sf/behavior_exec_pulse.sf &

sleep 10
echo /sbin/mdev>/proc/sys/kernel/hotplug
mdev -s

添加对热插拔事件的响应,实现U盘和SD卡的自动挂载

  • vi /etc/mdev.conf
mmcblk0         0:0 0600  @/etc/hotplug/fdisk_config
mmcblk0p1       0:0 0600  */etc/hotplug/sdcard.sh
sda1            0:0 0600  */etc/hotplug/udisk.sh

该文件的作用是:mdev在找到匹配设备时自动执行自定义命令
当检测到类似sda0这样的设备节点创建时,执行/etc/hotplug/udisk.sh里的脚本,脚本的内容就是挂载u盘;当检测到类似mmcblk0p1这样的设备节点创建时,执行/etc/hotplug/sdcard.sh里的脚本,脚本的内容就是挂载SD卡。

格式为: : [<@$*>]
@ 创建节点后执行的
$ 删除节点前执行的
* 创建后和删除前都运行的

编写自动挂载卸载和当检测到SD卡没有格式化,自动进行格式化的脚本

  • vi /etc/hotplug/udisk.sh u盘挂载卸载脚本
#!/bin/sh

case $ACTION in
remove)
        echo "U disk remove!" > /dev/console
        umount /udisk
        rmdir /udisk
        mpc clear
        mpc add /usr/share/senseflow/audio/active.wav
        mpc play
        ;;
*)
        echo "U disk insert!" > /dev/console

        if [ -e "/dev/$MDEV"  ]; then
                mkdir /udisk
                mount /dev/$MDEV /udisk
        fi
        ;;
esac
  • vi /etc/hotplug/sdcard.sh sd卡挂载卸载脚本
#!/bin/sh

case $ACTION in
remove)
        echo "sd card remove!" > /dev/console
        umount  /sdcard
        rmdir /sdcard
        mpc clear
        mpc add /usr/share/senseflow/audio/active.wav
        mpc play
        ;;
*)
        echo "sd card insert!" > /dev/console

        if [ -e "/dev/$MDEV"  ]; then
                mkdir /sdcard
                mount /dev/$MDEV /sdcard
        fi
        ;;
esac
可以在脚本里添加一些命令实现在拔插过程中播放一些音效
  • vi /etc/hotplug/fdisk_config fdisk格式化sd卡脚本
#!/bin/sh
filepath="/dev/mmcblk0p1"

if [ ! -e $filepath ];
then
    echo "n
    p
    1


    w
    "| fdisk /dev/mmcblk0 && mkfs.vfat /dev/mmcblk0p1
fi
注意:中间有两个回车,表示默认选择

results matching ""

    No results matching ""