在大多数情况下,如果你还没有升级过内核那么可以试试升级一下内核。搞定之后,也许你的问题就会在最新发布的内核中解决。如果你尝试后发现不起作用,那么你应该下载正在运行内核的源码。大多数发行版提供了特定的命令来完成这件事,但是手动操作的话,可以在 kernel.org 上找到它的源代码。
你必须下载内核所需的任何补丁。有时候,这些补丁对应具体的内核版本,因此请谨慎选择。
通常,或至少在人们习惯于编译内核的那时,都是拿到源代码并对 /usr/src/linux 打上补丁。
解压内核源码并打上需要的补丁:
$ cd /usr/src/linux $ bzip2 --decompress linux-5.2.4.tar.bz2 $ cd linux-5.2.4 $ bzip2 -d ../patch*bz2
补丁文件也许包含如何使用的教程,但通常它们都设计成在内核源码树的顶层可用来执行。
$ patch -p1 < patch*example.patch
当内核代码打上补丁后,你可以继续使用旧的配置来对打了补丁的内核进行配置。
$ make oldconfig
make oldconfig 命令有两个作用:它继承了当前的内核配置,并且允许你配置补丁带来的新的选项。
你或许需要运行 make menuconfig 命令,它启动了一个基于 ncurses 的菜单界面,列出了新的内核所有可能的选项。整个菜单可能看不过来,但是它是以旧的内核配置为基础的,你可以遍历菜单并且禁用掉你没有或不需要的硬件模块。另外,如果你知道自己有一些硬件没有包含在当前的配置中,你可以选择构建它,当作模块或者直接嵌入内核中。理论上,这些并不是必要的,因为你可以猜想,当前的内核运行良好只是缺少了补丁,当使用补丁的时候可能已经激活了所有设备所必要的选项。
下一步,编译内核和它的模块:
$ make bzImage $ make modules
这会产生一个叫作 vmlinuz 的文件,它是你的可引导内核的压缩版本。保存旧的版本并在 /boot 文件夹下替换为新的。
$ sudo mv /boot/vmlinuz /boot/vmlinuz.nopatch $ sudo cat arch/x86_64/boot/bzImage > /boot/vmlinuz $ sudo mv /boot/System.map /boot/System.map.stock $ sudo cp System.map /boot/System.map
(编辑:惠州站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|