嵌入式linux U盘自动挂载
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了嵌入式linux U盘自动挂载相关的知识,希望对你有一定的参考价值。
能否像在windows下那样,插入U盘后系统自动挂载。
具体的操作过程如下:1.接入usb设备,然后运行命令:devlabel add -d /dev/sda1 -s /dev/usbdevice (--automount 可去掉!)
/dev/sda1是usb设备名称,具体可以用fdisk -l查看,如果fdisk不能显示,可以用一个万能的方法: (#表示0,1,2,3....)
检测/proc/scsi/usb-storage-#是否存在;
如果存在,检测/proc/scsi/usb-storage-#/#是否存在;
如果存在,检查文件/proc/scsi/usb-storage-#/#中最后一行Attach:是否是YES;
如果是YES,那么 0 = sda, 1=sdb, 2=sdc ;
/dev/usbdevice是要使用的用户定义的设备名称,这个可以放在任意的目录中,名字大家自己定
automount指定:在 devlabel 重新启动时,如果 /etc/fstab 中有这个设备项目而且这个设备项目存在(找到了带有同一 UUID 的设备),那么就自动挂载这个项目。
2.建一个目录/mnt/usb
3.打开/etc/fstab,在里面添加一行:/dev/usbdevice /mnt/usb auto noauto,owner 0 0
这时就OK了,以后插入usb存储设备时就会自动挂载到/mnt/usb目录下了(前提是要有这个目录)
解决思想:当某个 USB 设备被插入,hotplug 就会运行 updfstab 程序。如果这个usb贮存设备存在,该程序会为它在 /etc/fstab 中添加一项记录。所添加的这一行包含实际设备名称(如 /dev/sda1)和 kudzu 选项。kudzu 选项通知 Kudzu工具如果设备不存在就删除这一行。因为这一行是 devlabel 所需的,你必须删除 kudzu 选项才能使这一行被保留在文件内。你还需把设备名称改成 devlabel 设备名称(如 /dev/usbdevice),并创建挂载点(如 /mnt/usb)。
所以修改后的就是上面的第3步.
最后,还有一种最最简单的方法,也是我现在使用的方法哈:
可以直接打开/etc/hotplug/usb.agent ,在里面找到"add)",在其中的
if [ -x /sbin/devlabel ]; then
/sbin/devlabel restart
fi
后面加上
[ -x /usr/sbin/udisk ]&& /usr/sbin/udisk
其中udisk是一个简单的挂载脚本:
#! /bin/sh
mount|grep /mnt/usb
if [ "$?" = "0" ]; then
umount /mnt/usb
rmdir /mnt/usb
else
mkdir /mnt/usb
mount /dev/sda1 /mnt/usb
fi
这样做的目的是:当usb设备接入时,hotplug程序就会自动运行,在运行脚本中加入一个挂载脚本,不就一切OK了么~~
不过上面的讨论都只能用于挂载,卸载还是必须用umount(选第3种办法的直接打udisk),这是同WIN一样的. 参考技术A 楼上的回答的太麻烦了 3个步骤搞定
第一步:先看你的U盘插入到Linux系统之后是怎么显示的
fdisk -l
例如显示 /dev/sda1
第二步:挂载
mount -t vfat /dev/sda1(先可以用fdisk -l 命令查看U盘的块号) /mnt
第三步:插入之后自动挂载
vi /etc/fstab
/dev/sda1(要挂载的东西<源>) /mnt(挂载到那里去<目的>)vfat(什么格式《U盘的格式》)defaults 0 0追问
呃,那个我的目的是像Windows那样,随时拔插U都可以自动挂载
追答设置完这样之后就能像windows那样了,不设置的话 可以明确告诉你 肯定不行
参考技术B 可以。mdev支持热拨插!以上是关于嵌入式linux U盘自动挂载的主要内容,如果未能解决你的问题,请参考以下文章
记录一个解决Arm Linux端U盘挂载时文件名显示乱码Qt显示乱码的问题