编译并安装Kernel

  1. 编译内核。

    1
    2
    cd /usr/src/kernels/kernel-5.10.0-136.12.0
    make -j64
    

    若编译过程中存在如下提示信息,则需要确保服务器系统时间为最新时间。

    1
    make[2]: warning:  Clock skew detected.  Your build may be incomplete.
    

    执行tzselect命令,根据实际情况依次输入以下选项对应时区的数字,例如:Asia->Beijing->YES,执行完成后拷贝文件到“/etc/localtime”。

    1
    2
    tzselect
    cp -f /usr/share/zoneinfo/Asia/Beijing /etc/localtime
    

  2. 检查内核是否编译成功。

    可查看编译路径下是否生成vmlinux文件,有vmlinux文件生成,说明编译执行成功,再继续执行后续步骤;如未生成vmlinux文件,请检查编译是否报错并解决后重新执行1

    1
    ll vmlinux*
    

    回显如下三个文件时,表示编译成功。

    1
    2
    3
    -rwxr-xr-x 1 root root 363795992 Nov 17 20:00 vmlinux*
    -rw-r--r-- 1 root root 892957960 Nov 17 20:00 vmlinux.o
    -rw-r--r-- 1 root root    613485 Nov 17 20:00 vmlinux.symvers
    

  3. 安装内核模块。

    1
    make modules_install
    

  4. 安装内核。

    1
    make install
    
    • 在安装内核前,请确保系统中没有安装dkms,否则可能会导致安装内核时出现报错信息:“Error! Bad return status for module build on kernel: ...”,解决方法如下:
      1. 查看系统中是否已安装dkms。
        yum list installed | grep dkms

        若该指令执行后出现回显,则表明已安装dkms。

      2. 删除dkms。
        1
        yum remove -y dkms
        
      3. 重新安装内核。
        1
        make install
        
    • 在安装内核时,可能出现以下报错信息,此时需要重新执行make install以解决该问题。
      1
      2
      dracut-install: Failed to find module 'uds' /lib/modules/5.10.0/kernel/drivers/block/uds.ko
      dracut-install: Failed to find module 'kvdo' /lib/modules/5.10.0/kernel/drivers/block/kvdo.ko
      

  5. 更新启动项。

    1
    grub2-mkconfig -o /boot/efi/EFI/openEuler/grub.cfg
    
    • openEuler 22.03 LTS SP1操作系统和5.10.0-136.12.0版本内核,需设置内核启动项为:openEuler (5.10.0) 22.03 (LTS-SP1)。
    • openEuler 22.03 LTS SP3操作系统和5.10.0-182.0.0版本内核,需设置内核启动项为:openEuler (5.10.0) 22.03 (LTS-SP3)。

    设置启动内核,例如设置为:openEuler (5.10.0) 22.03 (LTS-SP1)。

    1
    grub2-set-default 'openEuler (5.10.0) 22.03 (LTS-SP1)'
    

    重启操作系统,新内核即可生效。

    1
    reboot
    

  6. 使用如下命令检查新内核版本,如果版本号仅显示5.10.0,则说明启动内核正确。

    1
    uname -r
    

    如果重启后未能进入新编译的内核,请在BIOS进入grub启动后选择新编译的内核进入系统,或者联系技术支持工程师协助解决。