免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 19016 | 回复: 24
打印 上一主题 下一主题

usb自动挂载怎么做? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-08-15 09:45 |只看该作者 |倒序浏览
想让u盘插上自动挂载到系统的一个目录,请问怎么做?

论坛徽章:
0
2 [报告]
发表于 2008-08-15 10:11 |只看该作者
把挂载命令写到启动脚本上面去

论坛徽章:
0
3 [报告]
发表于 2008-08-15 10:18 |只看该作者

回复 #2 sep 的帖子

这个好像只能在启动时才有效!

论坛徽章:
0
4 [报告]
发表于 2008-08-15 10:22 |只看该作者
原帖由 rodgerluo 于 2008-8-15 10:18 发表
这个好像只能在启动时才有效!

恩。我误会他的意思了
事实上,我现在用的ubuntu系统都是自动挂载u盘的
估计其实现脱离不了udev、还有内核选项配置里的automount

评分

参与人数 1可用积分 +15 收起 理由
bitmilong + 15 鼓勵回貼

查看全部评分

论坛徽章:
0
5 [报告]
发表于 2008-08-15 11:01 |只看该作者
事实上确实是这么做的。

论坛徽章:
0
6 [报告]
发表于 2008-08-15 11:09 |只看该作者
恩,又学一招儿~ 把mount ...写进linuxrc

论坛徽章:
0
7 [报告]
发表于 2008-08-15 11:16 |只看该作者
如果在嵌入式系统里做USB热插拔/自动挂载的话,稍微麻烦一些,我自己做的方法是使用NETLINK SOCKET来获得内核的设备热插拔信息,然后解析buf里以及df输出的信息,并执行相应的挂载/卸载的脚本。可以做到自动侦测挂载的usb设备名,设备数量,分区类型等,并自动建立对应的设备名的目录,将该设备挂载到对应的目录下。比如说我的手机插上时识别到两个分区,/dev/sda, /dev/sdb1,自动挂载到/mnt/sda, /mnt/sdb1。前提是内核里在热插拔的时候自动加载USB的驱动。

[ 本帖最后由 pilgrim_kevin 于 2008-8-15 11:19 编辑 ]

评分

参与人数 1可用积分 +15 收起 理由
bitmilong + 15 鼓勵回貼

查看全部评分

论坛徽章:
5
摩羯座
日期:2014-07-22 09:03:552015元宵节徽章
日期:2015-03-06 15:50:392015亚冠之大阪钢巴
日期:2015-06-12 16:01:352015年中国系统架构师大会
日期:2015-06-29 16:11:2815-16赛季CBA联赛之四川
日期:2018-12-17 14:10:21
8 [报告]
发表于 2008-08-15 11:25 |只看该作者
Linux里有个项目叫hotplug的
如果内核支持hotplug,那么在系统中应该有这么一个文件/proc/sys/kernel/hotplug,这是一个链接,指向/sbin/hotplug,这是一个shell脚本文件,对该脚本文件作相应的修改就可以支持热插拔,包括U盘、SD/MMC卡等等。



  1. #!/bin/sh

  2. #
  3. # What to do with this USB hotplug event?
  4. #
  5. # code by T-bagwell
  6. case $ACTION in

  7. add)
  8.   #echo $ACTION>/dev/tts/1
  9.   DIR="/dev/mmc"
  10.   for I in "$DIR/"*;do
  11.     #echo $I>/dev/tts/1
  12.     if [ -d $I -a -e $I/part1 ];then
  13.       #echo "found&mount $I/part1">/dev/tts/1
  14.       mount -t vfat -o sync $I/part1 /tmp/sdcard 2>/dev/tts/1
  15.     else
  16.       #echo "$I/part1 not found">/dev/tts/1
  17.       sleep 1;
  18.       if [ -d $I -a -e $I/part1 ];then
  19.         #echo "found&mount $I/part1">/dev/tts/1
  20.         mount -t vfat -o sync $I/part1 /tmp/sdcard 2>/dev/tts/1
  21.       fi
  22.     fi
  23.   done
  24.     ;;

  25. remove)
  26.   #echo $ACTION>/dev/tts/1
  27.   #echo "umount /tmp/sdcard">/dev/tts/1
  28.   umount /tmp/sdcard 2>/dev/tts/1
  29.     ;;

  30. *)
  31.     exit 1
  32.     ;;

  33. esac

