在Linux下,我们常有需要自己来编译安装驱动模块的情况,例如要安装显卡驱动,要安装无线驱动,有的时候某个程序的安装使用与需要安装相应的驱动模块。Debian Linux下的生活本已十分简单,使用apt可以处理一切。单就我们所讨论的驱动安装,一般情况下,源中也会有已编译的相应驱动可用。但是一般来说,驱动模块与所用的内核版本有着较强的依赖关系,如果源中并没有与我们所用的内核版本相匹配的驱动时,就需要我们自己手动来编译安装驱动模块了。在这样的情况,Debian下的驱动模块编译安装工具m-a就有了用武之地了。下面我们简要介绍一下如何使用m-a来手动编译安装驱动模块。

1 安装m-a

# apt-get install module-assistant

2 安装必须的软件

# apt-get install build-essential

这是编译内核和模块所必须的软件包。当然,如果我们不这样显式的安装,我们也可以使用下面的命令来安装:

# m-a prepare

正如其名字所显示的,这会为编译安装驱动模块安装必须的各种软件包,从而可以安装build-essential。

3 安装内核源码与相应的头文件

要编译安装驱动模块,我们首先要安装相应的内核源码与相应的内核头文件。当然,如果我们是自己编译安装的内核,在/usr/src目录下有编译安装内核时所用的源码,那么就可以跳过这一步了。如果不是这样,那么我们就要先安装相应的源码与头文件。

我们可以用下面的命令来确定我们所用的内核版本信息,我们将要安装的内核源码与头文件要与我们正使用的内核版本相匹配:

# uname -a

安装内核源码:

# apt-get install linux-source-`uname -r`

安装相应的头文件:

# apt-get install linux-headers-`uname -r`

4 编译安装驱动模块:

这样以后,我们就可以进入/usr/src目录下来编译安装我们所需要的驱动模块了。在安装之后,我们可以用下面的命令来驱动更新:

# m-a update

如果我们要为显卡安装fglrx驱动模块,我们就可以用下面的命令来自动安装:

# m-a a-i fglrx

这个命令可以完成相应驱动模块的自动编译安装过程。事实上,这个命令是由相应的get,build,install三个命令组成的。如果我们要详细的看到编译安装的过程,我们可以分别调用这三个命令来完成安装的过程:

获取驱动源码:

# m-a get fglrx

这会下载所指定的驱动源码,并且解压到/usr/src/modules目录下。

编译驱动模块:

# m-a build fglrx

经过编译以后就会在/usr/src/目录下生成相应的deb安装包。我们可以用m-a来安装:

# m-a install fglrx

当然,对于这样的deb包,我们也可以使用dpkg来安装:

# dpkg -i fglrx-xxx.deb

5 载入驱动模块

在安装驱动模块以后,我们可以载入驱动模块,可以来确定我们的驱动模块是否成功安装:

# modprobe fglrx

如果成功载入,则说明我们的驱动模块安装成功。否则,就要进行错误检查了。如果安装成功,我们就要编辑系统驱动配置文件,从而可以使得系统在启动的时候可以自动装入驱动模块:

# vim /etc/modules

写入系统启动时要载入的驱动模块即可。

That's all~~Enjoy it~~

Debian下编译安装驱动模块的更多相关文章

  1. debian下编译安装poco

    系统环境: debian版本:Linux localhost.localdomain 3.10.0-862.14.4.el7.x86_64 #1 SMP Wed Sep 26 15:12:11 UTC ...

  2. debian下编译安装redis并加入到systemd启动管理

    原文地址: http://blog.duhbb.com/2022/02/09/compile-and-install-redis-debian-and-add-to-systemd/ 欢迎访问我的个人 ...

  3. ubuntu下编译安装poco

    系统环境: ubuntu版本:Linux jfcai-VirtualBox 4.15.0-29-generic #31-Ubuntu SMP Tue Jul 17 15:39:52 UTC 2018 ...

  4. linux下编译安装vim7.4并安装clang_complete插件

    linux下编译安装vim7.4并安装clang_complete插件 因为debian里软件仓库中下载安装的vim是不支持python写的插件的(可以打开vim,在命令模式先输入:py测试一下),导 ...

  5. ubuntu14.04下编译安装ambari-2.4.2.0

    ubuntu14.04下编译安装ambari-2.4.2.0 编译前的准备工作 准备工作有: 系统参数 系统依赖(编译环境) 离线安装包 java环境 maven环境 Nodejs环境 git环境 a ...

  6. linux安装软件的几种方法----linux下编译安装软件的一般步骤

    linux安装软件的几种方法: 一.rpm包安装方式步骤: 1.找到相应的软件包,比如soft.version.rpm,下载到本机某个目录: 2.打开一个终端,su -成root用户: 3.cd so ...

  7. 不要着急改代码,先想想--centos 6.8下编译安装tmux

    诸位读者新年好,2017开年第一篇博客,请允许我先问候一下看到这篇博客的诸位.写博客是我2017年定下的目标之一,希望我会坚持下去. 最近打算尝试一下tmux这个神器,于是有了这一篇关于思维方式的Bl ...

  8. centos下编译安装lnmp

    centos下编译安装lnmp 本文以centos为背景在其中编译安装nginx搭建lnmp环境. 编译安装nginx时,需要事先安装 开发包组"Development Tools" ...

  9. libCURL开源库在VS2010环境下编译安装,配置详解

    libCURL开源库在VS2010环境下编译安装,配置详解 转自:http://my.oschina.net/u/1420791/blog/198247 http://blog.csdn.net/su ...

随机推荐

  1. 实现上拉加载更多的SwipeRefreshLayout

    转载请标明出处: http://blog.csdn.net/developer_jiangqq/article/details/49992269 本文出自:[江清清的博客] (一).前言: [好消息] ...

  2. Hudson版本控制 (备注)

    http://www.ttlsa.com/tools/install-hudson-on-linux/

  3. 窗体背景的绘制(Windows窗体每次都会重绘其窗体背景,所以我们可以通过拦截窗体重绘背景的消息(WM_ERASEBKGND),并自定义方法来实现重绘窗体背景)

    核心思想:由于Windows窗体每次都会重绘其窗体背景,所以我们可以通过拦截窗体重绘背景的消息(WM_ERASEBKGND),并自定义方法来实现重绘窗体背景.通过TImage组件也可以实现,但是重写W ...

  4. NOIP模拟 string - ac自动机

    题目大意: 给n个字符串(100位以内),和一个长串s(100000位以内),求n个字符串在s中出现的次数.然后给出m次修改,每次修改s中的一个字符,对于每次修改,输出更新后的答案(修改会保存). 题 ...

  5. Fiddler快速入门(还有一个功能就是不经过网络,直接模拟一个响应返回给客户端)

    Fiddler是一个免费.强大.跨平台的HTTP抓包工具.Wireshark也是一个强大的抓包工具,不过Wireshark是一个通用的抓包工具,主要精力放在各种协议上了,针对HTTP的特定功能较少.所 ...

  6. SQLite的查询优化

    SQLite是个典型的嵌入式DBMS,它有很多优点,它是轻量级的,在编译之后很小,其中一个原因就是在查询优化方面比较简单,它只是运用索引机制来进行优化的,经过对SQLite的查询优化的分析以及对源代码 ...

  7. FileReader的编码问题

    有一个UTF-8编码的文本文件,用FileReader读取到一个字符串,然后转换字符集:str=new String(str.getBytes(),"UTF-8");结果大部分中文 ...

  8. 【Struts2学习笔记(4)】指定需要Struts 2请求后缀的常量定义复杂的过程

    一.指定需要Struts 2请求后缀处理 我们是在违约前.action后缀访问Action. 事实上默认后缀是通过不断"struts.action.extension"进行更改.例 ...

  9. 什么是“恶意代码”——————【Badboy】

    恶意代码是一种程序,它通过把代码在不被察觉的情况下镶嵌到还有一段程序中,从而达到破坏被感染电脑数据.执行具有入侵性或破坏性的程序.破坏被感染电脑数据的安全性和完整性的目的. 按传播方式,恶意代码能够分 ...

  10. C++闭包,一样很简单

    引用百度上对闭包的定义:闭包是指可以包含自由(未绑定到特定对象)变量的代码块:这些变量不是在这个代码块内或者任何全局上下文中定义的,而是在定义代码块的环境中定义(局部变量).“闭包” 一词来源于以下两 ...