Developers
Resource
文档评分
获取效率
正确性
完整性
易理解
在线提单
论坛求助

编译内核

CentOS 7.6

  1. 创建目录并进入该目录。
    1
    2
    mkdir -p /home/kernel-bcache
    cd /home/kernel-bcache
    
  2. 获取内核源码。
    1. 查看系统内核版本。
      1
      uname -a
      

      查询到如下版本内核。

      1
      Linux ceph3 4.14.0-115.el7a.0.1.aarch64 #1 SMP Sun Nov 25 20:54:21 UTC 2018 aarch64 aarch64 aarch64 GNU/Linux
      
    2. 下载对应版本内核源码包至“/home/kernel-bcache”目录。

    3. 解压源码包。
      1
      2
      rpm2cpio kernel-alt-4.14.0-115.10.1.el7a.src.rpm | cpio -divm
      tar -xvf linux-4.14.0-115.10.1.el7a.tar.xz
      
  3. 安装依赖。
    1
    yum -y install rpm-build m4 gcc xmlto asciidoc openssl-devel hmaccalc python-devel newt-devel perl-ExtUtils-Embed elfutils-devel zlib-devel binutils-devel bison audit-libs-devel java-devel numactl-devel pciutils-devel ncurses-devel createrepo genisoimage net-tools git bc
    
  4. 获取内核配置文件。
    1
    2
    cd /home/kernel-bcache/linux-4.14.0-115.10.1.el7a
    cp ../kernel-alt-4.14.0-aarch64.config .config
    
  5. 配置Bcache模块。
    1
    make menuconfig
    
    1. 选择“Device Drivers ”。

    2. 按“Enter”键进入下一级菜单,选择“Multiple device driver support (RAID and LVM )”。

    3. 按“Enter”键进入下一级菜单,选中“Block device as cache”,键盘输入“M”选中该配置。

    4. 选择两次“Exit”返回至第一层。

  6. 修改内核PageSize大小为4KB。
    1. 选择“Kernel Features”。

    2. 按“Enter”键进入下一级菜单,选择“Page size(64KB)”。

    3. 按“Enter”键进入选择,按“Space”键选择4KB。

    4. 选择两次“Exit”保存并退出。

  7. 修改配置文件。
    1. 打开文件。
      1
      vi .config
      
    2. 按“i”进入编辑模式,在文件第一行添加“#aarm64”。

    3. 按“Esc”键退出编辑模式。
    4. 确认Bcache模块已打开。

    5. 确认PageSize为4K。

    6. 输入:wq!并按“Enter”键保存退出文件。
  8. 覆盖默认配置文件。
    1
    cp .config ../kernel-alt-4.14.0-aarch64.config
    
  9. 输入“y”确认。
  10. 获取Bcache补丁并替换源码。
    1. 下载Bcache补丁文件。

    2. 拷贝补丁包至“/home”目录并解压。
      1
      2
      3
      cd /home
      mkdir -p /home/bcache_patch
      tar -zxvf bcache_patch.tar.gz -C /home/bcache_patch
      
    3. 替换Bcache源码文件。
      1
      cp /home/bcache_patch/* /home/kernel-bcache/linux-4.14.0-115.10.1.el7a/drivers/md/bcache
      
  11. 生成RPM包,执行如下指令将在“/root/rpmbuild/RPMS/aarch64/”路径下生成RPM包。
    1
    2
    make binrpm-pkg -j48
    make rpm-pkg -j
    

openEuler 20.03

  1. 创建目录并进入该目录。
    1
    2
    mkdir -p /home/kernel-bcache
    cd /home/kernel-bcache
    
  2. 获取内核源码。
    1. 查看系统内核版本。
      1
      uname -a
      

      查询到如下版本内核。

      1
      Linux localhost.localdomain 4.19.90-2109.1.0.0108.oe1.aarch64 #1 SMP Mon Sep 6 03:51:48 UTC 2021 aarch64 aarch64 aarch64 GNU/Linux
      
    2. 下载对应版本内核源码包至“/home/kernel-bcache”目录。

    3. 解压源码包。
      1
      2
      rpm2cpio kernel-4.19.90-2109.1.0.0108.oe1.src.rpm | cpio -divm
      tar -zxvf kernel.tar.gz
      
  3. 配置镜像源。
    1. 将OS对应的everything镜像源文件上传到服务器。

      通过SFTP工具将“openEuler-***-everything-aarch64-dvd.iso”上传到服务器上“/root”目录下。

    2. 创建一个本地文件夹用于挂载本地镜像。
      1
      mkdir -p /iso
      

      此处以在根目录下创建iso文件夹为例。

    3. 将iso文件挂载到本地文件夹。
      1
      mount /root/openEuler-***-everything-aarch64-dvd.iso /iso
      
    4. 创建并配置镜像Yum源。
      1. 创建repo文件。
        1
        vi /etc/yum.repos.d/openEuler.repo
        
      2. 按“i”键进入编辑模式,在文件中加入以下内容,配置挂载镜像Yum源。
        1
        2
        3
        4
        5
        6
        [Base]
        name=Base
        baseurl=file:///iso
        enabled=1
        gpgcheck=0
        priority=1
        
      3. 添加以下内容,配置openEuler网络源。
         1
         2
         3
         4
         5
         6
         7
         8
         9
        10
        11
        12
        13
        14
        15
        16
        17
        18
        19
        20
        21
        22
        23
        24
        25
        26
        27
        28
        29
        30
        31
        32
        [openEuler-source]
        name=openEuler-source
        baseurl=http://repo.openeuler.org/openEuler-20.03-LTS/source/
        enabled=1
        gpgcheck=1
        gpgkey=http://repo.openeuler.org/openEuler-20.03-LTS/source/RPM-GPG-KEY-openEuler
        
        [openEuler-os]
        name=openEuler-os
        baseurl=http://repo.openeuler.org/openEuler-20.03-LTS/OS/aarch64/
        enabled=0
        gpgcheck=1
        gpgkey=http://repo.openeuler.org/openEuler-20.03-LTS/OS/aarch64/RPM-GPG-KEY-openEuler
        
        [openEuler-everything]
        name=openEuler-everything
        baseurl=http://repo.openeuler.org/openEuler-20.03-LTS/everything/aarch64/
        enabled=0
        gpgcheck=1
        gpgkey=http://repo.openeuler.org/openEuler-20.03-LTS/everything/aarch64/RPM-GPG-KEY-openEuler
        
        [openEuler-EPOL]
        name=openEuler-epol
        baseurl=http://repo.openeuler.org/openEuler-20.03-LTS/EPOL/aarch64/
        enabled=1
        gpgcheck=0
        
        [openEuler-update]
        name=openEuler-update
        baseurl=http://repo.openeuler.org/openEuler-20.03-LTS/update/aarch64/
        enabled=1
        gpgcheck=0
        
      4. 按“Esc”键退出编辑模式,输入:wq!并按“Enter”键保存退出文件。
  4. 安装依赖。
    1
    dnf -y install ncurses-devel bison m4 flex rpm-build rpmdevtools asciidoc audit-libs-devel binutils-devel elfutils-devel elfutils-libelf-devel gtk2-devel java-1.8.0-openjdk-devel xz-devel libbabeltrace-devel libunwind-devel newt-devel numactl-devel openssl-devel pciutils-devel perl-generators python3-devel python3-docutils xmlto zlib-devel mkeuleros createrepo genisoimage
    
  5. 获取内核配置文件。
    1
    2
    cd /home/kernel-bcache/kernel
    cp arch/arm64/configs/openeuler_defconfig .config
    
  6. 配置Bcache模块。
    1
    make menuconfig
    
    1. 选择“Device Drivers ”。

    2. 按“Enter”键进入下一级菜单,选择“Multiple device driver support (RAID and LVM )”。

    3. 按“Enter”键进入下一级菜单,选中“Block device as cache”,键盘输入“M”选中该配置。

    4. 选择两次“Exit”返回至第一层。

  7. 修改内核PageSize大小为4KB。
    1. 选择“Kernel Features”。

    2. 按“Enter”键进入下一级菜单,选择“Page size(64KB)”。

    3. 按“Enter”键进入选择,按“Space”键选择4KB。

    4. 选择两次“Exit”保存并退出。

  8. 确认配置文件。
    1. 打开文件。
      1
      vi .config
      
    2. 确认Bcache模块打开。

    3. 确认PageSize为4K。

    4. 输入:q!并按“Enter”键退出文件。
  9. 覆盖默认配置文件。
    1
    cp .config arch/arm64/configs/openeuler_defconfig
    
  10. 输入“y”确认。
  11. 生成RPM包,执行如下指令将在“/root/rpmbuild/RPMS/aarch64/”路径下生成RPM包。
    1
    2
    make binrpm-pkg -j48
    make rpm-pkg -j