linux内核编译,配置本机驱动
1.前言
编译linux内核失败的原因很多时候就是驱动选错,适合自己本机的驱动没编译进去。面对特殊平台(或者有些洁癖者,我就是^_^),要编译精简内核,只要本机驱动,其他都不需要。面对内核里面这么多驱动,不懂硬件的我们,看到都头大。本人第一次安装gentoo的时候,内核编译了5次,前4次主要失败原因是以太网卡驱动、无线网卡驱动、显卡驱动、声卡驱动都没一次性配置正确。虽然gentoo提供了genkernel命令,可以自动帮你编译内核,但还是想自己手工尝试下。
2.获取本机驱动信息
既然跟内核挂钩,我们获取本机内核驱动信息最直接的办法就是使用lspci命令,这个命令可以输出本机驱动信息,配合-k选项可以看到此驱动在内核的位子。
一般编译内核的场景:更新旧内核,安装定制版linux发行版(gentoo,arch等),嵌入式平台,其他特殊平台等等...
大部分场景在下都可以使用lspci命令,安装gentoo的livecd版都提供了该工具,如果其他系统没有就安装该工具
debian系列安装
$:sudo apt-get install pciutils
或者源码编译安装,下载地址https://www.kernel.org/pub/software/utils/pciutils/
然后我们获取本机环境现存的驱动信息,下面是我的机器上面的信息:
$:lspci -k
:)
Subsystem: Lenovo Device 21e2
:/2nd Generation Core Processor Family PCI Express Root Port (rev )
Kernel driver in use: pcieport
:)
Subsystem: Lenovo Device 21e3
Kernel driver in use: i915
: Series/C200 Series Chipset Family MEI Controller # (rev )
Subsystem: Lenovo Device 21e2
Kernel driver in use: mei_me
:1a. USB controller: Intel Corporation Series/C200 Series Chipset Family USB Enhanced Host Controller # (rev )
Subsystem: Lenovo Device 21e2
Kernel driver in use: ehci-pci
:1b. Audio device: Intel Corporation Series/C200 Series Chipset Family High Definition Audio Controller (rev )
Subsystem: Lenovo Device 21e2
Kernel driver in use: snd_hda_intel
:1c. PCI bridge: Intel Corporation Series/C200 Series Chipset Family PCI Express Root Port (rev b4)
Kernel driver in use: pcieport
:1c. PCI bridge: Intel Corporation Series/C200 Series Chipset Family PCI Express Root Port (rev b4)
Kernel driver in use: pcieport
:1c. PCI bridge: Intel Corporation Series/C200 Series Chipset Family PCI Express Root Port (rev b4)
Kernel driver in use: pcieport
:1c. PCI bridge: Intel Corporation Series/C200 Series Chipset Family PCI Express Root Port (rev b4)
Kernel driver in use: pcieport
:1c. PCI bridge: Intel Corporation Series/C200 Series Chipset Family PCI Express Root Port (rev b4)
Kernel driver in use: pcieport
:1d. USB controller: Intel Corporation Series/C200 Series Chipset Family USB Enhanced Host Controller # (rev )
Subsystem: Lenovo Device 21e2
Kernel driver in use: ehci-pci
:1f. ISA bridge: Intel Corporation HM65 Express Chipset Family LPC Controller (rev )
Subsystem: Lenovo Device 21e2
Kernel driver in use: lpc_ich
:1f. SATA controller: Intel Corporation Series/C200 Series Chipset Family port SATA AHCI Controller (rev )
Subsystem: Lenovo Device 21e2
Kernel driver in use: ahci
:1f. SMBus: Intel Corporation Series/C200 Series Chipset Family SMBus Controller (rev )
Subsystem: Lenovo Device 21e2
:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Seymour [Radeon HD 6400M/7400M Series] (rev ff)
Kernel driver in use: radeon
:/ PCI Express Gigabit Ethernet Controller (rev )
Subsystem: Lenovo Device 21e2
Kernel driver in use: r8169
:)
Subsystem: Lenovo Device 21e2
Kernel driver in use: sdhci-pci
:.11b/g/n WiFi Adapter (rev )
Subsystem: Realtek Semiconductor Co., Ltd. Device
Kernel driver in use: rtl8192ce
我们可以看到每个驱动后面都有Kernel driver in use:,代表驱动在内核中的链接位子。
3.配置内核驱动
下载内核源码https://www.kernel.org/,我这里下载的是stable 4.3.3,解压后进入源码目录执行:
$:make menuconfig
接下来就会弹出编译选项界面,如图:

我们可以看到上面有快捷键操作说明,我重点在</> for Search,在界面直接按反斜杠,进入搜索界面。接下来挑个重点驱动说明一下,我们看
Network controller,可以看到型号是Realtek RTL8188CE,然后Kernel driver in use: rtl8192ce,在内核的位子链接是rtl8192ce
我们按</>,输入rtl8192ce,然后回车,就会出现详细位子,如图:


我们可以看到Pormt提示上面跟我要的型号一样,具体选项的前面有个(1),注意这里同一个Symbol(就是刚刚输入的rtl8192ce)有的对应很多选项,根据前面的序号,按对应的数字就可以直接进入选项,按<esc>可以返回来这个界面。这里,我直接按1。按1后,就到具体选项了,如图:

