vmware ubuntu编译内核源码&内核驱动模块

参考

Ubuntu 10.04内核源码树的编译和安装 – 源码巴士

ubuntu编译安装kernel教程。_ubuntu kernel_搜索:蓝易云的博客-CSDN博客

版本信息

vmware版本:VMware® Workstation 17 Pro 17.0.0 build-20800274

vmware安装包:VMware-workstation-full-17.0.0-20800274.exe,可到官网下载

ubuntu版本:ubuntu-22.04.3-desktop-amd64.iso,可到官网下载

对应内核:

root@daniel-virtual-machine:/home/daniel/code_test/led_drv# uname -r
6.2.0-26-generic

编译安装内核步骤

  • 查询、下载、解压源码包

1、查询可用源码包

root@daniel-virtual-machine:~# apt-cache search linux-source

linux-source - Linux kernel source with Ubuntu patches
linux-source-5.15.0 - Linux kernel source for version 5.15.0 with Ubuntu patches
linux-source-5.19.0 - Linux kernel source for version 5.19.0 with Ubuntu patches
linux-source-6.2.0 - Linux kernel source for version 6.2.0 with Ubuntu patches

2、下载源码包到:/usr/src目录,也可以登录官网下载后上传到/usr/src目录。

root@daniel-virtual-machine:/usr/src# apt-get install linux-source-6.2.0

3、解压

root@daniel-virtual-machine:/usr/src# tar -xjvf linux-source-2.6.35.tar.bz2

root@daniel-virtual-machine:/usr/src# ll
total 412964
drwxr-xr-x  5 root root      4096  8月 28 17:23 ./
drwxr-xr-x 14 root root      4096  8月  8 06:52 ../
drwxr-xr-x  7 root root      4096  8月  8 06:54 linux-headers-6.2.0-26-generic/
drwxr-xr-x 26 root root      4096  8月  8 06:54 linux-hwe-6.2-headers-6.2.0-26/
drwxrwxr-x 30 root root      4096  8月 29 15:19 linux-source-6.2.0/
-rw-r--r--  1 root root 422850166  8月 28 17:23 linux-source-6.2.0.tar.bz2

编译内核

1、安装构建内核所需的依赖项。

sudo apt-get install build-essential libncurses-dev bison flex libssl-dev libelf-dev bc

2、配置内核,复制当前系统正在使用的内核配置文件到新的内核源代码目录下

root@daniel-virtual-machine:/usr/src/linux-source-6.2.0#cp /boot/config-$(uname -r) .config

如果想更改待编译内核的配置,可以执行如下命令:

root@daniel-virtual-machine:/usr/src/linux-source-6.2.0#make menuconfig

一般情况下,沿用当前正在运行的内核的配置即可。

3、编译内核

root@daniel-virtual-machine:/usr/src/linux-source-6.2.0#make -j$(nproc)

 4、安装内核

root@daniel-virtual-machine:/usr/src/linux-source-6.2.0# make modules_install

root@daniel-virtual-machine:/usr/src/linux-source-6.2.0# make install

5、更新引导加载程序(GRUB)配置:

root@daniel-virtual-machine:/usr/src/linux-source-6.2.0# update-grub

6、完成后,重新启动计算机,并在引导时选择新安装的内核。

请注意,编译和安装内核可能会对系统产生不可预见的影响,并且在这个过程中可能会遇到错误。

备注:如果只是想编译内核驱动模块,不更换内核版本,4-6步可以不做

编译内核驱动模块

1、在编译完成的内核目录,执行如下命令可以编译某个内核驱动模块

root@daniel-virtual-machine:/usr/src/linux-source-6.2.0# make -C /usr/src/linux-source-6.2.0/ M=/usr/src/linux-source-6.2.0/drivers/nvme/host/

 2、加载驱动KO

 Aug 29 15:23:26 daniel-virtual-machine kernel: [12993.382614] nvme_core: disagrees about version of symbol module_layout

加载失败的原因是:编译驱动的内核源码版本与当前正在运行的内核版本不一致,将make时的-C参数修改为正在运行的内核版本的目录。

root@daniel-virtual-machine:/usr/src/linux-source-6.2.0# make -C /usr/src/linux-headers-6.2.0-26-generic/ M=/usr/src/linux-source-6.2.0/drivers/nvme/host/

还是加载失败,看日志是有部分函数的符号找不到。

 原因是新版本的内核NVMe驱动增加了一个common目录,对应nvme-common.ko,先编译和加载这个KO,再加载nvme-core.ko即可。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值