前言:

前面的方法讲完了,接下来我们来看看实例(我自己电脑的配置)。

这里我只打算列出几项重要的驱动配置来,其它的请自行查阅gentoo wiki!

再次强调,这是我自己电脑的硬件驱动配置,不可能完全适用于你的电脑,仅供大家参考,切忌无脑照抄。

一、PCI/PCIe总线设备

(一)PCI support

location:Device Drivers ---> PCI support

注释:

#PCI(外设部件互连标准)是目前个人电脑中使用最为广泛的接口,几乎所有的主板产品上都带有这种插槽,你的内存条、独立显卡、声卡、网卡等等都是插在上面的。“PCI support”意为开启PCI插槽的驱动支持,只要是个电脑都必须开启。

#PCIe(PCI-Express)是PCI的进化版本,具有更高的最大系统总线吞吐量,更低的I/O引脚数量和更小的物理尺寸,更好的总线设备性能缩放。“PCI Express Port Bus support”意为开启PCIe的驱动支持,基本上2006年以后的电脑主板都已经全部标配PCIe了,所以必须开启。

(二)Bus options (PCI etc.)

location:Bus options (PCI etc.)

二、I2C设备

location:Device Drivers ---> I2C support

注释:

#使用Nvidia闭源驱动的用户,必须把“NVIDIA GPU I2C controller”这一项禁用,否则会与驱动冲突。图中已经用白色标出了。

三、HID设备

location:Device Drivers ---> HID support

四、硬盘驱动和文件系统支持

(一)硬盘驱动/块设备驱动

1.Enable the block layer

location:Enable the block layer

2.SCSI device support

location:Device Drivers ---> SCSI device support

3.Serial ATA and Parallel ATA drivers (libata)

​ location:Device Drivers ---> Serial ATA and Parallel ATA drivers (libata)

(二)文件系统支持

location:File systems

注释:

#所谓“文件系统”(file system)就是你的硬盘分区的分区格式。我的硬盘里只有ext4、xfs、ntfs、fat32这四种分区,所以只选了这几种,其它的全部禁用。

exfat分区格式的支持不在这里设置,而是在Device Drivers ---> Staging drivers ---> exFAT fs support这一项里

(三)如何抛弃initramfs,只用单内核vmlinux?

很简单。

首先你得把你的硬盘驱动找出来,而且要找全了;再把自己需要的文件系统全部选出来。

之后,必须把你的硬盘驱动和根分区/的文件系统(分区格式)按Y键直接编译进内核里,而不能编译为模块,切记!!否则在去除了initramfs后,你的单内核是不可能成功启动的,最后只会给你显示一行“kernel panic”。

最后,只需要到General setup ---> Initial RAM filesystem and RAM disk (initramfs/initrd) support,把这一项禁用即可。

看,这就是我的/boot目录——

眼见为实,只有一个vmlinux单内核文件,是没有initramfs的哦~~而且我的单内核的体积只有10.3mb哦,这还是把所有驱动全部编译进内核了,非常小巧。所以精简完所有不需要的驱动后,你也能和我一样!

由于不再需要加载initramfs,单内核开机加载的速度会大大加快,我的电脑可以在5秒内进入桌面系统(我用的是openRC,不是systemd)。这是个很有意思的方案,去试试吧!

五、USB设备的驱动

location:Device Drivers ---> USB support

六、MMC/SD储存卡的驱动

1.MMC/SD/SDIO card support

location:Device Drivers ---> MMC/SD/SDIO card support

2.Misc devices

location:Device Drivers ---> Misc devices

注释:

#我的MMC/SD储存卡读卡器是realtek的。

七、网卡驱动

(一)有线网卡

location:Device Drivers ---> Network device support ---> Ethernet driver support

注释:

#这是realtek有线网卡。

若果你是宽带拨号上网(PPPoE),还应该把下图中

“PPP (point-to-point protocol) support”和“PPP over Ethernet”及其周围的选项都开启。

(二)无线网卡

1.Wireless LAN

location:Device Drivers ---> Network device support ---> Wireless LAN

