Linux下实现U盘、SD卡自动挂载功能

本文介绍如何在嵌入式系统中通过mdev支持动态设备节点管理,并实现U盘和SD卡的自动挂载。主要内容包括配置busybox支持mdev、设置热插拔事件响应以及编写hotplug.sh脚本来完成挂载与卸载操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.mdev支持

①用busybox制作根文件系统的时候,要选择支持mdev机制

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

②在文件系统/etc/init.d/rsC文件中添加如下内容 

Vi  /etc/init.d/rcS
        mount -t tmpfs mdev /dev 
        mount -t sysfs sysfs /sys
        mkdir /dev/pts
        mount -t devpts devpts /dev/pts

        echo /sbin/mdev>/proc/sys/kernel/hotplug//启动热插拔事件;
        mdev –s

这些语句的添加在busybox的/doc/mdev.txt中可以找到。 

 

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

Vi /etc/mdev.conf


mmcblk0p1(设备名) 0:0(id号) 0600(以八进制表示的设备属性)   =sdcard */bin/hotplug.sh
sda1  0:0 0600            =udisk */bin/hotplug.sh

红色部分,是一个脚本,脚本内容可以根据我们的需要定制,可以实现挂载,卸载或其他一些功能。

注:@表示是在插入(创建设备结点)后执行后面的脚本,$表示在拔出(删除设备结点)前执行后面的脚本。

4.在bin/下写一个hotplug.sh脚本程序:

#!/bin/sh

case $MDEV in
udisk | sda1)
 DEVNAME=udisk
 MOUNTPOINT=/udisk
 ;;
sdcard | mmcblk0p1)
 DEVNAME=sdcard
 MOUNTPOINT=/sdcard
 ;;
*)
 exit 0
 ;;
esac

test ! -c /dev/null && mknod -m 0666 /dev/null c 1 3

case $ACTION in
remove)
 /bin/umount $MOUNTPOINT || true
 rmdir $MOUNTPOINT >/dev/null 2>&1 || true
 ;;
*)
 /bin/mkdir $MOUNTPOINT > /dev/null 2>&1 || true
 /bin/mount -o sync -o noatime -o nodiratime -t vfat /dev/$DEVNAME $MOUNTPOINT > /dev/null 2>&1 || true
 ;;
esac

exit 0

插入U盘、SD等设备,即可在根目录下建立相应的文件夹,挂载对用的磁盘文件

以上两个脚本需要可执行权限:chmod +x  /bin/hotplug.sh

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值