Ubuntu下自动加载U盘
来源:互联网 发布:键盘windows键解锁 编辑:程序博客网 时间:2024/06/13 01:17
目前一些主流桌面系统(如Gnome,KDE,Xfce)的较新版本都支持自动挂载(mount)U盘了. 一个流传很广的说法是 HAL(硬件抽象层) 起了自动挂载的作用, 其实这是误解. 对于2.6内核而言, udev 才是直接从内核接收设备连接或断开信息的主体.
udev 从内核得到信息后,根据一些简单规则(注意,是简单规则), 在 /dev 目录下创建相应的设备节点, 并进行某些相关操作. HAL 所做的事情是在 udev 的规则中加上一条(或几条), 让 udev 把收到的信息也传递给 HAL. 接下来, HAL 用更为复杂的规则来匹配和描述当前连接着的硬件. 举一个简单的例子, udev 知道的是U盘已经连接了并且有一个分区; 而 HAL 能更进一步知道这个分区的卷标名及其它一些信息.
上面这些都还不能自动挂载U盘. Gnome 等桌面系统会启动一个守护进程(daemon), 通过 D-Bus 从 HAL 那里得到硬件信息, 如果发现有U盘连接了就由它们来挂载它(实际是调用 pmount).
问题是, 如果你不想用Gnome,KDE,Xfce这些桌面系统, 那么由它们提供的U盘自动挂载功能也就失效了,有解决办法么?
解决的办法之一, 便是让 udev 来干这件事情!
udev 的主要功能是实时地在 /dev 目录下创建和删除设备节点, 但它也能在创建节点的同时, 执行一个额外地程序. 具体的原理这里就不详说了, 有时间请仔细阅读 Writing udev rules 这篇文章. 写规则时特别注意 KERNEL, SUBSYSTEM 等这些关键字单数和复数(最后有没有'S')的区别. 复数(比如 KERNELS)表示你想用父设备的属性来匹配, 单数(比如 KERNEL)是要匹配设备本身的属性.
在 /etc/udev/rules.d 目录下创建文件 10_usbkey.rules, 其内容如下
KERNEL=="sda1", SUBSYSTEM=="block", RUN+="/root/usbmount.sh %k"
然后, 在 /root 目录中创建文件 usbmount.sh, 其内容为
#!/bin/bash
LOG=/var/log/usb-hotplug.log
lap=lap: ACTION" >> ACTION == "add" ]
then
mkdir $1
mount -t vfat -o umask=000,noatime,async,codepage=936,iocharset=gb2312 \ /dev/$1 /media/$1
mount -t ntfs -o umask=000,noatime,async,codepage=936,iocharset=gb2312 \ /dev/$1 /media/$1
mount -t ext4 -o umask=000,noatime,async,codepage=936,iocharset=gb2312 \ /dev/$1 /media/$1
elif [ $ACTION == "remove" ]
then
umount -l /media/$1
rm -rf $1
fi
并把该文件属性设置为可执行, chmod a+x usbmount.sh
注意, 如果你的 linux 上 locale 是 zh_CN.utf-8, 需要把上面的 iocharset=gb2312 改成 iocharset=utf8
这是一个非常简单但可用的例子. U盘插上后自动 mount 到 /media/usbkey , 拔出后自动 umount. 你可以查看 /var/log/usb-hotplug.log , 里面会有些简单的调用记录.
如果要挂载exfat格式的u盘,就绪要下载它的支持
挂载exfat格式u盘的步骤:
sudo apt-get install subversion
sudo apt-get install scons
sudo apt-get install libfuse-dev
sudo apt-get install gcc
svn co http://exfat.googlecode.com/svn/trunk/ exfat-read-only
cd exfat-read-only
scons
sudo scons install
rm –rf exfat-read-only
在前面脚本中加入:
mount -t exfat-fuse -o umask=000,noatime,async,codepage=936,iocharset=gb2312 \ /dev/$1 /media/$1
这之后就可以挂载exfat格式的u盘了。
0 0
- Ubuntu下自动加载U盘
- [Ubuntu]openbox下U盘自动挂载
- Ubuntu下禁止自动打开U盘等设备
- linux下加载U盘
- Ubuntu下U盘低级格式化
- ubuntu下使用u盘
- Ubuntu 下格式化 U盘
- ubuntu 下使用U盘
- 取消ubuntu自动mount u盘
- ubuntu 14.04 禁用u盘自动打开
- ubuntu下如何自动启动U盘脚本程序(autorun)
- Ubuntu中文输入法和中文界面 && Ubuntu加载光驱 && Ubuntu加载U盘 && Ubuntu自动关机
- linux命令行下,加载U盘
- VM虚拟机下如何加载U盘
- [ubuntu 12.04] u盘自动安装ubuntu desktop 12.04
- linux下u盘自动备份
- 虚拟机下UBUNTU中识别U盘
- win7下制作U盘安装ubuntu
- mysql 命令mysqldump使用注意
- WCF学习-构建WCF服务(3)
- Fckeditor使用方法
- 一个判别表达式中开、闭括号是否配对出现的算法
- 微信公众帐号开发教程第6篇-文本消息的内容长度限制揭秘
- Ubuntu下自动加载U盘
- ubuntukylin安装nvidia的双显卡切换驱动--大黄蜂Bumblebee
- 杭电1163
- 有序链表插入与删除——C语言
- 黑马程序员 类的加载、连接、初始化
- 2-SAT暴力dfs模板解释|不看你会后悔的
- 两个栈实现一个队列
- 共享服务器模式(shared server)和专用服务器模式(dedicated server)
- c++学习笔记之成员模板