如果你想把iwlwifi驱动直接编译进内核,那么你还需要将/lib/firmware目录下的iwlwifi-xxxx.ucode固件文件添加编译进内核中,“xxxx”为固件的型号和版本号。编译为模块module的不需要这么做,内核会自动识别并加载。

不知道该选哪个固件的,可以先跳过这步,等编译完内核开机后,通过dmesg命令查看关于iwlwifi的输出结果,再重新配置内核把这个固件补上,重新编译一次内核。

注释:

#这是intel的普通无线网卡。

为了增加iwlwifi无线网卡的网速,你可以通过修改grub的默认配置文件,在内核开机加载时由grub向内核传递以下启动参数——

sudo vim /etc/default/grub:GRUB_CMDLINE_LINUX_DEFAULT="iwlwifi.swcrypto=0 iwlwifi.11n_disable=8 iwlwifi.lar_disable=1 iwlwifi.enable_ini=0 iwlwifi.power_save=0 iwlwifi.fw_monitor=0"sudo grub-mkconfig -o /boot/grub/grub.cfgsudo reboot

2.1 cfg80211 - wireless configuration API

location:Networking support ---> Wireless ---> cfg80211 - wireless configuration API

#iwd需要开启“support CRDA”。

如果你想把“cfg80211 - wireless configuration API”和“Generic IEEE 802.11 Networking Stack (mac80211)”这两项直接编译进内核,那么你还需要将/lib/firmware目录下的regulatory.db和regulatory.db.p7s这两个文件添加编译进内核中。编译为模块module的不需要这么做。

2.2 RF switch subsystem support

location:Networking support ---> RF switch subsystem support

八、显卡驱动

location:Device Drivers ---> Graphics support

(一)Intel UHD630核心显卡

因为我想把intel核显驱动直接编译进内核,所以我还将/lib/firmware目录下的i915/kbl_guc_33.0.0.bin、i915/kbl_huc_ver02_00_1810.bin、i915/kbl_dmc_ver1_04.bin这三个固件文件添加编译进内核中了。

不知道该选哪几个固件的,可以先跳过这步,等编译完内核开机后,通过dmesg命令查看关于i915的输出结果,再重新配置内核把这几个固件补上,重新编译一次内核。

为了加快内核开机加载intel核显驱动的速度,你可以通过修改grub的默认配置文件,在内核开机加载时由grub向内核传递以下启动参数——

sudo vim /etc/default/grub:GRUB_CMDLINE_LINUX_DEFAULT="i915.fastboot=1"sudo grub-mkconfig -o /boot/grub/grub.cfgsudo reboot

intel核显的内核层驱动安装完后,你还需要安装其用户层的驱动

sudo emerge media-libs/mesa

注释:

#所以可以看出dmesg命令对配置内核驱动还是有很重要的有帮助的~~

(二)Nvidia独立显卡的闭源驱动

配置nvidia的内核驱动很简单——内核中一切与nvidia和noeuveau有关的驱动全部禁用!!这是遵照Nvidia官方闭源驱动说明书册的指导原则,否则linux内核中的nvidia驱动会和Nvidia官方闭源驱动模块起冲突。

如你所见,有关nvidia和noeuveau选项一个都没有选。

nvidia独显的内核层驱动配置完后(实际上是全部禁用后),你还需要安装其用户层的驱动

sudo emerge x11-drivers/nvidia-drivers

九、声卡驱动

location:Device Drivers ---> Sound card support

注释:

#这是Intel HD Audio声卡。

#由于我的声卡解码芯片是Realtek的,所以也启用了“Build Realtek HD-audio codec support”这一项。

如果你想把snd_hda_intel驱动直接编译进内核,你需要修改grub的默认配置文件,在内核开机加载时由grub向内核传递以下启动参数——

sudo vim /etc/default/grub:GRUB_CMDLINE_LINUX_DEFAULT="snd_hda_intel.probe_mask=1"sudo grub-mkconfig -o /boot/grub/grub.cfgsudo reboot

否则你的声卡驱动将不能正常加载,电脑的扬声器、耳机都不能发出声音。

