一. 设备管理概述
1. Linux设备的分类
字符设备(c):以字符为单位,传输速率较低,无需缓冲区。
块设备(b):以数据块为单位组织和传输数据,需要建立缓冲区
管道设备(p):是一种FIFO缓冲区
网络设备:一种通过SOCKET接口进行主机通信的设备
2. Linux系统设备管理层次
(1) 上层的设备文件
功能:用于用户访问设备进行输入和输出操作
常见的设备文件:设备文件通常保存在/dev
/dev/hd* IDE接口的硬盘
/dev/sd* SCSI/USB设备
/dev/cua* 串口设备
/dev/lp* 并口设备
/dev/tty* 终端设备
/dev/consol 控制台设备
/dev/eth* 以太网设备
/dev/cdrom 光驱
/dev/fd* 软驱
/dev/audio 音频设备
/dev/scd SCSI的光驱
/dev/ppp PPP设备
/dev/isdn* ISDN设备
建立设备文件:
# mknod
格式:mknod 文件名 类型 主设备号 从设备号
类型:c字符设备
b块设备
p管道设备
实例:# mknod /dev/fdo b 1 2
(2) 下层的驱动程序
功能:用于直接控制设备
二. 驱动程序的安装
1. Linux驱动程序的特点
内核代码:驱动程序可以和内核代码相结合
动态加载:驱动程序作为内核的可装模块
可配置性
2. 安装过程
(1) 获取设备的驱动程序(*.tar.gz)
(2) 解压、生成目标文件复制到/lib/modules/内核版本号/kernel/drivers/相应子目录中
(3) 添加到内核中
实例:在RH 9.0 Linux中安装D-link 530tx 100m网卡驱动
(1) 从http://www.legend-networks.com.cn/downfile/linux530_321.tar处下载驱动到/usr/src目录中
(2) #cd /usr/src;tar –xvf linux530_321.tar
(3) #cd linux530_321;make
(4) #cp via-rhine.o /lib/modules/2.4.20-8/kernel/drivers/net/
(5) #vi /etc/rc.d/rc.local
添加以下内容:
/sbin/modprobe via-rhine
注:modprobe用于装载驱动程序模块,也可以用以下方法实现:
#vi /etc/modules.conf
添加以下内容:
alias eth0 via-rhine
(6) # init 6
注:(1)lsmod 显示内核模块
(2)modprobe 模块名 添加模块,自动解决依赖关系
(3) insmod 模块名 添加模块,手工解决依赖关系
三. 编译升级内核
1. 内核功能
内核是Linux操作系统核心部分,现在的操作系统都采用层次结构,功能模块化.作为内核主要有以下功能:
n 实现定时器和中断处理
n 实现对虚拟内存的管理
n 实现进程之间的通信
n 实现对外围设备的驱动
n 实现对虚拟文件系统的管理
n 对网络的支持和管理
2. 编译升级的理由
n 现有内核不支持或没有将用户系统中某些硬件的驱动程序编译
n 删除内核中实际系统中根本不用的设备驱动,以减少对内存的占用
n 使用一些现有的内核没有编译进去的网络通信协议
n 提高Linux的效率
n 修改错误、支持新的应用程序
3.编译升级kernel-2.6.0
kernel-2.6.0的编译升级比以前的版本要简单的多,具体如下:
(1) 下载2.6.0的内核到/usr/src/
http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.0.tar.gz
(2) 在/usr/src目录下解压内核
#cd /usr/src
#tar zvxf /usr/src /linux-2.6.0.tar.gz
(3) 配置
#cd /usr/src/linux-2.6.0
# make mrproper
# make menuconfig
注:make mrproper 是清理代码树的动作,保证源代码是干净的
(4) 编译
#make
(5) 安装
#make modules_install
#make sinstall