linux内核编译指定驱动,linux内核编译,配置本机驱动

news/2024/11/16 7:37:38/

1.前言

编译linux内核失败的原因很多时候就是驱动选错,适合自己本机的驱动没编译进去。面对特殊平台(或者有些洁癖者,我就是^_^),要编译精简内核,只要本机驱动,其他都不需要。面对内核里面这么多驱动,不懂硬件的我们,看到都头大。本人第一次安装gentoo的时候,内核编译了5次,前4次主要失败原因是以太网卡驱动、无线网卡驱动、显卡驱动、声卡驱动都没一次性配置正确。虽然gentoo提供了genkernel命令,可以自动帮你编译内核,但还是想自己手工尝试下。

2.获取本机驱动信息

既然跟内核挂钩,我们获取本机内核驱动信息最直接的办法就是使用lspci命令,这个命令可以输出本机驱动信息,配合-k选项可以看到此驱动在内核的位子。

一般编译内核的场景:更新旧内核,安装定制版linux发行版(gentoo,arch等),嵌入式平台,其他特殊平台等等...

大部分场景在下都可以使用lspci命令,安装gentoo的livecd版都提供了该工具,如果其他系统没有就安装该工具

debian系列安装

1 $:sudo apt-get install pciutils

或者源码编译安装,下载地址外链网址已屏蔽

然后我们获取本机环境现存的驱动信息,下面是我的机器上面的信息:

1 $:lspci -k2 00:00.0 Host bridge: Intel Corporation 2nd Generation Core Processor Family DRAM Controller (rev 09)3 Subsystem: Lenovo Device 21e24 00:01.0 PCI bridge: Intel Corporation Xeon E3-1200/2nd Generation Core Processor Family PCI Express Root Port (rev 09)5 Kernel driver inuse: pcieport6 00:02.0 VGA compatible controller: Intel Corporation 2nd Generation Core Processor Family Integrated Graphics Controller (rev 09)7 Subsystem: Lenovo Device 21e38 Kernel driver inuse: i9159 00:16.0 Communication controller: Intel Corporation 6 Series/C200 Series Chipset Family MEI Controller #1 (rev 04)10 Subsystem: Lenovo Device 21e211 Kernel driver inuse: mei_me12 00:1a.0 USB controller: Intel Corporation 6 Series/C200 Series Chipset Family USB Enhanced Host Controller #2 (rev 04)13 Subsystem: Lenovo Device 21e214 Kernel driver in use: ehci-pci15 00:1b.0 Audio device: Intel Corporation 6 Series/C200 Series Chipset Family High Definition Audio Controller (rev 04)16 Subsystem: Lenovo Device 21e217 Kernel driver inuse: snd_hda_intel18 00:1c.0 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 1(rev b4)19 Kernel driver inuse: pcieport20 00:1c.1 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 2(rev b4)21 Kernel driver inuse: pcieport22 00:1c.2 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 3(rev b4)23 Kernel driver inuse: pcieport24 00:1c.3 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 4(rev b4)25 Kernel driver inuse: pcieport26 00:1c.7 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 8(rev b4)27 Kernel driver inuse: pcieport28 00:1d.0 USB controller: Intel Corporation 6 Series/C200 Series Chipset Family USB Enhanced Host Controller #1 (rev 04)29 Subsystem: Lenovo Device 21e230 Kernel driver in use: ehci-pci31 00:1f.0 ISA bridge: Intel Corporation HM65 Express Chipset Family LPC Controller (rev 04)32 Subsystem: Lenovo Device 21e233 Kernel driver inuse: lpc_ich34 00:1f.2 SATA controller: Intel Corporation 6 Series/C200 Series Chipset Family 6 port SATA AHCI Controller (rev 04)35 Subsystem: Lenovo Device 21e236 Kernel driver inuse: ahci37 00:1f.3 SMBus: Intel Corporation 6 Series/C200 Series Chipset Family SMBus Controller (rev 04)38 Subsystem: Lenovo Device 21e239 01:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Seymour [Radeon HD 6400M/7400M Series] (rev ff)40 Kernel driver inuse: radeon41 03:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 06)42 Subsystem: Lenovo Device 21e243 Kernel driver inuse: r816944 04:00.0 System peripheral: Ricoh Co Ltd PCIe SDXC/MMC Host Controller (rev 07)45 Subsystem: Lenovo Device 21e246 Kernel driver in use: sdhci-pci47 09:00.0 Network controller: Realtek Semiconductor Co., Ltd. RTL8188CE 802.11b/g/n WiFi Adapter (rev 01)48 Subsystem: Realtek Semiconductor Co., Ltd. Device 8195

49 Kernel driver in use: rtl8192ce

我们可以看到每个驱动后面都有Kernel driver in use:,代表驱动在内核中的链接位子。

3.配置内核驱动

