当前位置:操作系统 > Unix/Linux >>

Gentooudev指南

原文更新:2004年5月27日

  内容简介:这份文件说明什么是 udev 还有您如何使用 udev 来达成您的需求。

  1. 什么是 udev?

  


  /dev 目录

  当 Linux 使用者谈到他们系统上的硬体时,对周围那些认为 Linux 是一种病毒或是一种咖啡的牌子的人,'斜线 dev 斜线 某个东西'的用法他们一定会投给您一个奇怪的眼光。但是对於那些幸运的使用者(包括您),使用 /dev/hda1 就是一种快速的表达方法,而不用说第一个 IDE 插槽上主硬碟的第一个分割区,不是吗?

  我们都知道什么是装置档。一些人更了解为什么我们在 /dev 中输入 ls -l 仔细查看时那些装置档会有特别的数字。但是我们一直认为 /dev/hda 代表第一个 IDE 插槽上主硬碟是理所当然的。您或许并不知道,但这只是设计上一个瑕疵。

  考虑一下可热插拔的装置,例如说 USB,IEEE1394,可抽换的 PCI,...什么是第一个装置?他会维持多久?当第一个装置消失后其他的装置要如何命名?这会不会影响进行中的传输工作?如果说因为您妈妈决定插上 inkjet 使它变成第一台印表机,而让您的列印工作从爆新的雷射印表机变成快坏的矩阵印表机在列印,这会很有趣吗?

  进入 udev。udev 计画的目标有趣而且迫切需要:
  • 在 userspace 中执行
  • 动态建立/移除装置档
  • 提供固定的名称
  • 提供 user-space API


  为了提供这些功能,udev 以三个分割的子计画发展: namedev,libsysfs,还有不用说就是udev。

  namedev

  Namedev 允许您从 udev 之外自行定义装置的名称。这让您输入多个段落来设定有弹性的命名规则以及方案。这个装置命名子系统提供 udev 可以使用的标准介面。

  目前 namedev 只有提供一个命名方案,由 LANANA 提供。目前这被大部分的 Linux 系统使用,因此适合大多数的 Linux 使用者。

  Namedev 使用下面五个步骤来决定指定装置的名称。如果债这些步骤的其中一个找到了这个装置的名称,就会使用它。这五个步骤是: are:
  • 标签或序号
  • 汇流排装置编号
  • 汇流排拓朴
  • 静态指定名称
  • 核心提供的名称


  标签或序号 这一步检查装置是否有唯一的识别记号。例如说 USB 装置有唯一的 USB 序号。SCSI 有唯一的 UUID。如果 namedev 找到与这种唯一编号相对应的设定档,他将或使用设定档提供的名称。

  汇流排装置编号 这一步会检查汇流排装置编号,对於不可热抽换的环境,这一步足以辨识装置。例如说 PCI 汇流排编号在系统的使用期限内很少变更。同样的,如果 namedev 找到相对应的设定档,设定档中的名称就会被使用。

  

  类似的,汇流排拓朴 相对来说也是够稳定而可以辨识设备,只要使用者不抽换设备。当装置的位置满足使用者提供的设定,就会使用指定的名称。

  第四个步骤,静态指定名称,是一个简单的字串取代。当核心提供的名称(预设名称)符合指定的取代字串,就会使用取代后的名称。

  最后一步(核心提供的名称)一定会找到符合的:由核心提供的预设名称。在大部份的情况下这足以在目前的 Linux 系统中找到对应的名称。

  libsysfs

  udev 使用虚拟的 sysfs 档案系统和核心沟通。libsysfs 计画提供通用的 API 以一般方式取得 sysfs 提供的资讯。这让查询任何硬体时不用先知道他们是哪种硬体。

  udev

  每当核心注意到硬体结构有更新时,他会呼叫 /sbin/hotplug 这个程式。 Hotplug 会执行连结到 /etc/hotplug.d/default 目录下的程式。在哪里面您也会找到 udev 程式的连结。Hotplug 送出核心提供的资讯给 udev 程式,以便执行必要的动作修改 /dev 结构(建立或删除装置档)。

  2. 在 Gentoo 使用 udev

  


  需求

  udev 需要与 2.6 核心共同使用(例如 development-sources 或 gentoo-dev-sources)。如果您已经用这类核心,您只要确定您的 sys-apps/baselayout 是最新的。这就是所有您需要的。代码 2.1: 安装 udev# emerge udev

  udev 会安装 hotplug-base,因为这是他的相依套件其中之一。如果您想要用 hotplug 当您插入 USB 或 IEEE1394 装置时执行特定的工作,您也要安装完整的 hotplug 指令搞。代码 2.2: 自由选择:安装 hotplug# emerge hotplug

  在核心的设定方面,如果您使用 genkernel 的预设设定,那相关设定都设定好了。否则确定您有启动下列选项:代码 2.3: 需要的核心设定General setup --->

  [*] Support for hot-pluggable devicesFile systems --->

  Pseudo filesystems --->

  [*] /proc file system support

  [*] Virtual memory file system support (former shm fs)


  如果您想的话,也可以启动 /dev file system support (OBSOLETE)。

  设定

  如果您像要在 Gentoo 使用调整过的 udev 让您的生活更加快乐,那您读到这就可以了。您已经把该设定的都设好了。 Gentoo init scripts 不会执行 devfsd 服务,而且当您开机时会关闭 devfs。

  但如果您是顽固的家伙,想要执行只使用 udev,未经调整过的系统,就如同 udev 发展过程中所做的事(包括一些困难,像是因为 udev 不支援而遗失的装置),那就读下去吧 :)
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,