ubuntu14 编译安装更新内核及驱动

为了方便修改驱动,使用原生安装的内核跟自己编译的驱动已经不匹配,所以需要重新下载内核源码编译安装。

一、内核更新安装

1、查看自身系统的内核版本

2、去内核官网下载内核源码

3、配置内核

得到内核之后你肯定要对其进行配置,不然最后和你的电脑不适配,也是有问题的。我进行配置的办法是将现有内核的配置选项复制到你要编译的新内核上去。首先,我们要把原来内核的选项配置复制出来cp /boot/config- 4.2.0-23-generic ./.config 这句话的意思是将我现有的内核(4.15-23)版本的config配置信息复制到现在目录下的 .config里面,最后通过make menuconfig 对内核选
4、编译内核

sudo make -j20

5、编译模块

sudo make moudles

6、 安装模块 

sudo make modules_install

7、安装内核

sudo make install

8、重启查看内核版本

sudo reboot

uname -a

9、更改默认引导的内核

首先找到内核名称。

grep menuentry /boot/grub/grub.cfg

要将默认内核更改为启动,可以执行以下操作:

  1. 打开文件/ etc / default / grub。

  2. 将GRUB_DEFAULT的值更改为您希望选择的菜单选项的索引值。

    例如,在启动过程中的GRUB菜单中有:

    Ubuntu

    Advanced options for Ubuntu

    Windows 10 (loader) (on /dev/sda1)

    system setup

我的 “Advananced options for Ubuntu” 子菜单如下所示:

Ubuntu, with Linux 4.13.0-26-generic

Ubuntu, with Linux 4.13.0-26-generic (upstart)

Ubuntu, with Linux 4.13.0-26-generic (recovery mode)

Ubuntu, with Linux 4.10.0-42-generic

Ubuntu, with Linux 4.10.0-42-generic (upstart)

Ubuntu, with Linux 4.10.0-42-generic (recovery mode)

现在,第一个选项是索引0,第二个是1,第三个是2,依此类推。(即GRUB菜单中的 Ubuntu为0,Advanced options for Ubuntu为1,…)

在我的情况下,我想选择 “Advanced options for Ubuntu” 子菜单中的 “Ubuntu, with Linux 4.10.0-42-generic”

设置 # sudo /etc/default/grub

将GRUB_DEFAULT设为:

GRUB_DEFAULT = “1> 3”

使用 ‘>’ 符号来指定有一个子菜单(注意符号 > 和数字 3 之间有空格,所以需要双引号)。在这种情况下,我在主菜单中选择第2个选项(索引1),在子菜单中选择第四个选项(索引3)。

菜单选项来自文件/boot/grub/grub.cfg(不要编辑这个文件)。

  1. 一旦对/etc/default/grub进行了更改,请保存并运行以下命令来更新GRUB配置文件(必须,否则不生效):
    sudo update-grub
  2. 重新启动,现在应该默认启动新的内核版本。

二、驱动编译加载

在加载/lib/modules/4.4.209/kernel/drivers/net/usb/GobiNet.ko时遇到如下问题

insmod: ERROR: could not insert module GobiNet.ko: Unknown symbol in module

可能是几种原因

1、gcc版本不同

新编译的内核,不存在这种问题,排除

2、模块依赖项是否加载

有可能是该模块的相关依赖没有加载

先执行命令:modinfo xxxx.ko

查看 depends:所依赖的模块

先加载依赖模块,然后加载xxxx.ko模块

或者直接用modprobe xxx进行加载

3、内核模块原本有问题

 

 

 

发布了12 篇原创文章 · 获赞 2 · 访问量 7650
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章