字符设备:
是指每次与系统传输1个字符的设备。 字符设备通常为传真、虚拟终端和串口调制解调器、键盘之类设备提供流通信服务。 字符设备在实现时,大多不使用缓存器。系统直接从设备读取/写入每一个字符。 例如,键盘这种设备提供的就是一个数据流,当你敲入“abcdefg这个字符串时,键盘驱动程序会按照和输入完全相同的顺序返回这个由七个字符组成的数据流。它们是顺序的,先返回a,最后是g。
块设备:
是指与系统间用块的方式移动数据的设备。如硬盘、CD-ROM和内存区域。 块设备通常支持随机存取和寻址,并使用缓存器。 操作系统为输入输出分配了缓存以存储一块数据。当程序向设备发送了读取或者写入数据的请求时,系统把数据中的每一个字符存储在适当的缓存中。 当缓存被填满时,会采取适当的操作(把数据传走),而后系统清空缓存。 它与字符设备不同之处就是其一般支持随机存储,而字符型是流形式,逐一存储。
特殊设备:
在类Unix操作系统中,设备节点并不一定要对应物理设备。 没有这种对应关系的设备是特殊设备(或伪设备)。操作系统运用了它们提供的多种功能。 部份经常使用到的特殊设备(或伪设备)包括: null, zero, full, loop
/dev/stdin: 指的就是键盘设备 实验1:
cat > file1 < /dev/stdin
Test Ctrl +d cat从/dev/stdin获得数据,然后保存到file1文件中。 cat file1 Test 实验2:
cat > file1
Test Ctrl+D 不指定输入,默认的输入设备就是/dev/stdin
/dev/null设备:
是个黑洞设备,它丢弃一切写入其中数据,空设备通常被用于丢弃不需要的输出流。 任何写入该设备数据都会被丢弃掉。从这个里面读取数据返回是空。将一些不用内容经常发送给这个设备,丢弃不需要的数据。
/dev/zero设备:
/dev/zero 会提供无限的空字符(NULL, ASCII NUL, 0x00)。其中的一个典型用法是用它提供的字符流来覆盖信息,另一个常见用法是产生一个特定大小的空白文件。 例如:
$ dd if=/dev/zero of=testzero count=1024 bs=1024 1024+0 records in 1024+0 records out 1048576 bytes (1.0 MB) copied, 0.0107194 seconds, 97.8 MB/s
创建一个大小为1M文件,该文件一个块是1024字节,一共是1024块(刚好1M),用/dev/zero文件内容填充它。输出创建到:testzero文件
/dev/full设备:
类Unix系统中,/dev/full(常满设备)是一个特殊设备文件,总是在向其写入时返回设备无剩余空间。 这个设备通常被用来测试程序在遇到磁盘无剩余空间错误时的行为。
dd dd命令的用途把指定的输入文件拷贝到指定的输出文件中,并且在拷贝的过程中可以进行格式转换。 一般用于数据备份与恢复 例1: 将本地的/dev/hdx整盘备份到/dev/hdy :
dd if=/dev/hdx of=/dev/hdy
例2: 将/dev/sda1全盘数据备份到指定路径的image文件:
dd if=/dev/sda1 of=/home/apple/test
例3: 将备份文件恢复到指定盘:
dd if =/home/apple/test of=/dev/hdx
设备驱动 Linux 内核中虽存在许多不同的设备驱动程序但它们具有一些共同的特性:
驱动程序属于内核代码 设备驱动程序是内核的一部分,它象内核中其它代码一样运行在内核模式,驱动程序如果出错将会使操作系统受到严重破坏,甚至能使系统崩溃并导致文件系统的破坏和数据丢失。 为内核提供统一的接口 设备驱动程序必须为 Linux 内核或其它子系统提供一个标准的接口。例如终端驱动程序为Linux 内核提供了一个文件 I/O 接口。驱动程序的执行是属于内核机制并且使用内核服务 设备驱动可以使用标准的内核服务如内存分配、中断发送和等待队列等等。动态可加载 多数 Linux 设备驱动程序可以在内核模块发出加载请求时加载,而不再使用时将其卸载。这样内核能有效地利用系统资源。 可配置 Linux 设备驱动程序可以连接到内核中。当内核被编译时,被连入内核的设备驱动程序是可配置的网卡驱动升级 网卡驱动需要编译,因而需要安装kernel-devel,以提供相应支持: 1)用#rpm –qa|grep kernel-devel查看是否安装了这个包; 如果返回结果中有kernel-devel-xxx(其中xxx为当前redhat的内核版本,如rhel3为2.4.21-4EL), 即已经安装。 2)如果安装了用#rpm -V kernel-devel校验是否有文件丢失,如果没有输出,表示文件完整; 3)如果有丢失用#rpm -ivh –force kernel-devel-xxxx…把包重新覆盖安装一下。 1 – 在编译网卡之前,先检查网卡使用的网卡驱动模块名:
cat /etc/modprobe.conf
alias eth0 bnx2 表明网卡驱动模块名为bnx2 2 – 检查当前是否有已加载网卡驱动模块bnx2:
lsmod | grep bnx2
bnx2 179021 0 表明系统已有加载完网卡驱动模块 3 – 查看当前驱动模块信息,从而得到驱动模块的版本,以便验证稍后网卡驱动模块升级
modinfo bnx2
filename: /lib/modules/2.6.18-194.el5/kernel/drivers/net/bnx2.ko 网卡驱动存放的路径,升级后网卡存放路径与此路径不同 version: 2.0.2 表明网卡模块版本为2.0.2,是系统默认网卡驱动版本
U盘使用 U盘在访问之前一般需要mount,mount 的语法是
mount 设备名 挂载点目录
但如何知道u盘的设备名? 方法是:可以在插入u盘后用
fdisk -l
看一下