建议到General setup ---> Timers subsystem ---> High Resolution Timer Support,开启这一项。一些视频或音频程序需要开启此项支持,以获得良好的音视频体验,如pulseaudio。

十、输入设备(鼠标、键盘、触摸板)

location:Device Drivers ---> Input device support

注意使用桌面系统者,除了键盘、鼠标、触摸板的驱动之外,你还得开启“Event interface”这一项功能。否则就会出现桌面系统下鼠标、键盘、触摸板完全无响应,但是在纯命令行tty系统界面下却能正常使用的问题。

修改grub的默认配置文件,在内核开机加载时由grub向内核传递以下启动参数,以保证使用鼠标本身设定的刷新率——

sudo vim /etc/default/grub:GRUB_CMDLINE_LINUX_DEFAULT="usbhid.mousepoll=0"sudo grub-mkconfig -o /boot/grub/grub.cfgsudo reboot

十一、什么是内核启动/引导参数?

说白了,就是被直接编译到内核中的驱动的控制参数,只不过配置的方式比较特别——需要配置grub的引导设置,往里面添加这些驱动的控制参数。

从功能上来说,被直接编译到内核中的驱动的“内核启动/引导参数”和被编译为模块module的驱动的“模块控制参数”是一样的。比如说

如果你将snd_hd_intel这个驱动编译进内核,那么你就得通过修改grub的默认配置文件,在内核开机加载时由grub向内核传递启动参数——

sudo vim /etc/default/grub:GRUB_CMDLINE_LINUX_DEFAULT="snd_hda_intel.probe_mask=1"sudo grub-mkconfig -o /boot/grub/grub.cfgsudo reboot

如果你将snd_hd_intel驱动编译为模块module,那么你需要到/etc/modprobe.d目录下创建一个配置文件,然后将驱动的控制参数写进这个配置文件中——

cd /etc/modprobe.d/      #该目录下收集了所有被编译为模块的驱动的控制参数配置文件,但凡需要改动驱动模块的参数,都得来这个目录里找创建相应的配置文件,写入控制参数sudo touch hd-audio.conf       #配置文件名取成什么不重要sudo vim hd-audio.conf:option snd_hd_intel probe_mask=1

从上面可以看出,“内核启动/引导参数”和“模块控制参数”本质上是一样的,只是应用的场景不一样、形式不一样罢了,但是结果和功能上来说是一样的。

“内核启动/引导参数”的格式是——

<硬件驱动名>.<控制选项>=<参数>

“模块控制参数”的格式是——

option <硬件驱动名> <控制选项>=<参数>

将驱动编译为module后,可以通过以下命令查看该模块的“模块控制参数”

modinfo <硬件驱动名>

比如我的nvidia闭源驱动模块——

可以看到,“parm:”后面的就是驱动模块的控制参数,有很多。

硬件驱动被编译为module后,其文件名就是

<硬件驱动名>.ko

位于/lib/modules目录下。