复制代码

[ 本帖最后由 T-bagwell 于 2008-8-15 11:28 编辑 ]

评分

参与人数 1可用积分 +15 收起 理由
bitmilong + 15 鼓勵回貼

查看全部评分

论坛徽章:
5
摩羯座
日期:2014-07-22 09:03:552015元宵节徽章
日期:2015-03-06 15:50:392015亚冠之大阪钢巴
日期:2015-06-12 16:01:352015年中国系统架构师大会
日期:2015-06-29 16:11:2815-16赛季CBA联赛之四川
日期:2018-12-17 14:10:21
9 [报告]
发表于 2008-08-15 11:28 |只看该作者

  1. linux 传统上使用静态设备创建方法,因此大量设备节点在 /dev 下创建(有时上千个),而不管相应的硬件设备是否真正存在。通常这由一个MAKEDEV脚本,组成它由许多calls of mknod program with the revelant major and minor device number for每一个世界上可能存在的设备。采用udev的方法,只有被kernel检测到的设备才会get devices nodes created for them.因为这些设备节点在每次系统启动时被创建,他们会被stored在a ramfs(a file system in memory,does not take up any disk space).设备节点不需要much 磁盘空间,因此
  2. the memory that is used 可以忽略。
  3. 1:history
  4. 在2.4版本的kernel中,一种新文件系统called devfs被添加了进去。尽管它在kernel源码中出现,然而这种动态创建设备的方法从未收到压倒性的支持from core kernel开发者;
  5. devfs 的方法主要问题是 the way:设备检测,创建,命名。设备节点命名,可能是最critical的.It is generally accepted that 设备名允许是可配置的,then设备命名策略应该up to一个系统管理员,not 被欺骗by 特殊的开发者。devfs文件系统同时还忍受着一个紊乱情况,为它的design所固有,且不能被fix,若无实质的修改to kernel.现由于缺乏维护已被deprecated.
  6. 在2.6版本的kernel中,出现了一种叫sysfs的新虚拟文件系统。sysfs的 任务是export系统架构 to 用户空间进程。有了这种用户空间visible表示法,the possiblity of seeing a userspace replacement for devfs 变得更加现实。
  7. 2:udev 执行
  8. sysfs怎样知道设备出现 在系统?应该使用什么设备号?对于被编进kernel的driver,当被kernel监测到时,直接注册目标with sysfs。使用模块方式编译的,当模块被load时,如前。once sysfs文件系统被mounted (on /sys),the data which the built-in drivers registered with sysfs are available to userspace process and to udev for device node creation.
  9. udev初始化脚本创建这些 设备节点当linux boot时;这个脚本starts with 注册/sbin/udev/ 作为一个 hotplug事件管理者。热插拔事件不应该发生在这个过程中,然而udev is registered just in case they do occur.然后udevstart program walk through the /sys filesystem and 创建符合描述的设备在/dev。例如:/sys/class/tty/vcs/dev/包括string "7:0".这个字符串被udevstart使用来创建/dev/vcs,主设备号7and此设备号0。每一个udevstart创建的设备的权限设置来自/etc/udev.d/permission.d/目录。这些numbered(有限的) 基本相似LFS bootscripts.如果找不到创建的设备权限文件,默认perissions to 600 and ownership to root:root./dev目录下创建的节点根据 /etc/udev/rules.d/目录下的文件来configured.
  10. 当一个新设备连 接被kernel监测到,kernel会产生一个hotplug event 并查找/proc/sys/kernel/hotplug去找出管理设备连接的用户空间程序。udev初始化脚本注册udev as this hander.当hotplug events发生时,kernel通知udev 去检测/sys 文件系统附属于这个新设备的信息并create 它的/dev/入口。
  11. ?这带给我们一个问题:exists with udev,and likewise with devfs before it.?就像先有鸡还是先有蛋。大部分linux distrubtions
  12. 管 理加载模块通过/etc/modules.conf.access to 设备节点引起相应的kernel模块来加载。然而对于udev,这种方法不能正常工作,因为模块没有加载时,设备节点不存在。为了解决这个问题,模块脚本加到了lfs-bootscripts包中,和/etc/sysconfig/modules在一起。通过添加module names到module file中,这些模块在计算机启动时被加载。这样,udev就可以去检测设备并创建相应的设备节点。
  13. 3:处理可热插拔/动态设备
  14. 当 你插入一个设备,比如usb mp3 player,内核辨认出设备连接同时产生一个热插拔事件。如果驱动已经loaded(不管是编进kernel还是通过s05modules bootscript加载),udev将被调用来创建相关的设备节点,根据sysfs data in /sys.如果刚插入的设备驱动以模块形式然而并未加载,那么刚attach to system 的设备只会引起kernel总线驱动产生一个热插拔事件通知用户空间一个新设备的连接and它不attached to a driver.结果,什么都没有发生,device依然不能使用。
  15. 如果建立一个system,that具有大量的以模块形式编译的驱动,使用s05modules并不实际。the hotplug package([url]http://linux-hotplug.sourceforge.net[/url])会显得非常有价值。当此包安装后,它会响应前述的 kernel总线驱动hotplug事件。此包将加载相应的模块并为设备创建节点。
  16. 4:创建设备的问题
  17. 自动创建设备节点时常遇到的一些问题
  18. 1)A kernel driver may not exports its data to sysfs
  19. 当 使用第三方驱动(在kernel source tree 之外)时常遇到这种问题。这些驱动end up时没有创建设备节点。使用/etc/sysconfig/creatfiles 配置文件to 人工创建设备。参考devices.txt文件(在kernel文档中)或者驱动文档来找出正确的major/minor设备号。
  20. 2)无硬件设备 is required.这种很常见with the advanced linux sound architecture(ALSA) project's open sound system(oss) compatibility 模块.这种形式的驱动可以使用以下下面两种方法来管理:
  21. *将module names 加到 /etc/sysconfig/modules;
  22. * 使用"install"line 在/etc/modprobe.conf中。This tells the modprobe command "when loading this module, also load this other module,at the same time."例如
  23. install snd-pcm modprobe -i snd-pcm;modprobe snd-pcm-oss;true
  24. 当系统中有加载snd-pcm驱动的请求时,这会使系统加载both snd-pcm and snd-pcm-oss modules.
  25. 5:进一步一些参考资料
  26. [url]http://fedora.redhat.com/docs/udev/[/url]
  27. [url]http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev.html[/url]
  28. [url]http://www.kroah.com/linux/talks/ols_2003_udev_paper/Reprint-Kroah-Hartman-OLS2003.pdf[/url]
  29. [url]http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev-FAQ[/url]
复制代码

论坛徽章:
0
10 [报告]
发表于 2008-08-15 11:31 |只看该作者
原帖由 T-bagwell 于 2008-8-15 11:25 发表
Linux里有个项目叫hotplug的
如果内核支持hotplug,那么在系统中应该有这么一个文件/proc/sys/kernel/hotplug,这是一个链接,指向/sbin/hotplug,这是一个shell脚本文件,对该脚本文件作相应的修改就可以支持 ...


我之前原本也是打算用hotplug,结果没太整明白,干脆就自己写程序从内核里获取热插拔信息并自己动手做挂载/卸载/
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP