在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. Android Gradle Plugin指南(三)——依赖关系、android库和多项目配置

    原文地址:http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Dependencies-Android-Librari ...

  2. [Angular] Using ngOnChanges lifeCycle hook to break object reference

    What could be the issue, for example we have two list: Parent component: @Component({ selector: 'pas ...

  3. 【Linux】Linux下配置apache - 安装文件夹具体解释

    一,apache安装路径解释 默认安装路径   /var/apache2 # /etc/apache2/ # |-- apache2.conf # | `--  ports.conf # |-- mo ...

  4. 【转】关于python中带下划线的变量和函数 的意义

    http://www.blogjava.net/lincode/archive/2011/02/02/343859.html 总结: 变量: 1.  前带_的变量:  标明是一个私有变量, 只用于标明 ...

  5. duplicate symbols for architecture

    duplicate symbols for architecture   XCODE编译的时候报错:duplicate symbols for architecture armv7   1.首先排查是 ...

  6. 学习算法 - 表指针实现~ C++

    表指针实现.第二种方法是使用访问列表,模拟指针. 在我的理解中学习,它是创建一个节点数组,模拟存储装置,然后从中分配内存和释放内存. 但实际的内存没有被释放~ 下面的代码直接附着: // // mai ...

  7. 学习鸟哥的Linux私房菜笔记(5)——目录

    一.目录 目录在文件类型上用d来表示,用 / 分割目录层 Linux操作系统 都有且仅有一个起始目录,我们用一个单独的 /来表示,称其为根目录. 对每一个Shell和操作环境,都有一个当前的工作目录. ...

  8. CF337D Book of Evil - 树型dp

    传送门 题目大意: 一棵树上有一个特殊点,特殊点可以影响距离小于等于d的点,现在告诉被影响的点,问特殊点可以在几个点上. 题目分析: 对题意进行转化:求到被影响点的最大距离小于等于d的点数目. 然后就 ...

  9. NOIP模拟 poke - 贪心

    题目大意: 给一副牌(\(n \le 1000000, a_i \le 1000000\)),问最多能打出多少对对子(x, x)或者顺子(x, x + 1, x + 2). 题目分析: 感觉跟斗地主很 ...

  10. Java堆/栈/常量池以及String的详细详解(转)------经典易懂系统

    一:在JAVA中,有六个不同的地方可以存储数据: 1. 寄存器(register). 这是最快的存储区,因为它位于不同于其他存储区的地方——处理器内部.但是寄存器的数量极其有限,所以寄存器由编译器根据 ...