我们看到上面,发行版为了兼容各种机器,把所有Realtek的驱动都编译进成了模块。接下来就保留自己的驱动型号,去掉其他不要的。
剩下的驱动跟上面操作一样的,还有的不必要驱动是直接编译进了内核,非模块。对照自己的驱动,其他都可以不要。配置好后的内核
配置文件最好保存下来,如果驱动没配置成功,再配置的时候把保存的配置文件复制一份到源码目录,命名为.config。继续make menuconfig配置。
linux内核编译,配置本机驱动的更多相关文章
- Linux内核编译配置脚本
环境 宿主机平台:Ubuntu 16.04.6 目标机:iMX6ULL Linux内核编译配置脚本 在linux开发过程中熟练使用脚本可以大大简化命令行操作,同时对于需要经常重复操作的指令也是一种备忘 ...
- Linux内核编译完整过程
Linux内核编译完整过程 通过网上的资料我自己的实际内核编译,我把对Linux内核编译的过程写在这里,也许对其他的Linux爱好者的编译学习有些帮助,其中很大部分是网上的资料,另外就是我在实际编译过 ...
- linux内核编译环境配置
linux内核编译环境配置 如果不是编译内核,只需要安装与内核相匹配的kernel-devel开发包即可.即是/lib/modules/`uname -r`/build -> /usr/src/ ...
- 【内核】linux2.6版本内核编译配置选项(二)
目录 Linux2.6版本内核编译配置选项(一):http://infohacker.blog.51cto.com/6751239/1203633 Linux2.6版本内核编译配置选项(二):http ...
- 【内核】linux2.6版本内核编译配置选项(一)
Linux 2.6.19.x 内核编译配置选项简介 作者:金步国 版权声明 本文作者是一位自由软件爱好者,所以本文虽然不是软件,但是本着 GPL 的精神发布.任何人都可以自由使用.转载.复制和再分发, ...
- 运行在TQ2440开发板上以及X86平台上的linux内核编译
一.运行在TQ2440开发板上的linux内核编译 1.获取源码并解压 直接使用天嵌移植好的“linux-2.6.30.4_20100531.tar.bz2”源码包. 解压(天嵌默认解压到/opt/E ...
- Linux内核编译与安装
2013-04-16 Linux内核介绍 Linux内核是一个用C语言写成的,符合POSIX标准的类Unix操作系统.内核是操作系统中最基本的一部分,提供了众多应用程序访问计算机硬件的机制.L ...
- linux内核的配置
以2.6.35.7版本的内核为例 总结:.config决定了Make时的条件编译与连接..config文件由两次配置第一次make XX_defconfig 第二次menuconfig. 1.分析源码 ...
- Linux 内核 编译模块
背景: 由于调试内核或者由于分区大小限制,有时候内核组件不一定完全需要编进内核中. 所以,在开发中经常将内核组件编译成为模块,等到在恰当的时机加载. 概览: Linux内核模块的编译方法有两种: 1. ...
随机推荐
- VC Windows API获得桌面所有窗口句柄的方法
VC Windows API应用之GetDesktopWindow ——获得桌面所有窗口句柄的方法 Windows API Windows 这个多作业系统除了协调应用程序的执行.分配内存.管理资源…之 ...
- CSS行高line-height的理解
一.行高的字面意思 “行高“顾名思义指一行文子的高度.具体来说是指两行文子间基线间的距离. 基线是在英文字母中用到的一个概念,我们刚学英语的时候使用到的那个英语本子每行有4条线,其中底部第二条线就是基 ...
- [Eclipse] - 解决导入flask模块出现的Unresolved Import flask问题
http://www.cnblogs.com/mizhon/p/4242073.html [Eclipse] - 解决导入flask模块出现的Unresolved Import flask问题 最近想 ...
- ahjesus不断完善的js小"内裤"
String.prototype.isNullOrWhiteSpace = function () { /// <summary> /// 变量是undefined或者null或者空字符串 ...
- 部署时,出现用户代码未处理 System.Security.Cryptography.CryptographicException 错误解决方法
转载:http://www.cnblogs.com/jys509/p/4499978.html 在调用RSA加密的.pfx密钥时,在本地调试没有问题,可以布署到服务器,就会报以下的错误: 用户代码未处 ...
- 安全协议:SSL、TSL、SSH概述
SSL(Secure Socket Layer--安全套接字层):为网络通信安全以及数据完整性提供保障的一种安全协议,在TCP/IP的传输层对网络连接进行加密: TSL(Transport Layer ...
- Visual Studio添加dll程序集引用操作步骤
Visual Studio 中添加引用的操作: 在“解决方案资源管理器”中,先右击项目图标,在弹出菜单选择“添加引用...” 然后在弹出的窗口中选择所要添加的选项,点击确定就可以了. 原文:http: ...
- js中获取css属性
直接获取 window.onload = function() { var but = document.getElementById('button'); var div = document.ge ...
- 关于SharePoint 的Client object model该何时load和execut query的一点自己的看法
很多人在用client object model的时候,不知道何时或者该不该load,今天看到一个观点描述这个问题,觉得很有道理,和大家分享.那就是写client object model就像写sql ...
- 转:使用Nlog记录日志到数据库
原文:http://www.cnblogs.com/Gyoung/archive/2012/10/18/2729613.html Nlog是一个很不错的.NET日志记录组件,它可以将日志输出到控件台, ...