openEuler 内核编译安装

  1. 下载内核源码

dnf install -y kernel-source

  1. 下载编译源码的依赖软件包

dnf install -y rpm-build openssl-devel bc rsync gcc gcc-c++ flex bison m4 elfutils-libelf-devel

  1. 如果需要向内核合入patch,请从官网下载对应的patch文件,执行以下命令将patch合入内核源码

patch -d /usr/src/ linux-4.19.90-2202.1.0.0136.oe1.x86_64 -p1 < patch_file

  1. 进入linux源码主目录

cd /usr/src/linux-4.19.90-2202.1.0.0136.oe1.x86_64/

  1. 修改内核的版本号,Makefile的前4个参数和版本号相关,可进行修改,修改的版本号需要比当前系统使用的内核版本号高,否则无法进行安装

vi Makefile

  1. 编译config文件

make openeuler_defconfig

(如果需要修改config文件,该文件在/usr/src/linux-4.19.90-2202.1.0.0136.oe1.x86_64/arch/x86/config 目录下)

  1. 编译内核

make binrpm-pkg -j{num}

-j参数表示指定多线程编译,最大线程数量为CPU核数。

  1. 编译完成后查看对应目录下生成的内核rpm包。

ll root/rpmbuild/RPMS/x86_64

  1. 安装内核

rpm -ivh /root/rpmbuild/RPMS/x86_64/kernel-4.19.91-1.x86_64.rpm

  1. 查看安装完成的内核

rpm -qa | grep kernel

  1. 重启机器,在进入内核选择页面时,选择编译安装的内核

  1. 查看当前系统的内核版本

uname -r

  1. 执行以下命令可以单独编译内核驱动

make ARCH=x86_64 CONFIG_IGC=m drivers/net/ethernet/intel/igc/igc.ko

2 个赞

我按照您的步骤已经重新编译了内核,重启系统查看内核确实修改好了,请问这个
13. 执行以下命令可以单独编译内核驱动
make ARCH=x86_64 CONFIG_IGC=m drivers/net/ethernet/intel/igc/igc.ko
还需要执行吗?目前我已经完成到
12. 查看当前系统的内核版本
uname -r

是不是我把rpm的包安装之后,不需要执行这条了?
make ARCH=x86_64 CONFIG_IGC=m drivers/net/ethernet/intel/igc/igc.ko
我是没有理解这句话的意思 :thinking:

最后那个 igc 是一个网卡驱动,在这个文章里只是一个示例去解释怎么单独编译一个内核驱动。不需要的可以不跑,也可以跑你需要的驱动。

其实我就是为了编译 igc 找到这篇文章的,不知道为什麽没有预编译好这个

请教一下,这样编译的内核重启后,再编译其他程序,如何配置build/ source相关目录等?