intel x520网卡驱动_手工编译linux桌面内核(二)——硬件驱动的配置 下篇相关推荐

  1. linux手动连接网络打印机驱动_怎么在Linux上安装打印机驱动

    怎么在Linux上安装打印机驱动(以Ubuntu为例) 通常来说,你不需要手动在Linux上安装硬件驱动.系统会自动检测计算机硬件,然后自动为你安装驱动.但是,对于打印机,情况就不一样了.事实上,Li ...

  2. [linux kernel] 内核下ksz8081驱动调试

    系统版本:Ubuntu18.04-64 编译器版本:gcc version 7.4.0 (Ubuntu/Linaro 7.4.0-1ubuntu1~18.04.1) uboot版本:2018.07 - ...

  3. Linux桌面版安装及开发环境配置

    Linux桌面版安装及开发环境配置 1.安装Linux For Desktop 本文所面向对象无非也是和本人一样的技术小白,和windows系统以及mac不同,对于linux系统的选择却也是众说纷纭, ...

  4. rmmod无法卸载驱动_笔记:linux驱动开发(1、了解内核模块)

    文章目录 一个最简单的驱动模块 驱动编译的Makefile 相关命令 错误解决: 点击下方阅读原文可访问文中超链接 一个最简单的驱动模块 一个精简的驱动模块可以只有不到10行的内容,如下是一个简单的测 ...

  5. usb接口驱动_乾坤合一~Linux设备驱动之USB主机和设备驱动

    这一章从主机侧角度看到的USB 主机控制器驱动和设备驱动从主机侧的角度而言,需要编写的USB 驱动程序包括主机控制器驱动和设备驱动两类,USB 主机控制器驱动程序控制插入其中的USB 设备,而USB ...

  6. 手工编译Linux内核rpm包

    [from: https://blog.csdn.net/wylfengyujiancheng/article/details/67644077] 在实际的生产环境中由于一些bug或内核功能限制需要打 ...

  7. 全志t3linux驱动_全志T3 Linux显示驱动分析

    1.总体架构 全志T3处理器的显示框架是基于标准Linux的帧缓冲架构,其结构如图 1.1所示.显示控制器DE的驱动架构如图 1.2所示,包括屏蔽差异的显示管理抽象层,以及显示图层驱动.显示设备驱动. ...

  8. linux安装旧版硬件驱动,【工程师笔记】第四期:老版Linux不用愁 ——使用DKMS轻松制作RAID卡驱动...

    做技术的朋友可能有过类似这样的感觉--每天都会遇到新的问题,或者学到新的知识.然而一个人的时间和精力毕竟有限,不是所有的岗位都能做到总是亲力亲为,每人最擅长的领域也各不相同.为了使工程师自己踩过的坑. ...

  9. linux 保留内核中sas驱动的加载导致crash问题

    [root@localhost ~]# uname -a Linux localhost.localdomain 3.10.0-693.5.2.el7.x86_64 问题描述,在crash的时候,小内 ...

最新文章

  1. 那xxx.class.getName()為什麼能這樣寫?? 看了半天都快搞不清楚到底在程式中的example到底是class ? object ? 還是instance了
  2. tftp环境搭建笔记
  3. [转]查询oracle数据库的数据库名、实例名、ORACLE_SID
  4. 【数据结构】图的深度优先搜索
  5. WIN10 查看已经连接的wifi的密码
  6. 前端学习(2392):关于路径中的@
  7. mysql-mmm官方安装指南翻译
  8. Android-利用LinearGradient实现文字一闪一闪
  9. 互动快报读报软件绿色版 v5.061
  10. 计算机大赛鼓励语录,比赛加油鼓励经典语录
  11. 王家林老师 大数据学习之路
  12. tersorrt安装_pytorch/mxnet模型tensorrt部署
  13. 五大主流浏览器和内核
  14. GitLab CI/CD中的常用预设变量
  15. 三星S5P4418工控主板 (ARM Cortex-A9架构)
  16. 无线猫能做打印服务器,光猫能做服务器用吗
  17. matlab中计算运行时间的函数,【谁能都我一个计算时间的函数?是计算:例如上午08:00...-计算时间的函数-数学-伊凡渴同学...
  18. HGOI8.23集训题解
  19. c 语言开机自动播放视频,小编为你win7系统电脑开机总是自动播放音乐的操作方案...
  20. 虚拟人成企业形象代言新战场,虚拟数字人制作赋能品牌新商业价值

热门文章

  1. android监听动画完成,android判断动画已结束示例代码
  2. ali arthas 火焰图_阿里巴巴 Arthas 3.1.5版本支持火焰图,快速定位应用热点
  3. python ssh模块_python ssh之paramiko模块使用
  4. mysql groupby php_php – MySQL,GroupBy OrderBy
  5. 还原oracle控制文件位置,oracle 11.2 控制文件还原
  6. Java21天打卡Day6-switch
  7. 21天Jmeter打卡day15 配置元件之用户定义的变量
  8. 交换机tftp服务器修改ip,华为交换机tftp服务器地址
  9. oracle 安装的提示ntp,oracle rac 安装 PRVG-13606 ntp 同步报错解决过程
  10. excel工具箱_Excel工具箱15.54安装教程