下载内核源码外链网址已屏蔽,我这里下载的是stable 4.3.3,解压后进入源码目录执行:

1 $:make menuconfig

接下来就会弹出编译选项界面,如图:

%E5%A4%96%E9%93%BE%E7%BD%91%E5%9D%80%E5%B7%B2%E5%B1%8F%E8%94%BD

我们可以看到上面有快捷键操作说明,我重点在> for Search,在界面直接按反斜杠,进入搜索界面。接下来挑个重点驱动说明一下,我们看

Network controller,可以看到型号是Realtek  RTL8188CE,然后Kernel driver in use: rtl8192ce,在内核的位子链接是rtl8192ce

我们按>,输入rtl8192ce,然后回车,就会出现详细位子,如图:

%E5%A4%96%E9%93%BE%E7%BD%91%E5%9D%80%E5%B7%B2%E5%B1%8F%E8%94%BD

%E5%A4%96%E9%93%BE%E7%BD%91%E5%9D%80%E5%B7%B2%E5%B1%8F%E8%94%BD

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

%E5%A4%96%E9%93%BE%E7%BD%91%E5%9D%80%E5%B7%B2%E5%B1%8F%E8%94%BD

我们看到上面,发行版为了兼容各种机器,把所有Realtek的驱动都编译进成了模块。接下来就保留自己的驱动型号,去掉其他不要的。

剩下的驱动跟上面操作一样的,还有的不必要驱动是直接编译进了内核,非模块。对照自己的驱动,其他都可以不要。配置好后的内核

配置文件最好保存下来,如果驱动没配置成功,再配置的时候把保存的配置文件复制一份到源码目录,命名为.config。继续make menuconfig配置。


http://www.ppmy.cn/news/734961.html

相关文章

Linux驱动

按照常规分类方法,linux驱动可以分为字符设备,块设备,和网络设备。 字符设备是一种按字节来访问的设备,字符驱动则负责驱动字符设备,这样的驱动通常支持open,close,read和write系统调用。例&…

驱动开发——HelloWDM驱动

友链 hellowdm.h // 保证头文件只被编译一次 // 因为在实际项目中&#xff0c;一个头文件可能会被另一个头文件包含 // 比如b.h中包含了a.h // 然后在c.c中有如下代码&#xff1a; /* #include<a.h> #include<b.h> */ // 这样一来&#xff0c;a.h就被包含了两次 …

windows内核驱动开发

友链 hellodriver 使用VS2019 项目地址 代码 // I dont like NTSTATUS, it like shit typedef NTSTATUS _nt;/* your driver must implement two basic event callback fucnions at least which is:- DRIVER_INITIALIZE DriverEntry- EVT_WDF_DRIVER_DEVICE_ADD KmdfHello…

数据标注:数字病理学中的人工智能

在数字病理学中&#xff0c;组织样本的显微图像被传输到计算机&#xff0c;并使用先进的图像处理技术和计算机视觉对其进行分析。 医学图像和诊断的数字化为病理学中的人工智能开辟了途径。病理学家可以使用机器学习模型来进行增强分析并提高结果准确性。此外&#xff0c;病理学…

基于FreeRTOS的嵌入式设备管理关键技术研究及实现(学习二)

嵌入式操作系统FreeRTOS FreeRTOS是一个专门为轻量级嵌入式应用设计的迷你操作系统&#xff0c;它的主要功能由IPC、时钟管理、内存管理、任务通知以及任务调度等部分构成。 FreeRTOS的代码可以分解为三个主要区块&#xff1a;任务调度、通讯、硬件库。 任务调度&#xff1a;F…

蒲公英枸杞菊花可以一起泡茶喝吗?

这两年花草茶、花果茶甚是流行和风靡&#xff0c;加上人们对健康养生越来越重视&#xff0c;像蒲公英、菊花和枸杞这样组合在一起&#xff0c;人们也不陌生&#xff0c;三者不但都是传统的中药&#xff0c;更是一种食材&#xff0c;不管是泡水、煎汤、煮粥&#xff0c;都能起到…

常使用电脑的人可使用的护眼软件

我不是从事IT行业&#xff0c;是做计算模拟相关的。 因为公司网络限制先前使用电脑管家的健康小助手的一些小功能&#xff0c;但有天不能使用了&#xff0c;卸载不能自己安装。 试着找了找其他可代替的软件&#xff0c;发现了更多有用的。 定时休息 win7可以设置每隔1小时让电…

ubuntu各种实践笔记

一、精选命令 CtrlAltT&#xff1a;运行终端 CTRL Shift T&#xff1a;新建标签页。 CtrlShiftC/V&#xff1a;在终端上复制/粘贴 CtrlL&#xff1a;显示当前文件夹的地址栏&#xff0c;按ESC恢复 Tab&#xff1a;终端上自动补全命令名或文件名 CtrlH&#xff1a;单次显示当…