Mdev 热插拔

流程分析

inittab:
    调用rcS
    {
        rcS:
        mount -a  挂载fstab中的文件系统(dev、sys等)
        {
            fstab:
                挂载
                /dev
                /proc
                /sys
                /tmp
        }

        启动hotplog,使用mdev -s监控热插拔硬件,自动创建硬件模块
        设备节点,如果/etc/mdev.conf中有硬件描述,则按照里面的属性进行操作:
        {
            U盘
            创建/dev设备节点等
        }

        insmod加载其他模块.ko

    }
    启动控制台shell

启动mdev,必须:
①busybox编译时,选择支持;
②在rcS中添加:
echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s
③在/etc/下创建mdev.conf文件。

实例分析:

下面以一个usb摄像头的例子做演示,达到的效果:
当插入USB摄像头的时候,系统自动执行mjpg-streamer

在mdev.conf中添加:
video0          0:0 777 * /etc/auto_mjpg_streamer.sh
在etc下创建auto_mjpg_streamer.sh脚本:
#!/bin/sh

if [ $ACTION = "add" ]; #这里的语法好恶心,括号两边要加空格
then
        /opt/mjpeg/mjpg_streamer -i "/opt/mjpeg/input_uvc.so -y" -o "/opt/mjpeg/output_http.so -w ./www" &
        echo -e "Find /dev/video0,Starting Mjpg-streamer.\n"
else
        killall mjpg_streameri
        echo -e "Disconnect /dev/video0,Closing Mjpg-streamer.\n"
fi
最后为脚本添加执行权限:
chmod +x auto_mjpg_streamer.sh

试验中发现一个奇怪的现象:
上电如果USB连接着摄像头,则挂载文件系统之后,“断开连接”中的脚本命令会被执行,此时只有重新插拔摄像头,mjpg-streamer才会被正确启动,未查明原因。

Udev

添加的规则在/etc/udev/rules.d/中:
ACTION!=”add”,GOTO=”farsight”
KERNEL==”sd[a-z][0-9]”,RUN+=”/sbin/mount-usb.sh %k”
LABEL=”farsight”
在/sbin/下创建mount-usb.sh文件添加如下内容:
#!/bin/sh
/bin/mount -t vfat /dev/$1 /tmp
sync
P.S.:对于KERNEL参数完全匹配的时候,/dev中的设备节点将会消失,此时可以指定NAME=”%k”创建名为内核设备名的节点。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值