|
|
第 1 帖 | |
|
|
标题: 设备文件简介 由于论坛排版效果不理想,而且我也只在我的个人空间对文章进行后继更新,所以建议直接到我的空间查看:
《Linux设备文件简介》 http://lamp.linux.gov.cn/Linux/device_files.html ------------------------------------------------------------------------------- 版权声明 本文作者是一位自由软件爱好者,所以本文虽然不是软件,但是本着 GPL 的精神发布。任何人都可以自由使用、转载、复制和再分发,但必须保留作者署名,亦不得对声明中的任何条款作任何形式的修改,也不得附加任何其它条件。您可以自由链接、下载、传播此文档,但前提是必须保证全文完整转载,包括完整的版权信息和作译者声明。 其他作品 本文作者十分愿意与他人共享劳动成果,如果你对我的其他翻译作品或者技术文章有兴趣,可以在如下位置查看现有作品的列表: 金步国作品列表 BUG报告,切磋与探讨 由于作者水平有限,因此不能保证作品内容准确无误,请在阅读中自行鉴别。如果你发现了作品中的错误,请您来信指出,哪怕是错别字也好,任何提高作品质量的建议我都将虚心接纳。如果你愿意就作品中的相关内容与我进行进一步切磋与探讨,也欢迎你与我联系。联系方式:Email: csfrank@citiz.net ; QQ: 70171448 ; MSN: csfrank122@hotmail.com ============================================== 设备管理是linux中比较基础的东西,但是由于Linux智能程度的越来越高,Udev的使用越来越广泛,使得越来越多的Linux新用户对 /dev 目录下的东西变得不再熟悉。有时候遇见问题就会变得抓狂 本文是我在写作《DIY 一个基于LFS的实用 Mini-LAPP 服务器》过程中整理的资料,拿出来与大家共享 Linux 中的设备有2种类型:字符设备(无缓冲且只能顺序存取)、块设备(有缓冲且可以随机存取)。每个字符设备和块设备都必须有主、次设备号,主设备号相同的设备是同类设备(使用同一个驱动程序)。这些设备中,有些设备是对实际存在的物理硬件的抽象,而有些设备则是内核自身提供的功能(不依赖于特定的物理硬件,又称为"虚拟设备")。每个设备在 /dev 目录下都有一个对应的文件(节点)。可以通过 cat /proc/devices 命令查看当前已经加载的设备驱动程序的主设备号。内核能够识别的所有设备都记录在原码树下的 Documentation/devices.txt 文件中。在 /dev 目录下除了字符设备和块设备节点之外还通常还会存在:FIFO管道、Socket、软/硬连接、目录。这些东西没有主/次设备号。 Linux内核所能识别的所有设备都记录在 http://www.lanana.org/docs/device-list/ 而内核原码树中的 Documentation/devices.txt 可能不是最新版本。 了解这些设备的最基本要求就是对 每个设备文件的含义了如指掌,下面就医列表的形式列出常见的设备文件以及相应的含义(比较偏僻的就省略了): 代码:
代码:
代码:
代码:
代码:
代码:
终端(或TTY)设备是一种特殊的字符设备。终端设备是可以在会话中扮演控制终端角色的任何设备, 包括:虚拟控制台、串行接口(已废弃)、伪终端(PTY)。 所有的终端设备共享一个通用的功能集合:line discipline, 它既包含通用的终端 line discipline 也包含SLIP和PPP模式。 所有的终端设备的命名都很相似。这部分内容将解释命名规则和各种类型的TTY(终端)的使用。 需要注意的是这些命名习惯包含了几个历史遗留包袱。 其中的一些是Linux所特有的,另一些则是继承自其他系统, 还有一些反映了Linux在成长过程中抛弃了原来借用自其它系统的一些习惯。 井号(#)在设备名里表示一个无前导零的十进制数。 虚拟控制台(Virtual console)和控制台设备(console device) 虚拟控制台是在系统视频监视器上全屏显示的终端。 虚拟控制台被命名为编号从 /dev/tty1 开始的 /dev/tty# 。 /dev/tty0 是当前虚拟控制台。 /dev/tty0 用于在不能使用帧缓冲设备(/dev/fb*)的机器上存取系统视频卡, 注意,不要将 /dev/console 用于此目的。 /dev/console 由内核管理,系统消息将被发送到这里。 单用户模式下必须允许 login 使用 /dev/console 。 串行接口(已废弃) 这里所说的"串行接口"是指 RS-232 串行接口和任何模拟这种接口的设备, 不管是在硬件(例如调制解调器)还是在软件(例如ISDN驱动)中模拟。 在linux中的每一个串行接口都有两个设备名: 主设备或呼入(callin)设备、交替设备或呼出(callout)设备。 设备类型之间使用字母的大小写进行区分。 比如,对于任意字母X,"tty"设备名为 /dev/ttyX# ,而"cu"设备名则为 /dev/cux# 。 由于历史原因,/dev/ttyS# 和 /dev/ttyC# 分别等价于 /dev/cua# 和 /dev/cub# 。 名称 /dev/ttyQ# 和 /dev/cuq# 被保留为本地使用。 伪终端(PTY) 伪终端用于创建登陆会话或提供其它功能, 比如通过 TTY line discipline (包括SLIP或者PPP功能)来处理任意的数据生成。 每一个 PTY 都有一个master端和一个slave端。按照 System V/Unix98 的 PTY 命名方案, 所有master端共享同一个 /dev/ptmx 设备节点(打开它内核将自动给出一个未分配的PTY), 所有slave端都位于 /dev/pts 目录下,名为 /dev/pts/# (内核会根据需要自动生成和删除它们)。 一旦master端被打开,相应的slave设备就可以按照与 TTY 设备完全相同的方式使用。 master设备与slave设备之间通过内核进行连接,等价于拥有 TTY 功能的双向管道(pipe)。 =============================== 你可能会很奇怪,为什么没有 /dev/hda 这样的设备,难道不常用么? 原因在于从 2.6.19 开始,内核引入了新的ATA驱动,将SATA/IDE硬盘同意使用 /dev/sd? 来表示了,所以 /dev/hd? 就没有存在的必要了 ![]()
__________________
@@ 此帖于 08-03-03 11:23 被 csfrank 编辑. |
|
|
|
|
|
|
|
第 2 帖 | |
|
|
请问initrd为什么只能使用ram0?
|
|
|
|
|
|
|
|
第 3 帖 | |
|
|
约定而已,无他
就像超级用户的uid为什么必须是零一样 |
|
|
|
|
|
|
|
第 4 帖 | |
|
|
linux串行接口驱动已经废止?很多工业设备都在使用哦...
另外支持下,精华··
__________________
花因喜洁难寻偶,人为悲秋欲断魂 |
|
|
|
|
|
|
|
第 5 帖 | ||
|
|
引用:
但是对于大多数用户来说,这些知识可以丢弃了 |
||
|
|
|
||
|
|
第 6 帖 | |
|
|
好阿,一直对udev不了解,好好拜读一下先
__________________
HK的网络就是爽 ----------------------------------- ACER TravelMate 3273WXMi Intel Core 2 Duo T5500(1.66G) NVDIA GeForce Go 7300,128M static + 128M dynamic,official driver 120GB HDD 1G+512 DDR2 RAM 802.11 a/b/g ipw3945 |
|
|
|
|
|
|
|
第 7 帖 | |
|
|
串口所是个好东西,呵呵
__________________
我的blog,关于ubuntu,关于linux,关于其他…… http://hi.baidu.com/%C0%C1%CE%CF%C5%A3gentoo |
|
|
|
|
|
|
|
第 8 帖 | |
|
|
看完了,才发觉,还是一头雾水……
|
|
|
|
|
|
|
|
第 9 帖 | |
|
|
收藏。
金大侠的全是精品。 |
|
|
|
|
|
|
|
第 10 帖 | |
|
|
金兄又有佳作,支持~~!
__________________
nO ^^4+73R wH1<h d!5+R0z j00 42E U$1N9 7r% LpHZ 4+ l3457 oN(& |
|
|
|
|
|
|
|
第 11 帖 | |
|
|
加精,学习!最近太忙了, 居然漏看了,罪过,罪过!
__________________
新手提问前请先看下面这个链接,谢谢大家配合: bbs.linuxsir.org/showthread.php?t=112318 我的博客http://blog.chinaunix.net/u/33031/ Intel Core 2 Due E6550/P5K SE/2x1G/NVIDIA 6200LE/WD1600AAJS/NEC LCD195VX/2.6.31-gentoo 此帖于 07-07-02 08:44 被 7dehao 编辑. |
|
|
|
|
|