linux查看驱动
⑴ linux平台下,如何查看系统信息和装载驱动程序
显卡安装: 一、下载驱动程序 首先要找到显卡for Linux的驱动程序。现在绝大多数的3D显卡都已有了for Linux的驱动程序,可到各显卡厂商的主页或Linux的相关站点上去寻找。在安装显卡时,服务器根据显卡的情况来加载不同的显示模块,如果显示模块加载不正确,显卡就不能正常显示。 二、装载磁盘驱动器 Linux需要装载磁盘驱动器才能读取文件。启动Linux后,在字符界面下输入“mount -t vfat /dev/hda1 /mnt/winc”命令,将C盘装载到Linux下。需要注意的是,如果下载的是压缩文件,选择的是在Linux下解压,就得先进行装载磁盘驱动器这一步,再进行文件的解压缩。 三、拷贝文件 将XF86_SVGA文件拷贝到/usr/X11R6/bin目录下。注意,这是针对Red Hat版本来说,其它版本的路径不一定相同。“cp /mnt/winc/win98/TEMP/XF86_SVGA /usr/X11R6/bin”(根据自己的情况灵活掌握,关键是路径一定要正确,还要分清字母的大小写)。如果系统提示有同名文件,问是否覆盖,一定要选择“y”。这些旧文件可能是以前安装显卡时加载的,没有实际用处。在输入文件名的时候,输完XF86后按一下Tab键,再接着输SVGA,下划线_就可以出来了,按键盘上的下划线键是没用的,切记。 四、配置显卡 文件拷贝完成后,输入Xconfigurator,启动显卡配置程序。我在显卡列表中仍然没有找到Trident Blade 3D,于是选最后一个选项“Unlist”,然后选择加载的显示模块为SVGA,再选择显示器型号、显存大小、刷新频率 总结:在Linux下安装显卡驱动程序,首先要下载显卡支持Linux的驱动程序,再将其拷贝到/usr/X11R6/bin目录下,然后启动显卡配置程序进行配置即可。 网卡、声卡等驱动安装可以依此类推。《Linux就该这么学》里有相关介绍,建议看看。
⑵ linux查看未安装驱动的设备
linux查看系统硬件信息,是通过不同命令实现的,简单罗列如下:
lscpu命令,查看的是cpu的统计信息;
cat /proc/cpuinfo 可以知道每个cpu信息,如每个cpu的型号,主频等
2. free -m命令, 概要查看内存情况;
cat /proc/meminfo 查看内存详细使用
3. lsblk命令, 查看硬盘和分区分布;
fdisk -l 如果要看硬盘和分区的详细信息
4. lspci | grep -i 'eth' 命令, 查看网卡硬件信息
ifconfig -a 或ip link show 查看系统的所有网络接口
5. 其他
lspci命令,查看pci信息,即主板所有硬件槽信息。
⑶ linux下怎么看显卡驱动版本
用glxinfo命令,看输出。
其中应该有"driver=xxx"字样,xxx是你现在使用的驱动。
显卡驱动就是用来驱动显卡的程序,它是硬件所对应的软件。驱动程序即添加到操作系统中的一小块代码,其中包含有关硬件设备的信息。
⑷ linux7.0怎么查看hba驱动
1、使用linux系统登录账号登录。
⑸ 怎样在linux下查看无线网卡是否被驱动
多数不驱动无线网卡的灯是暗的驱动后正常的话应该是亮的
查看应该是:
iwconfig
ifconfig应该也可以,看到有无线网卡的信息就差不多了,别的就差配置了。
⑹ linux下怎么看显卡驱动版本
用glxinfo命令,看输出。 其中应该有"driver=xxx"字样,xxx是你现在使用的驱动。
⑺ linux怎么查看已装好硬件驱动
linux系统中的设备驱动是否安装好一般检查几个方面:1、系统日志。嵌入式系统多是直接dmesg一下,看有没有设备关键字相关的出错信息(通用系统可检查/var/log/messages文件)。
2、已加载的模块。检查模块加载列表中有没有相关设备的模块。
lsmod
3、设备列表。检查已加载的设备中有没有相关设备
cat /proc/devices
4、设备入口。如果以上检查都正常,还需要检查设备目录下设备入口是否已经创建
ls /dev/xxxx
如果以上检查都正常(驱动模块已经正常加载、设备入口存在且没有错误),而设备还不能正常工作,就需要检查设备驱动是否与芯片匹配或者驱动中的硬件资源配置是否与硬件对应了。
⑻ x86架构下linux驱动编程 看什么书
编写好驱动,通过挂载的方法将驱动程序挂载到内核里面,大致步骤如下:
一: 1>建立以.c为后缀的c语言程序文件(里面包含了设备名及设备号等)
2>建立Makefile文件(作用是通过make来产生设备文件*.ko文件,里面可以建立自己的平台所需的设备文件如:arm等).make产生相应的设备文件
二: 要在/dev下建立相应的设备结点(设备名),用insomd *.ko命令将相应的驱动设备文件挂载到内核中.
三:编写测试文件(.c文件)用来测试内核是否已近成功挂载到内核.(编写好相应的测试文件后,用gcc –o Filename Filename.c(测试文件名)来产生相应的可执行文件).
四:如果设备驱动挂载成功,当执行测试文件(./Filename)时会产生相应的结果.
五:可能用到的相关命令:
1.lsmod:列出内核已经载入模块的专题.
输出:
Mole(模块名)size(大小)used by (被..使用)
2.demop:分析可加载模块的依赖性,生成moles.dep文件和映射文件
3.uname –r 显示内核版本(在编写Makefile时使用到)
4.modprobe : linux内核添加和删除模块(相关参数请查看man帮助文档)
5.modinfo:显示内核模块的信息.
6.insmod: 向linux内核中加载一个模块,用法:insmod[filename] [mole options…]
7.rmmod: 删除内核中的模块, 用法: rmmod [-f,w,s,v][molename]
8.dmesg: 显示内核缓冲区,内核的各种信息,内核启动时的信息会写入到/var/log/下.
六.例子1:
第一步:增加头文件和宏定义
#include <linux/fs.h>
#include <linux/types.h>
#include <linux/cdev.h>
#include <linux/uaccess.h>
#include <linux/mole>
#include <linux/kernel>
第二步:添加与字符设备定义及注册有关的数据成员
//定义设备名称
#define DEVICE_NAME "test" //设备名
#define BUF_SIZE 1024
static char tmpbuf[BUF_SIZE];
//定义主次设备号
static unsigned int TestMajor=0; //主
static unsigned int TestMinor=0; //次
static struct cdev *test_cdev;
static dev_t dev;
第三步:增加open/release函数
static int test_chardev_open(struct inode *inode,struct file *file)
{
printk("open major=%d, minor=%d\n", imajor(inode),
iminor(inode));
return 0;
}
static int test_chardev_release(struct inode *inode,struct file *file)
{
printk("close major=%d,minor=%d\n",imajor(inode),
iminor(inode));
return 0;
}
第四步:增加read函数
static ssize_t test_chardev_read(struct file *file,char __user *buf,
size_t const count,loff_t *offset)
{
if(count < BUF_SIZE)
{
if(_to_user(buf,tmpbuf,count))
{
printk(" to user fail \n");
return -EFAULT;
}
}else{
printk("read size must be less than %d\n", BUF_SIZE);
return -EINVAL;
}
*offset += count;
return count;
}
第五步:增加write函数
static ssize_t test_chardev_write(struct file *file, const char __user*buf,size_t const count,loff_t *offset)
{
if(count < BUF_SIZE)
{
if(_from_user(tmpbuf,buf,count))
{
printk(" from user fail \n");
return -EFAULT;
}
}else{
printk("size must be less than %d\n", BUF_SIZE);
return -EINVAL;
}
*offset += count;
return count;
}
第六步:添加增加file_operations成员
static struct file_operations chardev_fops={
.owner = THIS_MODULE,
.read = test_chardev_read,
.write = test_chardev_write,
.open = test_chardev_open,
.release = test_chardev_release,
};
第七步:在模块的入口添加设备的设备号获取及设备注册
static int __init chrdev_init(void)
{
int result;
if(TestMajor)
{
dev=MKDEV(TestMajor,TestMinor);//创建设备编号
result=register_chrdev_region(dev,1,DEVICE_NAME);
} else {
result=alloc_chrdev_region(&dev,TestMinor,1,DEVICE_NAME);
TestMajor=MAJOR(dev);
}
if(result<0)
{
printk(KERN_WARNING"LED: cannot get major %d \n",TestMajor);
return result;
}
test_cdev=cdev_alloc();
cdev_init(test_cdev,&chardev_fops);
//test_cdev->ops=&chardev_fops;
test_cdev->owner=THIS_MODULE;
result=cdev_add(test_cdev,dev,1);
if(result)
printk("<1>Error %d while register led device!\n",result);
return 0;
}
第八步:在模块的出口函数增加设备设备号释放及设备注销函数
unregister_chrdev_region(MKDEV(TestMajor,TestMinor),1);
cdev_del(test_cdev);
第九步:编译并加载该模块
第十步:根据设备号的设置,在文件系统中建立对应的设备节点
#mknod /dev/test c XXX XX
例子2:
驱动文件:
#include <linux/init.h>
#include <linux/mole.h>
#include <linux/cdev.h>
#include <linux/fs.h>
#include <linux/kernel.h>
#include <linux/uaccess.h>
#define DEVICENAME "ccccc"
unsigned int major=221;
unsigned int minor=0;
struct cdev *abc;
dev_t dev;
static char bufrh[1024]="read success!";
static int aaaaa_open(struct inode *inodep, struct file *filep)
{
printk("read success!\n");
return 0;
}
int aaaaa_release(struct inode *inodep, struct file *filep)
{
return 0;
}
static ssize_t aaaaa_read (struct file *filep, char __user *buf, size_tcount, loff_t *offset)
{
if(_to_user(buf, bufrh, 1))
{
printk("_to_user fail!\n");
}
return 0;
}
ssize_t aaaaa_write (struct file *filep, const char __user *buf,size_t count, loff_t *offse)
{
printk("write!\n");
return 0;
}
static const struct file_operations fops = {
.owner = THIS_MODULE,
.open = aaaaa_open,
.release = aaaaa_release,
.read = aaaaa_read,
.write = aaaaa_write,
};
static int __init aaaaa_init(void)
{
int a;
dev=MKDEV(major, minor);
a=register_chrdev_region(dev, 1, DEVICENAME);
abc=cdev_alloc();
abc->owner=THIS_MODULE;
cdev_init(abc, &fops);
cdev_add(abc, dev, 1);
return 0;
}
static void __exit aaaaa_cleanup(void)
{
cdev_del(abc);
unregister_chrdev_region(dev, 1);
}
mole_init(aaaaa_init);
mole_exit(aaaaa_cleanup);
MODULE_LICENSE("GPL ");
Makefile文件:
obj-m += firstqd.o(相应设备文件名)
KERDIR = /usr/src/linux-headers-2.6.32-24-generic
#KERDIR=/home/linux2.6/linux #arm骞冲彴
PWD=$(shell pwd)
moles:
$(MAKE) -C $(KERDIR) M=$(PWD)moles
pc:
gcc -o fristqd firstqd.c
arm:
arm-linux-gcc -o fristqd firstqd.c
clean:
rm -rf *.o *~core *.depend *.cmd *.ko *.mod.c *.tmp_versions
测试文件(test.c):
#include <stdio.h>
#include <sys/types.h>
#include <fcntl.h>
char buf[1024];
char bufw[1024]="write success";
int main()
{
int fd,m,n;
fd=open("/dev/aaa",O_RDWR);
if (fd)
{
m=read(fd,buf,100);
printf("read kernel:%s\n",buf);
n=write(fd,bufw,10);
}
//printf("ni hao");
return 0;
}
⑼ linux下如何查看网卡驱动版本信息
Linux下查看网卡驱动和版本信息
查看网卡生产厂商和信号
查看基本信息:lspci
查看详细信息:lspci -vvv # 3个小写的v
查看网卡信息:lspci | grep Ethernet
查看网卡驱动
查看网卡驱动信息:lspci -vvv # 找到网卡设备的详细信息,包括网卡驱动
# lsmod 列出加载的所有驱动,包括网卡驱动
查看网卡驱动版本
查看模块信息:modifo<mole name> # 其中包含version信息
或 # ethtool-i <device name>
RHEL 6.3中的网卡驱动版本:
# modinfo igb
filename: /lib/moles/2.6.32-279.el6.x86_64/kernel/drivers/net/igb/igb.ko
version: 3.2.10-k
license: GPL
description: Intel(R) Gigabit Ethernet Network Driver
# modinfo e1000e
filename: /lib/moles/2.6.32-279.el6.x86_64/kernel/drivers/net/e1000e/e1000e.ko
version: 1.9.5-k
license: GPL
description: Intel(R) PRO/1000 Network Driver
author: Intel Corporation,<[email protected]>
# modinfo e1000
filename: /lib/moles/2.6.32-279.el6.x86_64/kernel/drivers/net/e1000/e1000.ko
version: 8.0.35-NAPI
license: GPL
description: Intel(R) PRO/1000 Network Driver
# modinfo ixgbe
filename: /lib/moles/2.6.32-279.el6.x86_64/kernel/drivers/net/ixgbe/ixgbe.ko
version: 3.6.7-k
license: GPL
description: Intel(R) 10 Gigabit PCI Express NetworkDriver
# modinfo r8169
filename: /lib/moles/2.6.32-279.el6.x86_64/kernel/drivers/net/r8169.ko
version: 2.3LK-NAPI
license: GPL
description: RealTek RTL-8169 Gigabit Ethernet driver
查看网络接口队列数
查看网卡接口的中断信息:#cat /proc/interrupts | grep eth0
或 # ethtool-S eth0
查看网卡驱动源码的版本号
解压Intel网卡驱动源码,打开解压缩目录下的*.spec文件查看驱动的版本。
例如:解压e1000-8.0.35.tar.gz网卡驱动后,查看e1000.spec文件。
Name:e1000
Summary:Intel(R) Gigabit Ethernet Connection
Version: 8.0.35
Release:1
Source:%{name}-%{version}.tar.gz
Vendor:Intel Corporation
License:GPL
ExclusiveOS:linux
Group:System Environment/Kernel
在驱动源码src目录中查找:
#grep DRV_VERSION * # forLinux
#findstr DRV_VERSION * # for Windows
在e1000_main.c中也能找到定义驱动版本的一行:
#define DRV_VERSION"8.0.35" DRV_NAPI DRV_DEBUG DRV_HW_PERF
在e1000e中src目录下netdev.c文件:
#define DRV_VERSION"3.0.4.1" DRV_EXTRAVERSION
igb_main.c:
#define MAJ 5
#define MIN 2
#define BUILD 9.4
#define DRV_VERSION__stringify(MAJ) "." __stringify(MIN) "."\
ixgbe_main.c:
#define DRV_VERSION __stringify(3.22.3) DRIVERIOVDRV_HW_PERF FP GA \