udev移植

来源:互联网 发布:徐千雅最新网络歌曲 编辑:程序博客网 时间:2024/05/16 05:57

Udev是依赖于sysfs的,当系统中添加一个新的设备后,内核检测到后就会产生一个hotplug event并查找/proc/sys/kernel/hotplug去找出管理设备连接的用户空间程序,若udev已经启动,内核会通知udev去检测 sysfs中关于这个新设备的信息并创建设备节点。如/dev/vcs,在/sys/class/tty/vcs/dev存放的是”7:0”,既/dev /vcs的主次设备号。
并且udev还会根据/etc/udev/rules.d中的规则文件实现一些相应的功能。


udev-070.tar.bz2移植

1 下载 https://www.kernel.org/pub/linux/utils/kernel/hotplug/
  解压 tar jxvf udev-070.tar.bz2
  修改Makefile
  CROSS = arm-none-linux-gnueabi-

2 make
  成功后会生成  udev udevd udevstart udevinfo udevtest等工具

3 cp udevstart udevd /home/steven/NFS/rootfs/sbin/

4 修改etc/init.d/rcS添加
  /sbin/udevd --daemon
  /sbin/udevstart

5 修改fstab文件如下
  proc  /proc proc  defaults 0 0

6 在etc/目录下建立udev目录
  并在该目录下建立udev.conf配置文件,内容为
    # udev.conf
    # The initial syslog(3) priority: "err", "info", "debug" or its
    # numerical equivalent. For runtime debugging, the daemons internal
    # state can be changed with: "udevcontrol log_priority=".
    udev_log="err"
8 添加USB和SD卡的自动挂载和自动卸载规则
  在/etc/udev/目录下建立文件rules.d
  参考 网上的规则
 *******************************************
  实现U盘自动挂载
        Vim 11-add-usb.rules

  添加如下内容
        ACTION!="add",GOTO="farsight"
        KERNEL=="sd[a-z][0-9]",RUN+="/sbin/mount-usb.sh %k"
        LABEL="farsight"

   这个文件中ACTION后是说明是什么事件,KERNEL后是说明是什么设备比如sda1,mmcblk0p1等,RUN这个设备插入后去执行哪个程序%k是传入这个程序的参数,这  里%k=KERNEL的值也就是sda1等。

  在/sbin/下创建mount-usb.sh文件添加如下内容
        #!/bin/sh
        /bin/mount -t vfat /dev/$1 /tmp
        sync

  修改文件权限为其添加可执行的权限。

  这样就实现了U盘的自动挂载,下面附上U盘的卸载规则文件和sd卡的文件

Usb卸载

  11-add-remove.rules
        ACTION !="remove",GOTO="farsight"
        SUBSYSTEM!="block",GOTO="farsight"
        KERNEL=="sd[a-z][0-9]",RUN+="/sbin/umount-usb.sh"
        LABEL="farsight"

  umount-usb.sh
        #!/bin/sh
        sync
        umount /tmp/

  SD卡挂载

  ACTION!="add",GOTO="farsight"
        KERNEL=="mmcblk[0-9]p[0-9]",RUN+="/sbin/mount-sd.sh %k"
        LABEL="farsight"

  mount-sd.sh
        #!/bin/sh
        /bin/mount -t vfat /dev/$1 /tmp
        Sync

  SD卡卸载
        ACTION !="remove",GOTO="farsight"
        SUBSYSTEM!="block",GOTO="farsight"
        KERNEL=="mmcblk[0-9]p[0-9]",RUN+="/sbin/umount-sd.sh"
        LABEL="farsight"

  umount-sd.sh
        #!/bin/sh
        sync
        umount /tmp/

 *******************************************
完成后测试,SD卡可以自动的加载和卸载,卸载后会即时删除目录,udev比mdev好用
0 0
原创粉丝点击